Поинтегрируем: WebSocket’ы в платформе 1С. Часть 3

12.11.25

Интеграция - WEB-интеграция

Продолжение статья по WebSocket’ам. Поговорим про соединения и нежданные изменения в платформе.
 
Ранее я уже рассказал про WebSocket’ы в статьях: 

Поинтегрируем: WebSocket’ы в платформе 1С. Часть 1 – содержит WebSocket-сервер и WebSocket-клиенты с примером взаимодействия.

Поинтегрируем: WebSocket’ы в платформе 1С. Часть 2 – содержит пример реализации чата на WebSocket.

11 Октября 2025 выступил с докладом WebSocket'ы — это не больно где дал базовые теоретические и практические знания, в том числе кратко рассказал про соединения в самом конце доклада.

Потом была статья WebSocket-Клиенты как хранилище значений – содержит пример реализации хранилища данных на WebSocket.

Управление WebSocket-Соединениями – обработка по управлению WebSocket-соединениями.

 

Встает вопрос: что еще рассказывать?

На самом деле в докладе у меня кратко было рассказано про соединения, но всё было на словах и без картинок.

Во время доклада я обозначил проблему и дал небольшую обработку. Но по большому счёту осталась недосказанность и «недопоказанность».

Я не уложился бы в 30 минут, показывая всё.

Поэтому я решил создать эту, скорее всего, финальную статью, где продемонстрирую нюансы работы WebSocket-соединений.

 

Что нам понадобится?

1 WebSocket-сервер – как и в предыдущих частях на nodejs

2 Конфигурация – Содержит в себе все, что нам понадобится, в том числе и обработку «WebSocket-Соединения»

 

Все это берем из репозитория: WebSocketIn1C

 

 
 Запускаем WebSocket-сервер:

Забираем WebSocket-сервер index.js и закидываем в любую папку

Запускаем VSC

 

Запускаем терминал:

 

Устанавливаем библиотеку по работе с WebSocket:

npm install ws

 

И запускаем сервер:

node index.js

 

 

Если вы развернули WebSocket-сервер на том же компьютере, где стоит платформа, тогда адрес WebSocket-сервера будет: ws://localhost:3001

Если же вы развернете в другом месте, придётся в конфигурации менять адреса ws://localhost:3001 на свои.

 

Разворачиваем конфигурацию

Дальше работать будем с конфигурацией которую проще всего развернуть из dt для платформы 8.3.27.1719

Или с конфигурацией которую проще всего развернуть из dt для платформы 8.3.27.1786

 

Важно: WebSocket-клиент в расширении работает на платформе 8.3.27.1719, в версии 8.3.27.1786 запретили WebSocket-клиенты в расширении.

 
Пруф:

 

 

Поэтому пришлось создать версию под 8.3.27.1786 без расширения.

 
В основную конфигурацию добавил WebSocket-клиент с именем «WS_КлиентРасширение» и удалил расширение:

 
 Добавил код в модуль:
Процедура ПередПодключением(Клиент)	
	ЗаписьЖурналаРегистрации("WebSocket.ПередПодключением",
		УровеньЖурналаРегистрации.Информация,
		Метаданные.WebSocketКлиенты.WS_КлиентРасширение);	
КонецПроцедуры

Процедура ПриОткрытииСоединения(Соединение)	
	ЗаписьЖурналаРегистрации("WebSocket.ПриОткрытииСоединения",
		УровеньЖурналаРегистрации.Информация,
		Метаданные.WebSocketКлиенты.WS_КлиентРасширение);
КонецПроцедуры

Процедура ПриПолученииСообщения(Соединение, Сообщение)	
	ЗаписьЖурналаРегистрации("WebSocket.ПриПолученииСообщения",
		УровеньЖурналаРегистрации.Информация,
		Метаданные.WebSocketКлиенты.WS_КлиентРасширение,,Сообщение);
КонецПроцедуры

Процедура ПриОшибке(Соединение, КодОшибки, Описание)	
	ЗаписьЖурналаРегистрации("WebSocket.ПриОшибке",
		УровеньЖурналаРегистрации.Ошибка,
		Метаданные.WebSocketКлиенты.WS_КлиентРасширение,КодОшибки,Описание);			
КонецПроцедуры

Процедура ПриЗакрытииСоединения(Соединение, КодЗакрытия)
	ЗаписьЖурналаРегистрации("WebSocket.ПриЗакрытииСоединения",
		УровеньЖурналаРегистрации.Предупреждение,
		Метаданные.WebSocketКлиенты.WS_КлиентРасширение,КодЗакрытия);	
КонецПроцедуры

 

 

 

В конфигурации у нас уже подготовлены WebSocket-клиенты.

1 «КлиентКонфигураторПредопределенный» с свойствами Предопределенный и Подключать автоматически.

 

Данный клиент сразу же подключится к WebSocket-серверу, который вы запустили ранее:

 

 

Но можно проверить через обработку «WebSocket-Соединения»:

 

 

Если соединение запущено увидим вот такую строчку:

 

 

2 «WS_КлиентРасширение» для платформы 8.3.27.1719 в расширении и в самой конфигурации для 8.3.27.1786.

 

 

Запустим соединение через обработку «Авторизация websocket»:

 

 

Нажимаем «Авторизоваться»:

 

 

Видим, что появился ключ:

 

 

