Свой сервер для обсуждений и звонков в 1С: от установки до диагностики

· 9 мин

Содержание

Сервер взаимодействия 1С — это отдельное серверное приложение на Java, которое обслуживает систему взаимодействия платформы 1С:Предприятие 8.3: чаты-обсуждения, уведомления, аудио- и видеозвонки, обмен сообщениями с мессенджерами. Без своего сервера базы подключаются к облачному сервису фирмы 1С — «1С:Диалог». Собственный сервер ставят, когда переписка не должна уходить за периметр компании или облако недоступно из сети.

Типичная жалоба администратора: обсуждения то работают, то пишут, что нет связи с сервером, а в браузере по адресу сервера висит HTTP 503. Чаще всего виновата не платформа, а одно из звеньев цепочки: служба, сеть, прокси или база PostgreSQL самого сервера.

Как работает сервер взаимодействия и чем он отличается от облака

Система взаимодействия встроена в платформу начиная с версии 8.3.10. Платформа умеет показывать обсуждения, а хранит и раздаёт сообщения именно сервер взаимодействия.

Схема обмена такая:

  • 💻 Клиент 1С (тонкий, веб, мобильный) держит постоянное соединение WebSocket с сервером взаимодействия.
  • 🖥️ Сервер 1С:Предприятия тоже обращается к нему — когда код конфигурации создаёт обсуждение или отправляет сообщение.
  • 🗄️ Сервер взаимодействия хранит переписку и вложения в своей базе PostgreSQL, рассылает новые сообщения всем подключённым клиентам.
  • 🔎 Вспомогательные компоненты — кластерный кеш Hazelcast и Elasticsearch для поиска по сообщениям.

Информационная база 1С регистрируется на сервере один раз. После регистрации пользователи базы становятся пользователями системы взаимодействия, и им не нужны отдельные логины.

КритерийОблако «1С:Диалог»Собственный сервер
Где хранится перепискаНа серверах фирмы 1СУ вас, в вашем PostgreSQL
УстановкаНе нужнаJava, PostgreSQL, сервер, сопровождение
Доступ из закрытой сетиНужен выход в интернетРаботает внутри периметра
Кто обновляетФирма 1СВаш администратор
Когда выбиратьМалый офис, нет требований к хранениюТребования ИБ, изолированная сеть, много пользователей

Если цель — просто включить обсуждения в типовой конфигурации, начните с облака. Свой сервер оправдан, когда есть требование хранить данные у себя или нет стабильного выхода в интернет.

Что подготовить перед установкой сервера взаимодействия

Сервер взаимодействия работает на Windows и Linux. Для пилота хватит одной машины, для боевой эксплуатации его лучше вынести отдельно от сервера 1С:Предприятия: Java-процесс и PostgreSQL заметно потребляют память.

Что нужно заранее:

  1. Дистрибутив сервера взаимодействия с портала обновлений фирмы 1С. Версию берите ту, что совместима с вашей платформой: требования указаны в описании релиза.
  2. Установщик 1ce-installer — через него ставятся сервер и утилита ring, которой он настраивается.
  3. 64-разрядная Java той версии, которую требует релиз сервера. Для свежих релизов подходит Liberica JDK или другая сборка OpenJDK нужной версии.
  4. PostgreSQL и пустая база под данные сервера, например cs_db, плюс пользователь с правами владельца этой базы.
  5. DNS-имя сервера, например cs.company.local. С ним проще перейти на TLS и не перенастраивать базы при смене IP.
  6. Открытые порты между клиентами и сервером: порт WebSocket (в примерах документации — 9094) и, только для администратора, порт HTTP-администрирования (в примерах — 8087).

Не ставьте сервер взаимодействия на ту же машину, где крутится нагруженный кластер 1С, без запаса по памяти. Нехватка RAM у Java-процесса выглядит как «случайные» обрывы связи у всех пользователей сразу.

Установка собственного сервера взаимодействия по шагам

Порядок одинаковый для Windows и Linux, различаются только пути и способ запуска службы.

Шаг 1. Установите компоненты

Запустите 1ce-installer из дистрибутива и установите сервер взаимодействия. Вместе с ним ставятся Hazelcast, Elasticsearch и утилита ring. Проверьте, что ring доступна из командной строки: команда ring help должна вывести список модулей.

Шаг 2. Создайте экземпляр и службу

Экземпляр — это каталог с настройками, журналами и данными конкретного сервера. Создаётся он командой модуля cs, после чего для экземпляра регистрируется служба операционной системы:

