Платформа 1С 8.3.27 принесла то, чего разработчики ждали годами: встроенный WebSocket-клиент. Больше не нужны внешние компоненты, Node.js-прокси и другие костыли для интеграций в реальном времени. Разбираемся, что это даёт на практике и в каких задачах WebSocket меняет правила игры.
Что не так с HTTP-опросом
До версии 8.3.27 единственный способ получить данные из внешней системы в реальном времени — периодический HTTP-запрос. Регламентное задание каждые 5 секунд дёргает API: «Есть новые данные? Нет? Ладно, спрошу через 5 секунд». Это работает, но с тремя проблемами.
Первая — задержка. Если событие произошло через секунду после последнего опроса, 1С узнает о нём только через 4 секунды. Для уведомлений — терпимо. Для входящего звонка, где менеджеру нужно увидеть карточку клиента до того, как возьмёт трубку, — критично.
Вторая — нагрузка. 90% запросов возвращают «нет данных». Сервер 1С тратит ресурсы на бесполезные HTTP-сессии, внешний сервис отдаёт пустые ответы. При 20 интеграциях и 5-секундном интервале — 240 запросов в минуту вхолостую.
Третья — сложность масштабирования. Хочешь сократить задержку до 1 секунды — нагрузка растёт в 5 раз. Хочешь добавить ещё одну интеграцию — ещё одно регламентное задание, ещё один поток запросов.
WebSocket: постоянное соединение вместо опроса
WebSocket — протокол двусторонней связи поверх TCP. Соединение устанавливается один раз и остаётся открытым. Сервер может отправить данные клиенту в любой момент — без запроса. Клиент получает их мгновенно.
В 1С 8.3.27 появился объект КлиентWebSocket. Создаёшь экземпляр, указываешь URL, назначаешь обработчики событий — и слушаешь. Когда приходит сообщение, срабатывает обработчик. Никаких циклов опроса, никаких регламентных заданий.
Ключевые возможности нового объекта:
- Подключение к серверам по протоколам
ws://иwss://(с TLS) - Текстовые и бинарные сообщения
- Обработчики событий:
ПриОткрытии,ПриЗакрытии,ПриОшибке,ПриПолученииСообщения - Работа в фоновом задании (не блокирует UI)
- Автоматический ping/pong для поддержания соединения
Важное ограничение: это именно клиент. 1С не может быть WebSocket-сервером — только подключаться к внешним серверам. Для большинства интеграционных сценариев этого достаточно: внешняя система — сервер, 1С — подписчик.
Сценарии: где WebSocket меняет правила
Не каждая интеграция требует реального времени. Синхронизация справочников раз в час — HTTP-запрос по расписанию. Выгрузка отчёта раз в сутки — тем более. WebSocket нужен там, где задержка в секунды имеет значение.
IP-телефония
Классика. Входящий звонок — АТС (Asterisk, FreePBX, облачные АТС) отправляет событие по WebSocket. 1С получает номер, за 100 миллисекунд находит контрагента, открывает менеджеру карточку с историей заказов и задолженностью. Пока телефон звонит — менеджер уже знает, кто звонит и зачем.
Раньше для этого нужна была внешняя компонента (SoftPhone) или промежуточный сервер. Теперь — нативный WebSocket-клиент в 1С, подключённый к AMI (Asterisk Manager Interface) через WebSocket-прокси.
IoT-датчики на складе
Температурные датчики в холодильных камерах, весы на приёмке, сканеры штрих-кодов с Wi-Fi. Все они могут отправлять данные через MQTT-брокер, к которому 1С подключается по WebSocket. Температура вышла за пределы — мгновенный алерт в 1С. Товар взвешен — вес автоматически подставляется в документ приёмки.
Мессенджеры и чат-боты
Telegram Bot API поддерживает long polling, но не WebSocket напрямую. Зато многие платформы чат-ботов (Botpress, Rasa, кастомные решения) умеют отдавать события по WebSocket. Клиент написал в чат — 1С мгновенно получает сообщение, формирует ответ из данных учётной системы (остаток товара, статус заказа, сумма долга) и отправляет обратно. Без задержки на polling.
Биржевые курсы и котировки
Для компаний, работающих с валютными контрактами: подписка на поток котировок через WebSocket-API биржи. Курс изменился — 1С пересчитывает стоимость открытых контрактов в реальном времени. Менеджер видит актуальную маржу, а не вчерашнюю.
Мониторинг и алерты
Prometheus, Grafana, Zabbix — все умеют отправлять алерты. Через WebSocket можно подписаться на поток событий мониторинга и реагировать внутри 1С: создать задачу, отправить уведомление ответственному, приостановить выполнение регламентных операций при перегрузке сервера.
Архитектурные решения
WebSocket-клиент в 1С работает в контексте фонового задания. Это логично: постоянное соединение не должно блокировать пользовательский сеанс. Схема такая:
- Запускается фоновое задание с WebSocket-клиентом
- Клиент подключается к внешнему серверу
- При получении сообщения — обработчик парсит данные и записывает в регистр сведений (очередь событий)
- Клиентские сеансы периодически проверяют очередь (или используют Систему Взаимодействия для push-уведомлений)
Важный нюанс: обработчик ПриПолученииСообщения не должен выполнять тяжёлую логику. Принял сообщение — записал в очередь — отпустил. Обработка — в отдельном потоке. Иначе при высокой частоте сообщений буфер WebSocket переполнится и соединение оборвётся.
Переподключение при обрыве — на вашей совести. Платформа не делает это автоматически. В обработчике ПриЗакрытии нужно запустить повторное подключение с экспоненциальной задержкой: 1 секунда, 2, 4, 8... до максимума в 60 секунд. Без этого единичный сетевой сбой положит всю интеграцию.
Ограничения и подводные камни
WebSocket в 1С — не серебряная пуля. Несколько моментов, которые стоит учитывать:
- Только клиент. 1С не может быть сервером. Если внешняя система умеет только подключаться (а не принимать подключения) — WebSocket не поможет, нужен HTTP-сервис
- Фоновое задание. Если фоновые задания отключены или их пул исчерпан — WebSocket не запустится
- Нет автореконнекта. Восстановление соединения — ваша задача
- Версия платформы. Только 8.3.27 и выше. Если заказчик на 8.3.24 — вариант с WebSocket отпадает
- Лицензии. Фоновое задание с WebSocket занимает клиентскую лицензию. При 10 интеграциях — 10 лицензий
Когда переходить
Если ваша интеграция работает на HTTP-опросе и задержка в 5-30 секунд устраивает бизнес — не трогайте. Работающее решение лучше модного. Но если вы начинаете новый проект интеграции и платформа позволяет — WebSocket стоит рассмотреть как основной транспорт для событийных сценариев.
Особенно актуально для:
- Интеграций с телефонией (где каждая секунда задержки — потерянное впечатление клиента)
- Складских операций с IoT-устройствами (где данные должны попасть в документ мгновенно)
- Систем оповещения и мониторинга (где алерт через 30 секунд — это уже поздно)
Платформа 1С 8.3.27 сделала шаг, который давно напрашивался. WebSocket — не революция, но важный инструмент в арсенале разработчика. Для правильных задач он сокращает задержку на порядок и упрощает архитектуру интеграции.