Если сделали правильно, то в обработке обработку «WebSocket-Соединения» увидим:

 

 

 

Теперь откроем обработку «Динамический websocket»:

 

 

Авторизуемся без галочки клиент:

 

 

Видим ключ:

 

 

Авторизуемся с галочкой клиент:

 

 

Видим ключ:

 

 

Если сделали правильно, то в обработке «WebSocket-Соединения» увидим:

 

 

Обратите внимание, у нас запущено четыре соединения.

Три на сервере и одно на клиенте.

 

Эксперимент 1. Открываем еще один 1С клиент и смотрим, какие соединения нам доступны.

Нам доступны серверные соединения, но недоступен клиентский:

 

 

Утверждение 1. Соединение созданное на клиенте доступно только в текущем сеансе клиента запустившего соединение.

Утверждение 2. При закрытии сеанса клиента, в котором были запущены клиентские соединения. Все запущенные клиентские соединения этого сеанса будут завершены.

 

Попробуем отправить сообщение в одно из серверных соединений:

 

 

Сообщение на WebSocket-сервере:

 

 

Запись в журнале регистрации:

 

 

Утверждение 3. Соединения, созданные на сервере, доступны всем клиентам.

 

Эксперимент 2. Вносим не динамическое изменение и проверяем соединения.

В конфигурации есть справочник Товары.

Добавим в него реквизит «Обновление»:

 

 

Обновляемся:

 

 

Принимаем изменения:

 

 

Заходим в нашу любимую обработку и смотрим соединения:

 

 

Утверждение 4. При обновлении конфигурации соединения, запущенные на сервере, не закрываются.

 

Эксперименты закончены. Я наглядно подтвердил то, о чем рассказал в конце доклада.

 

Кстати, а почему для просмотра сеансов я использую свою обработку?

У вас наверняка возник вопрос: Где можно увидеть соединения без обработки «WebSocket-Соединения»?

Ответ: Нигде. Фирма 1С, как обычно, при добавлении нового функционала не дала нам инструментов по работе с ним.

 
Пруфы:

Я смотрел в сеансах:

 

Я смотрел в активных пользователях:

 

Я смотрел в предметах отладки:

В итоге я смог найти сеансы только сторонним ПО.

К примеру, через Wireshark.

 

Вот такая подстава от фирмы 1С…

Теперь вы понимаете, почему появилась обработка «WebSocket-Соединения»

 

На этом статью заканчиваю, если понравилось, то не стесняйтесь нажимать «+».

 

Все материалы выложены в GitHub:

WebSocketIn1C на GitHub

 

Вступайте в нашу телеграмм-группу Инфостарт

платформа Интеграция Архитектура GitHub WebSocket WebSockets сервер сервис 8.3.27 клиент ws wss ключ обмен JS 8.3.27.1719 8.3.27.1786 расширение

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    21973    32    24    

25

SALE! 15%

WEB-интеграция Программист Бизнес-аналитик 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17280 14688 руб.

20.12.2024    4178    20    3    

21

WEB-интеграция Программист Руководитель проекта 1С v8.3 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки. Основные преимущества: 1. Документация API создаётся автоматически. Удобна для программной обработки. 2. Изменить API столь же просто как настроить отчёт. Можно опубликовать существующий вариант отчёта. 3. Отчёты в API поддерживают параметры (Период, ДатаНачала и др.) 4. При создании простых методов не требуется изменять конфигурацию. 5. Поддерживается работа с планами обмена.<br/> 6. Возможно настроить отправку из 1С данных корреспондирующей системе, для случаев когда 1С сама "знает" какие данные нужно отправить. 7. После записи в 1С Ле Мурр может возвращать соответствие полученных идентификаторов созданным в 1С объектам данных.

36000 руб.

27.09.2024    9423    7    5    

10

Оптовая торговля WEB-интеграция Бюджетный учет Обмен с ГосИС Бухгалтер Пользователь 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Государственные, бюджетные структуры Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обмен данными с "Порталом поставщиков" zakupki.mos.ru Москвы и Московской области с целью создания оферт для закупок государственными учреждениями. Модуль устраняет рутину, минимизирует ошибки и помогает выигрывать больше закупок. Работает строго по требованиям 44-ФЗ.

14400 руб.

13.12.2016    41514    54    39    

37
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. fatman78 21 12.11.25 10:17 Сейчас в теме
Фирма 1С, как обычно, при добавлении нового функционала не дала нам инструментов по работе с ним.


Ни разу такого не было, и вот опять... :)
2. dsdred 4092 12.11.25 10:22 Сейчас в теме
(1)
Ни разу такого не было, и вот опять... :)


Сказано как отрезано ;)

П.С. Думаю создать "стену печали", в которой размещать, что добавлено в платформу и когда появился инструмент по работе с этим от фирмы 1С.
И если фирма 1С не добавила то писать количество дней ожидания инструмента ))
Там же можно добавить ссылки на инструменты от сообщества.
3. aximo 2517 12.11.25 12:15 Сейчас в теме
ну, Дмитрий, прям с сокетами - ты "залип")
4. dsdred 4092 12.11.25 12:18 Сейчас в теме
(3) что есть, то есть. ))
Я же каждый год за 1-2 темы залипаю, чтобы их вдоль и поперек погонять.

П.С. Но эта последняя темя. Больше говорить про них нечего.
Для отправки сообщения требуется регистрация/авторизация