Поинтегрируем: 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-сервер 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.ПередПодключением",
УровеньЖурналаРегистрации.Информация,
Метаданные.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:
Вступайте в нашу телеграмм-группу Инфостарт