ring cs instance create --dir /var/cs/cs_instance --owner cs_user
ring cs --instance cs_instance service create --java-home /opt/java/jdk --stopped

На Windows вместо путей Linux укажите каталог вида C:\cs\cs_instance. Точный набор параметров для вашего релиза смотрите в справке ring cs --help — он менялся от версии к версии. Аналогично создаются экземпляры Hazelcast и Elasticsearch.

Шаг 3. Пропишите подключение к PostgreSQL и сетевые адреса

Экземпляру нужно сообщить, где лежит база и на каком адресе слушать клиентов:

ring cs --instance cs_instance jdbc pool set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
ring cs --instance cs_instance jdbc pool set-params --username cs_dbuser --password 'СложныйПароль'
ring cs --instance cs_instance websocket set-params --hostname 0.0.0.0 --port 9094

Шаг 4. Запустите службу и инициализируйте хранилище

Запустите службу средствами ОС (systemctl start на Linux или оснастка «Службы» на Windows). Java-процесс стартует не мгновенно: первые десятки секунд сервер может отвечать ошибкой.

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

Шаг 5. Проверьте, что сервер жив

С самой машины выполните:

curl http://localhost:8087/rs/health

Ответ без ошибки значит, что сервер поднялся и видит свою базу. Затем с рабочего места пользователя проверьте доступность порта WebSocket: на Windows — Test-NetConnection cs.company.local -Port 9094 в PowerShell.

Подключение информационной базы к своему серверу

Регистрация выполняется из самой базы 1С, под пользователем с полными правами.

  1. В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) откройте раздел Администрирование и найдите в настройках программы группу «Обсуждения». Быстрее всего — поиском по слову «Обсуждения» в настройках.
  2. Нажмите подключение и выберите вариант с собственным сервером.
  3. Укажите адрес сервера: ws://cs.company.local:9094 или wss://cs.company.local при работе через TLS.
  4. Введите e-mail администратора: на него придёт код подтверждения регистрации. Вставьте код в форму.
  5. Перезапустите клиент и откройте обсуждения — список должен загрузиться без предупреждений.

В конфигурациях без БСП то же самое делается через платформенную стандартную функцию «Управление системой взаимодействия» (Все функции → Стандартные).

Одна информационная база — одна регистрация. Если базу скопировали для тестов, копия унаследует регистрацию, и сообщения из теста попадут в рабочие обсуждения. После копирования отмените регистрацию в копии, прежде чем пускать туда людей.

Защита сервера взаимодействия: TLS, порты и доступ

Сервер хранит деловую переписку и вложения, поэтому закрывать его нужно не хуже, чем сервер 1С.

  • 🔒 Шифрование. Переведите клиентов на wss://. Проще всего поставить перед сервером nginx с TLS-сертификатом и проксировать WebSocket на порт 9094. Сертификат должен быть доверенным для всех клиентов: самоподписанный вызывает отказ соединения без внятного сообщения.
  • 🚪 Порт администрирования. HTTP-порт 8087 слушайте только на 127.0.0.1 или откройте его в межсетевом экране лишь для машины администратора.
  • 🔑 Пароли. Смените учётные данные администратора, заданные по умолчанию в инструкции по установке. Пароль пользователя PostgreSQL храните только в настройках экземпляра.
  • 🧱 Сегментация. Если внешние пользователи не нужны, не публикуйте порт WebSocket в интернет — оставьте доступ из локальной сети или через VPN.
  • 💾 Резервные копии. Переписка живёт в базе PostgreSQL сервера, а не в базе 1С. Включите её в регламент копирования отдельно.

Минимальный блок nginx для WebSocket выглядит так:

location / {
    proxy_pass http://127.0.0.1:9094;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_read_timeout 3600s;
}

Без заголовков Upgrade и Connection прокси не пропустит рукопожатие WebSocket, а короткий proxy_read_timeout рвёт простаивающие соединения каждую минуту.

Ошибки сервера взаимодействия: HTTP 503 и обрывы связи

Почти все сбои сводятся к трём вещам: служба не работает , до неё не доходит сеть или сервер не видит свою базу. Начинайте проверку с сервера, а не с клиента.

Диагностика: выберите симптом

Перезапуск службы сервера взаимодействия обрывает соединения всех пользователей: обсуждения и звонки пропадут на время рестарта. Учётную работу в 1С это не останавливает, но делайте перезапуск вне пиковых часов и предупредите людей.

Перед перезапуском полезно собрать факты: время сбоя, текст из журнала экземпляра, вывод ss -tlnp | grep 9094 на Linux или netstat -ano | findstr 9094 на Windows. С этими данными причина находится быстрее, чем перебором.

Производительность и масштабирование сервера

Один экземпляр спокойно обслуживает небольшую компанию. Узкие места появляются с ростом числа одновременных подключений и объёма вложений.

Куда смотреть в первую очередь:

Узкое местоПризнакЧто сделать
Память JavaПадения с OutOfMemoryError, долгие паузыУвеличить кучу в параметрах экземпляра, оставить запас RAM системе
PostgreSQLМедленная загрузка истории обсужденийВынести базу на SSD, настроить PostgreSQL под объём памяти, следить за ростом таблиц
ВложенияБыстрый рост базыОграничить размер файлов в обсуждениях, регулярно чистить старые
ПоискДолгий поиск по сообщениямВыделить Elasticsearch память и диск отдельно
СетьЗадержки в звонкахПроверить пропускную способность и маршрут медиатрафика

Когда одного узла мало, сервер разворачивают кластером: несколько экземпляров сервера взаимодействия работают с общей базой PostgreSQL и связаны через Hazelcast. Перед ними ставят балансировщик с поддержкой WebSocket и «липкими» сессиями.

Видеозвонки нагружают сеть и процессор сильнее чата. Если звонки массово не нужны, отключите их в настройках обсуждений базы — это снизит нагрузку на сервер и канал.

Интеграция с мессенджерами и программный доступ из 1С

Сервер взаимодействия умеет связывать обсуждения 1С с внешними каналами. Через механизм интеграций сообщения из Telegram или ВКонтакте попадают в обсуждения базы, а ответ сотрудника уходит клиенту обратно. Так строят приём обращений: менеджер отвечает из 1С, не открывая мессенджер. Набор доступных внешних систем зависит от релиза сервера и платформы.

Для разработчика сервер доступен через объект глобального контекста СистемаВзаимодействия. Пример: при закрытии месяца создать обсуждение и отправить в него сообщение.

Если Не СистемаВзаимодействия.ИнформационнаяБазаЗарегистрирована() Тогда
    Возврат;
КонецЕсли;

Обсуждение = СистемаВзаимодействия.СоздатьОбсуждение();
Обсуждение.Заголовок = "Закрытие месяца";
Обсуждение.Участники.Добавить(СистемаВзаимодействия.ТекущийПользователь());
Обсуждение.Записать();

Сообщение = СистемаВзаимодействия.СоздатьСообщение(Обсуждение.Идентификатор);
Сообщение.Текст = Новый ФорматированнаяСтрока("Регламентные операции выполнены");
Сообщение.Записать();

Проверка регистрации в начале обязательна: в незарегистрированной базе обращение к обсуждениям вызовет исключение, и регламентное задание упадёт.

Типовые сценарии интеграции:

  • 📣 уведомление ответственного о новом документе или ошибке обмена;
  • 🧾 обсуждение, привязанное к конкретному документу — контекстное обсуждение прямо в его форме;
  • 🤖 бот, который отвечает в чате результатом запроса к базе;
  • 📱 сообщения сотрудникам в мобильном клиенте 1С.

Частые вопросы о сервере взаимодействия

Сервер взаимодействия платный?
Сам сервер — продукт фирмы 1С, дистрибутив выкладывается на портале обновлений. Условия получения уточняйте у партнёра 1С: отдельная плата за каждого пользователя чата не берётся, но расходы на сервер, PostgreSQL и сопровождение остаются.
Можно ли перейти с облака 1С:Диалог на свой сервер с сохранением переписки?
Перенос истории между облаком и собственным сервером штатно не предусмотрен. Обычно базу перерегистрируют на своём сервере и начинают переписку заново, а важное из старых обсуждений выгружают заранее.
Нужна ли отдельная лицензия 1С для пользователей обсуждений?
Нет. Пользователь работает в обсуждениях в рамках своего сеанса 1С, а сеанс уже занимает клиентскую лицензию.
Можно ли подключить к одному серверу несколько баз?
Да. Каждая база регистрируется отдельно, и у каждой свои обсуждения. Пользователи разных баз друг друга по умолчанию не видят.
Работает ли система взаимодействия в файловой базе?
Да. Сервер взаимодействия не зависит от варианта работы базы: файловая и клиент-серверная подключаются одинаково.