Оглавление
Вступление
Уже многие слышали на сегодняшний день о Системе взаимодействия. С момента своего появления 8 лет назад в платформе 1С версии 8.3.10 система взаимодействия накопила функционал и ряд практик применения. И хотя площадок для общения сейчас множество, если ваша деятельность тесно связана с 1С, то система взаимодействия, если не превосходит аналоги, то, как минимум, является неплохой альтернативой.
Данная статья открывает цикл, посвященный системе взаимодействия. В ней мы поговорим о доступных возможностях этого механизма и вариантах его использования. По ходу повествования мы также подробно разберемся в установке своего Сервера взаимодействия и погрузимся в его архитектуру.
Цели и задачи для системы взаимодействия
Итак, что же такое система взаимодействия?
С пользовательской стороны — это обычный мессенджер, только «встроенный в 1С». И как во многих мессенджерах мы можем:
- Работать с чатами разных видов — здесь они называются обсуждениями.
Личные беседы между пользователями с глазу на глаз:
Групповые обсуждения на несколько пользователей:
Контекстные обсуждения — чаты, прикрепленные к объекту системы, например, к элементу справочника, документу и т. д.
Хочется акцентировать внимание на данной возможности, это одно из проявлений общей концепции, что система взаимодействия интегрирована в платформу. И это огромнейший плюс, что при общении нет необходимости выходить из предметной области:
Обмениваться файлами в чатах:
Устраивать звонки, в том числе с видео при наличии веб‑камеры, а также с возможностью демонстрации экрана:
Помимо прочего, система взаимодействия поддерживает ряд возможностей связи с «внешним миром». Да, система интегрирована в платформу, но она не остается вещью в себе, а позволяет осуществить, так сказать, экзистенциальный выход за пределы 1С. Можно интегрироваться с некоторыми мессенджерами и другими приложениями с помощью webhook, встроить чат в сторонний сайт, или, например, пригласить гостя в обсуждение по ссылке:
С точки зрения разработчика — это специфический механизм, позволяющий организовать ряд сценариев, в которых нужен обмен информацией в направлении «от сервера к клиенту». Помимо этого со всеми прикладными данными этого механизма можно работать программно через объектную модель, которая имеет богатый набор методов:
Из самого простого — можно получать информацию об обсуждениях/сообщениях и конечно создавать их.
Также есть механизм обработки события отправки сообщения и, к примеру, возможность встраивать интерактивные действия прямо в сообщения:
И ряд других вещей, о чем мы планируем написать в цикле статей.
Если говорить про архитектуру, то стоит сразу уточнить, что под капотом — хоть это и платформенный механизм, но одной только установленной платформы 1С для его работы не достаточно. Нужен «внешний компонент», который будет работать в связке с платформой. Таким компонентом может выступать сервис «1С:Диалог» или развернутый на собственных мощностях продукт «1С:Сервер взаимодействия».
Общую схему можно представить так:
Терминология
Прежде, чем продолжить, стоит упомянуть, что при работе с системой взаимодействия вводятся в обиход термины «Приложение» и «Абонент».
Приложение
В Руководстве разработчика «Глава 29. Система взаимодействия» (its.1c.ru/db/v8326doc#bookmark:dev:TI000001901) на ИТС указано так:
«Одна информационная база (или область данных), однозначно идентифицируемая системой взаимодействия, называется приложением».
Для простоты под приложением можно понимать информационную базу зарегистрированную в сервере взаимодействия.
Абонент
В статье «Система взаимодействия» (wonderland.v8.1c.ru/blog/sistema-vzaimodeystviya/) на сайте зазеркалья обозначено так:
«...Это физическое лицо или организация, от имени которого выполняется регистрация информационной базы в сервере взаимодействия. Схожее понятие используется и в технологии 1cFresh».
Для удобства можно назвать абонента — владельцем нескольких баз. Касательно системы взаимодействия сущность «абонент» позволяет:
- С одной стороны, при необходимости, объединить в рамках одного абонента несколько приложений, синхронизировав их пользователей так, что они смогут обмениваться сообщениями между разными базами.
- А с другой стороны, появляется возможность разграничить доступ и разделить базы по разным абонентам относительно их контуров ответственности.
Подключение системы взаимодействия через сервис «1С:Диалог»
Самый быстрый и простой способ опробовать систему взаимодействия — это подключиться к публичному сервису «1С:Диалог», который предоставляет фирма «1С». Как указано на ИТС (its.1c.ru/db/v8325doc#bookmark:utx:TI000000337) сервис развернут «для демонстрации возможностей» и на момент написания статьи:
- Не требует оплаты.
- Необходим доступ в интернет.
- «Из коробки» доступны практически все возможности, хотя некоторые из них и с ограничениями, например:
- Звонки ограничены 10 участниками.
- Есть ограничения на размер передаваемых файлов (подробнее можно почитать тут: 1cdialog.com/ru/pricing/).
Также вендор оставляет за собой право изменения текущих условий.
В общем‑то всё, никаких специальных условий на данный момент не существует, подключиться может любой желающий, причем прямо из 1С:Предприятия.
Само подключение выглядит следующим образом — заходим в нужную базу в режиме предприятия под пользователем, у которого есть право «РегистрацияИнформационнойБазыСистемыВзаимодействия»:
Переходим в основное меню программы справа‑сверху, выбираем пункт «Функции для технического специалиста...»:
Если пункт «Функции для технического специалиста...» отсутствует, его можно включить через «Настройки»->«Параметры».
В открывшемся окне в группе «Стандартные» выбираем пункт «Управление системой взаимодействия»:
Откроется форма регистрации в сервисе «1С:Диалог»:
Необходимо указать:
- Адрес электронной почты — он будет использоваться и как адрес, на который придет код подтверждения, и как идентификатор «абонента», в рамках которого разные информационные базы можно будет объединить общим контуром.
- Наименование приложения — произвольное название базы. Наименование выступает неким идентификатором базы для администратора. Его следует указывать так, чтобы в случае подключения нескольких баз в единый контур понимать, где какая база.
После этого нажимаем «Получить код» и ждем письмо на указанный адрес.
На почту должно прийти письмо с адреса info@1cdialog.com с кодом подтверждения:
Указываем код в появившемся поле «Код регистрации» и нажимаем «Зарегистрировать»:
В результате видим окно с подтверждением:
На этом процесс подключения завершен. При этом вид обработки «Управление системой взаимодействия» изменится так, что в нём можно будет управлять различными аспектами системы взаимодействия:
После этого, если у вас в интерфейсе выведена «Панель открытых», вы увидите новую вкладку «Обсуждения» рядом с вкладкой «Начальная страница»:
Как альтернатива, если «Панели открытых» нет, можно перейти в обсуждения через панель оповещений, которая открывается по значку колокольчика в заголовке окна 1С:Предприятия:
Во вкладке «Обсуждения» можно ввести в поисковую строку ФИО коллеги и пообщаться с ним лично:
Либо создать тематическое обсуждение и добавить в него коллег:
Учтите, что поиск коллег осуществляется только среди зарегистрированных пользователей системы взаимодействия. При подключении приложения сразу регистрируется только пользователь инициировавший подключение, он же становится «Администратором абонента». Остальные пользователи регистрируются автоматически только при входе в базу.
В случае, если коллега после подключения ещё не заходил в программу, то найти его в списке не получится:
Помочь с этим может администратор абонента. Для этого нужно пройти в обработку «Управление системой взаимодействия» и нажать гиперссылку «Пользователи»:
В открывшемся списке пользователей можно понять, кто зарегистрирован, по колонке «Система взаимодействия». Чтобы зарегистрировать пользователя, достаточно открыть его карточку и записать:
В карточку можно загрузить фотографию и заполнить контактную информацию, которая будет отображаться при нажатии на пользователя в обсуждении.
Если пользователей очень много, имеет смысл автоматизировать регистрацию и заполнение контактной информации. В реализации соответствующего алгоритма поможет объектная модель системы взаимодействия.
Установка своего сервера взаимодействия на Linux
Второй вариант использования системы взаимодействия — развернуть на собственных мощностях экземпляр продукта «1С:Сервер взаимодействия».
Отличия от 1С:Диалога здесь следующие:
- Интернет не обязателен. Что подойдет в случае, если в организации есть требования к закрытости сети.
- В самом минимальном варианте установки есть только возможности чатов и звонков на 10 участников. Однако, ограничения в ваших руках и для расширения возможностей можно развернуть дополнительные программы/службы. О том, как «прокачать» свой сервер взаимодействия, мы расскажем в цикле статей.
- У вас есть прямой доступ к хранимым данным в базе данных:
- Если в сервисе «1С:Диалог» можно получить информацию только посредством объектной модели, то в своём сервере база данных полностью под вашим управлением.
- Это может быть полезно в некоторых сценариях, когда нужно получить/обработать большое количество обсуждений/сообщений.
- Полный контроль над доступностью сервиса.
Теперь погрузимся в процесс установки своего сервера. Постараемся рассмотреть все нюансы, разобраться в том, о чём иногда не пишут в инструкции.
При написании статьи мы выбрали достаточно актуальную версию продукта 26.0.54, которую эксплуатируем сами в продукционной среде (releases.1c.ru/version_files?nick=CollaborationSystem&ver=26.0.54).
Соответственно, всё дальнейшее описание будет касаться компонентов, требований и настройки именно указанной версии.
Подготовка дистрибутивов
Для начала подготовим дистрибутивы, которые нам понадобятся для разворачивания своего сервера взаимодействия.
Для этого обратимся к требованиям продукта:
- Часть требований по ПО можно увидеть в ветке дистрибутива на releases.1c.ru (dl04.1c.ru/content/CollaborationSystem/26_0_54/requirements.html).
- Более подробно требования к ПО и железу описаны в документации к продукту на ИТС (its.1c.ru/db/cs26doc#bookmark:cs:TI000000002).
Условно разделим список доступных компонентов на две части:
- Минимальная установка — те блоки, без которых сервер взаимодействия в принципе «не взлетит».
- Дополнительные опции — компоненты, так или иначе расширяющие возможности.
Для минимальной установки необходимы:
- Платформа «1С:Предприятие» 8.3.10–8.3.26.
Этот компонент описывать не будем, подразумевая, что платформа у вас уже установлена.
Мы использовали платформу версии 8.3.25.1374. - СУБД PostgreSQL версии 15.4 и выше — СУБД PostgreSQL от фирмы «1С» или СУБД Tantor SE 1C.
В нашем случае мы несколько нарушили рекомендации, т. к. сами в продуктиве используем PostgreSQL 12‑ой версии с 1c.postgres.ru — он не 1Сный, но с патчем для 1С. - Java — в требованиях указано JDK (64‑разрядная) версии 11. Рекомендуется Liberica JDK или Axiom JDK Java 11.
Мы взяли Liberica 11 Full JDK версии 11.0.20+8 с releases.1c.ru/project/Liberica11FullJDK. - 1С:Сервер взаимодействия.
Мы скачали дистрибутив версии 26.0.54 с releases.1c.ru/project/CollaborationSystem.
При установке будут доступны для использования несколько компонент, для минимальной установки необходимы: - службы — cs/elasticsearch/hazelcast;
- утилита — ring.
- Утилита curl.
Взяли из доступного репозитория linux, описание установки будет ниже.
К дополнительным опциям отнесем:
- Передача файлов/Файловое хранилище.
В базовом варианте сервер взаимодействия передавать файлы не умеет, для этого необходимо внешнее хранилище. Существует возможность подключиться к облачному хранилищу по протоколу S3 или развернуть собственную службу на основе продукта MinIO. - Снятие ограничения в 10 видеоучастников/Медиасервер.
При обычной установке сервер взаимодействия поддерживает звонки до 10 участников включительно. Если есть необходимость увеличить этот лимит, нужно установить собственный медиасервер. На ИТС предлагается продукт Janus. - Подключение внешних пользователей/Компонент site.
Для этой опции необходимо подключить специальный «сайт», этот компонент входит в дистрибутив сервера взаимодействия, но требуется настройка. - Интеграция чата во внешние сайты/Компонент web‑chat.
Для этого необходимо подключить компонент web‑chat, который входит в дистрибутив сервера взаимодействия, но также требует настройки.
К установке дополнительных модулей надеемся вернуться в следующих статьях, а сейчас сосредоточимся на установке базового функционала.
Наши мощности
В нашей организации мы достаточно давно пользуемся системой взаимодействий. Изначально, как и у многих, это был сервис «1С:Диалог». Впоследствии перешли на свой сервер взаимодействия и эксплуатируем его уже несколько лет. Он развернут на отдельной виртуальной машине. К нему подключено несколько баз, в том числе крупная учетная база насчитывающая ~3 тысячи активных пользователей.
Сам сервер к текущему моменту накопил уже порядка ~546 тысяч сообщений в ~68 тысячах обсуждений:
Для демонстрации установки 1С:Сервера взаимодействий мы развернули отдельную виртуальную машину с именем «username-cs-l», близкую по характеристикам к той, на которой развернут наш продуктивный экземпляр:
- ОС — Debian 12;
- ОЗУ — 8 ГБ;
- процессор — 4 ядра по 2,2 ГГц;
- диски — общий объём ~30 ГБ.
Также на отдельном сервере развернули две ДЕМО базы 1С на платформе версии 8.3.25.1374:
- Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.172.24).
- Управление нашей фирмой, редакция 3.0 (3.0.10.235).
Подключение
В linux-среде все основные действия будем производить через терминал. Мы подключаемся с windows‑машины, поэтому можно использовать:
- командную строку,
- Windows PowerShell,
- Putty.
Проще всего набрать в поиске cmd:
В нашем случае мы воспользовались PowerShell и подключились по ssh следующей командой:
Материалы
Путеводителем для нас в этом путешествии являлись следующие материалы с сайта ИТС:
- Инструкция к продукту «1С:Сервер взаимодействия» 26 (its.1c.ru/db/cs26doc#bookmark:cs:TI000000000).
- Статья «Настройка 1С:Сервера взаимодействия и медиасервера» из раздела методических материалов (its.1c.ru/db/metod8dev#content:5988:hdoc).
Итак, в минимальной комплектации нам нужно установить и настроить компоненты:
- Java,
- curl,
- PostgreSQL,
- 1С:Сервер взаимодействия.
Приступим-съ.
JAVA
Службы сервера взаимодействия, судя по всему, работают за языке Java, кроме этого для взаимодействия с СУБД используется драйвер JDBC (об этом подробнее ниже). Так что Java‑машина жизненно важный элемент системы.
Установка
Для начала можно проверить, вдруг у вас уже установлена java.
Это можно сделать командой:
Если выводится сообщение, что команда java не найдена, переходим к следующему шагу:
Мы производим установку на ОС Debian 12, поэтому скачали пакет Liberica 11 Full JDK (64-bit) для DEB‑based Linux‑систем, версии 11.0.20+8 (releases.1c.ru/project/Liberica11FullJDK):
И «перекинули» его на нашу linux‑машину с помощью программы WinSCP:
Передать файл по сети можно и без дополнительных утилит с помощью консольной команды scp. Синтаксис передачи файла следующий:
Где ПолныйПутьДоФайла — полный путь до передаваемого файла на текущей машине, а ПутьНазначения — папка на удаленной машине, в которую файл хотим загрузить.
Пример для нашего случая выглядел бы так:
Далее возвращаемся к терминалу подключенному по ssh к виртуалке и переходим в домашнюю директорию, куда мы поместили .deb файл.
Чтобы установить deb-пакет можно использовать dpkg — менеджер пакетов Debian, с параметром «-i» — установка пакета:
Мы так и сделали, получив пачку ошибок настройки из‑за отсутствия необходимых пакетов, от которых зависит устанавливаемый:
Исправить эту ситуацию поможет команда:
Apt — это тоже менеджер пакетов, но более высокоуровневый, и в своей основе он собственно использует dpkg. При вызове с параметрами --fix-broken install он попытается найти все проблемы, связанные с зависимостями, и доустановить недостающие пакеты.
Всё починилось:
Как альтернативу, мы могли бы изначально вместо dpkg вызвать такую команду:
Обратите внимание, что apt install используется обычно применительно к пакетам из репозиториев и тогда параметром выступает просто имя пакета. В случае же, когда в неё необходимо передать deb‑файл, это нужно делать с указанием локального пути «./».
После установки проверяем снова версию java. Если видим подобный ответ, считаем миссию исполненной:
Установка переменной среды JAVA_HOME
В статье на ИТС «Настройка „1С:Сервера взаимодействия“ и медиасервера» на этом этапе предлагается установить переменную среды JAVA_HOME следующей командой:
В нашем случае:

Внимание! Важно понимать логику работы с переменными среды в Linux. То, что введено через команду export, касается только текущего сеанса и только процессов запущенных под текущим пользователем. Это можно использовать в некоторых случаях, например, для однократного запуска установщика Сервера взаимодействия «1ce-installer-cli», т. к. для этого тоже нужен путь к java (its.1c.ru/db/inst10doc#content:10023:hdoc). О самом установщике мы поговорим чуть позже.
Но далее мы будем настраивать службы сервера взаимодействия, а они будут запускаться под отдельными пользователями, как системные службы systemd. Для них переменная JAVA_HOME также должна быть установлена, иначе при запуске служб можно поймать подобные ошибки:
Способов установить переменную среды несколько:
- Для всех пользовательских сеансов.
Можно указать эту переменную в файле /etc/environment: - Для конкретных пользователей.
Можно добавить в свои личные настройки или в /.profile, или через /.basrc. В настройке конкретной службы.
Для этого нужно вызвать команду переопределения параметров службы:sudo systemctl edit <ИмяСлужбы>Например:
sudo systemctl edit 1ce-hc-example.serviceИ добавить секцию:
[Service]
Environment=JAVA_HOME=<ПутьКJava>- В конфигурации инстансов сервера взаимодействия.
Именно этим путем пойдем мы, см. подробнее раздел «Установка параметра служб java‑home» ниже в статье.
curl
Утилита curl — специальный инструмент, который позволяет выполнять запросы к веб‑ресурсам из командной строки. Относительно сервера взаимодействия, curl используется для изменения настроек сервера взаимодействия верхнего уровня, и такие настройки хранятся на уровне основной базы данных. В отличии от утилиты ring, которая используется для базового конфигурирования инстансов и служб до запуска, причем настройки служб изменяются и хранятся в конфигурационных файлах.
Перейдём к описанию установки curl.
Для начала можно проверить, может быть эта утилита уже у вас установлена, командой:
В руководстве установки сервера взаимодействия на ИТС its.1c.ru/db/cs26doc#bookmark:cs:TI000000002 предлагается скачать утилиту по ссылке curl.haxx.se/download.html.
Но мы пошли по более простому пути и установили её из доступных репозиториев командой:
На этот раз без приключений:
После установки проверяем снова версию. Версия не самая свежая, но это не принципиально:
PostgreSQL
В базе данных PostgreSQL сервер взаимодействия будет хранить всю прикладную информацию — информацию об абонентах и приложениях, списки обсуждений, сообщения этих обсуждений и т. д.
Если у вас уже есть установленный PostgreSQL, можно использовать его. Тогда пункт «Установка» можно пропустить и сразу перейти к «Настройка — создание пользователя и базы данных PostgreSQL».
Установка
Для текущей установки мы используем 12‑ю версию PostgreSQL с патчами 1С, подготовленную командой PostgresPRO. После заполнения формы на сайте 1c.postgres.ru нам на почту прислали специальный скрипт подключения репозитория — pgpro-repo-add.sh.
Перекинем его уже известным способом через WinSCP или scp на целевую машину и выполним:
Далее обновляем информацию о доступных пакетах:
И устанавливаем PostgreSQL командой:
Во время установки такого пакета у нас автоматически:
- Создался пользователь postgres.
- Инициализировался кластер PostgreSQL в директории /var/lib/pgpro/12/data.
- Создалась служба postgrespro-1c-12.service по пути /lib/sustemd/system, и запустилась.
Теперь можно найти, как называется наша служба:
И убедиться, что она запущена и работает:
На этом установка завершена.
Настройка — создание пользователя и базы данных PostgreSQL
После того, как базовая установка PostgreSQL произведена, перед подключением сервера взаимодействия нам потребуются некоторые дополнительные настройки.
Нам предстоит:
- Создать пользователя СУБД, которого сервер взаимодействия будет использовать для подключения. Важно, чтобы у этого пользователя были права на создание баз данных.
- Создать базу данных.
- Установить для БД специальное расширение uuid‑ossp.
- Назначить владельцем базы данных пользователя из п. 1.
Для этого нужно подключиться к кластеру PostgreSQL, используя утилиту psql под полноправным пользователем СУБД (обычно это пользователь «postgres»).
Переключаемся на этого пользователя командой su <ИмяПользователя> и запускаем psql:
Подробнее про работу psql и её параметры можно почитать в документации PostgreSQL (postgrespro.ru/docs/postgresql/12/app-psql).
1. Создаем пользователя
В нашем случае пусть будет:
Имя = «cs»;
Пароль = «cs_password».
В терминале psql вызываем команду:
CREATE USER <ИмяПользователя> WITH PASSWORD '<ПарольПользователя>' CREATEDB;
Опция CREATEDB — означает, что данному пользователю будет дано право на создание баз данных. Это необходимое условие для работы с сервером взаимодействия.
И не забываем ставить «;» в конце команды. :) Если этого по невнимательности не сделать, будет казаться что команда зависла.
При успешном результате система ответит CREATE ROLE:
Почему ROLE, если мы создавали USER? Дело в том, что в парадигме PostgreSQL пользователь и роль — это одна сущность. Команда CREATE USER на самом деле является «обёрткой» для команды CREATE ROLE с той лишь разницей, что CREATE USER по‑умолчанию подразумевает разрешение входа на сервер (настройка LOGIN), а CREATE ROLE нет (настройка NOLOGIN).
Подробнее про эти команды в документации postgresql:
postgrespro.ru/docs/postgresql/12/sql-createuser;
postgrespro.ru/docs/postgresql/12/sql-createrole.
Проверить текущих пользователей можно командой:
\dg
2. Создаем базу данных
В нашем случае пусть будет база с именем «cs_db».
Вызываем команду:
CREATE DATABASE <ИмяБД>
В случае успеха, система ответит CREATE DATABASE:
Далее переключаемся в контекст свежесозданной базы командой:
\c <ИмяБД>
3. Устанавливаем расширение uuid‑ossp
Устанавливаем расширение uuid‑ossp:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
4. Назначаем владельца базы данных
И наконец, назначаем пользователя cs владельцем базы данных cs_db, выдаем ему все права на неё:
ALTER DATABASE cs_db OWNER TO cs;
GRANT ALL PRIVILEGES ON DATABASE cs_db TO cs;
Полный листинг команд в psql:
Имя базы данных, пользователя и пароль выпишем себе куда‑нибудь, так как эти параметры понадобятся нам для дальнейшей настройки:
Пользователь БД = cs
Пароль пользователя БД = cs_password
1С:Сервер взаимодействия
Наконец все сторонние утилиты установлены, переходим к центральному элементу.
Установка дистрибутива
Файл дистрибутива «Сервер взаимодействия (64-bit) Linux» версии 26.0.54 для Linux мы скачали с releases.1c.ru/project/CollaborationSystem:
Там же имеет смысл скачать обработку для регистрации информационной базы, она пригодится нам позже.
Переносим дистрибутив в виде файла с расширением .gz на нашу машину username-cs-l с помощью WinSCP:
Далее переходим в терминал нашей виртуалки, в домашний каталог.
Файл с расширением .gz что мы скачали — это архив, нам нужно его распаковать.
Но чтобы не захламлять домашнюю директорию создадим отдельную папку:
И выполним команду распаковки в эту папку:
Где tar — утилита архиватор, как правило в linux-системах установлена по‑умолчанию.
Параметры:
xf — execute folder, команда означает распаковку.
z — указание на формат файла gzip.
v — с выводом информации на экран.
В нашем случае:
После распаковки заходим в папку CS_Distrib и видим файл 1ce-installer-cli — это консольная версия установщика:
Запускаем установку, вызвав эту утилиту с параметром install:
И «благополучно» ловим ошибку цифровой подписи:
Информацию по этой проверке мы найти не смогли, но мы были уверены, что скачали файл из надежного источника, поэтому повторили установку с параметром отключения проверки, как нам и предложила система:
Более подробно о параметрах утилиты установщика можно почитать в статье на ИТС (its.1c.ru/db/inst10doc#content:10015:hdoc).
После этого установка дистрибутива завершилась успешно:
Компоненты сервера взаимодействия установились в директорию /opt/1C/1CE/components:
Немного про утилиту ring
ring — это консольная утилита для конфигурирования процессов и выполнения операций обслуживания системы, поставляется в дистрибутиве сервера взаимодействия.
Подробнее про неё можно почитать на ИТС (its.1c.ru/db/v8325doc#bookmark:adm:TI000000674).
Данная утилита нам потребуется для конфигурирования служб сервера взаимодействия. В нашем случае она была установлена вместе с дистрибутивом в директорию /opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64:
Далее приводим несколько советов при работе с данной утилитой.
Переменая среды PATH
Утилиту можно вызывать указывая полный путь, например так:
Но лучше иметь возможность обращаться к ней из любой директории по имени «ring», для этого нужно чтобы для текущего сеанса в переменной среды PATH присутствовал путь «/opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/».
Доступные варианты мы уже описывали в п. «JAVA» -> «Установка переменной среды JAVA_HOME».
Для нас сгодится такой вариант:
Пример:
Конечно, держим в голове, что после повторного входа пользователя этот путь не сохранится.
Привилегированный вызов

Чтобы переключиться на пользователя root можно воспользоваться командой:
Возможные ошибки
У нас при первых запусках утилита выдавала ошибки такого вида:
Интернет подсказал нам, что необходимо установить программу gawk, такой командой:
awk — утилита для различных операций над текстовыми файлами.
gawk — расширенная реализация этой утилиты для GNU систем.
После установки этой утилиты ошибки пропали.
Доступные команды
Справку по доступным командам ring для разных компонент можно получить командой:
Где «Компонент» принимает одно из значений — cs, hazelcast, elsticsearch.
Создание пользователей и каталогов для служб
Функционирование сервера взаимодействия завязано на трёх службах:
- CS — головная служба сервера взаимодействия.
- Hazelcast — распределенное хранилище в памяти, в котором обслуживаются сессии/очереди/события.
- Elasticsearch — служба поиска, обеспечивает полнотекстовый поиск и подбор пользователей.
Следующий этап — конфигурирование инстансов cs, hazelcast, elasticsearch.
Прежде этого нам нужно будет создать для них пользователей, указать имена служб, а также (опционально) указать для них рабочие папки.
В нашем случае пусть это будут:
- Пользователи cs_user, hc_user, es_user.
- Службы — cs-example, hc-example, es-example.
- Папки — cs-workdir, hc-workdir, es-workdir.
Далее создаем пользователей, используя команду useradd:
Проверить список пользователей в системе можно посмотрев в файл /etc/passwd. Например, такой командой:
cat — выводит содержимое файла на экран, grep фильтрует строки по вхождению «_user»:
Далее создаем рабочие папки служб командой mkdir, с параметром «-p», что позволит создать несколько каталогов друг в друге:
И указываем каждой папке своего владельца:
После этого можем пройти в /var/cs и проверить выданные права командой ls, которая выводит список файлов/папок. С ключом -l выводится подробная информация, в том числе по группе и владельцу файлов:
Инициализация служб
Теперь переходим непосредственно к созданию инстансов и сервисов для каждой компоненты cs/elasticsearch/hazelcast.
Под инстансом здесь понимается экземпляр сервиса внутри конфигурации сервера взаимодействия. А сервис — это служба на уровне системы, т. к. нужно, чтобы сервер взаимодействия работал постоянно и стартовал вместе с операционной системой.
Для создания инстанса необходимо выполнить команду:
Компонент может принимать значения cs, elasticsearch или hazelcast.
Параметры команды instance create аналогичны для всех компонент, вот пример для CS:

Вызываем команду создания для каждой компоненты:
При этом действии система создала в рабочих папках инстансов структуру подпапок и конфигурационных файлов:
Также заполнилась конфигурация в файле /etc/1C/1CE/server-instances.cfg:
Информацию об инициализированных инстансах и их рабочих папках можно посмотреть командой:
Следующим пунктом мы должны создать службы для каждого инстанса. Это делается командой:
Параметры команды service create:
Создадим службы:

После этого действия в каталоге /etc/systemd/system/ появились файлы описания указанных служб. К их названию добавился префикс «1ce-»:
Установка параметра служб java-home
Как мы писали выше в разделе JAVA, для работы служб сервера необходимо указать путь к папке установки Java. И это можно сделать через указание специального параметра java‑home в конфигурации служб.
Для этого нужно выполнить команду:
В нашем случае «ПутьУстановкиJava» = /usr/lib/jvm/bellsoft-java11-full-amd64/.
Выполним для каждого инстанса:
Удостовериться, что параметр заполнился можно такой командой:
Также параметр можно очистить, использовав метод clear:
Настройка JDBC-драйвера
Теперь настроим конфигурацию JDBC‑драйвера.
JDBC (англ. Java DataBase Connectivity — соединение с базами данных на Java) — платформенно независимый промышленный стандарт взаимодействия Java‑приложений с различными СУБД.
Источник: ru.wikipedia.org/wiki/Java_Database_Connectivity.
В данном случае JDBC‑драйвер — это такая «прослойка» между сервером взаимодействия и СУБД PostgreSQL, которая дает возможность серверу выполнять запросы SQL. Если кратко, то мы должны «сообщить» службе сервера взаимодействия, в какой конкретно кластер PostgreSQL нужно стучаться, в какую базу, и с каким логином/паролем.
Заметка про «Зоны хранения»
При этом, забегая немного вперед, по нашим наблюдениям, сервер взаимодействия подразумевает разделение «зон хранения» на две части:
- Основная база — это БД, в которой хранятся настройки абонентов, приложений, и адресации хранения данных абонентов.
- Базы хранения данных абонентов — одна или несколько баз данных, в которых будут размещены уже прикладные таблицы с данными обсуждений, сообщений и т. д. Причем эти таблицы в PostgreSQL выделены в специальную схему, и такая база может совпадать с основной, просто данные настроек и данные абонента будут разведены по разным схемам.
В текущем разделе похоже, что мы настраиваем именно Основную базу, без неё сервер взаимодействия просто не запустится.
Настройка
Примечание: настройки JDBC задаются только в рамках центральной компоненты cs.
Напомним, ранее в разделе POSTGRESQL мы определили следующие параметры:
Пользователь БД = cs
Пароль пользователя БД = cs_password
У сервера взаимодействия настройки JDBC‑драйвера имеют значения по‑умолчанию. Перед установкой собственных настроек предлагаем на них взглянуть. Это можно сделать командой:
ИмяПула — может принимать значения privileged и common.
Параметры команды:
Вызовем эту команду для каждого пула:
Проверяем, кластер postgresql у нас действительно развернут локально на порту 5432, имя пользователя cs совпадает, но вот имя базы и пароль другие.
Перенастроить их можно командой с методом set‑params:
Параметры команды:
Назначим корректную строку подключения с базой «cs_db»:
И заменим пароль на «cs_password»:
У нас не было необходимости менять имя пользователя, но если бы это было нужно, это можно сделать командами:
Снова проверяем установленные значения, теперь всё корректно:
Также эти параметры можно увидеть в рабочем каталоге инстанса cs в файле ../config/jdbc.yml:
Но похоже только те, что отличаются от значений по‑умолчанию.
Интерфейсы сервера взаимодействия
Прежде, чем продолжить настройку поговорим немного о путях воздействия на Сервер взаимодействия.
Для обмена информацией и конфигурирования в сервере взаимодействия есть несколько интерфейсов, т. е. ресурсов вида <ip_адрес>:<порт>, которые он прослушивает.
Всего таких интерфейса три (в скобках дано название из внутренних настроек):
- Рабочий (websocket) — служит для соединения с 1С:Предприятием, именно по этому адресу мы будем подключать базы 1С к серверу взаимодействия.
По-умолчанию: 0.0.0.0:9094. - Обслуживания (maintenance) — служит для управления настройками сервера взаимодействия, например, задания настроек подключения к медиасерверу, хранилищу файлов, списку баз хранения данных абонентов и т. д.
По-умолчанию: 127.0.0.1:8087. - Интеграции (integration) — используется при работе с внешними системами, например, для интеграции с мессенджерами ВК, Telegram и т. д.
По-умолчанию: 127.0.0.1:8443.
Получить текущие настройки можно следующей командой:
Где ИмяИнтерфейса может принимать значения websocket, maintenance, integration.
Пример для нашего случая:
При необходимости можно изменить параметры командой:
Рабочий интерфейс (WebSocket)
WebSocket — протокол связи поверх TCP‑соединения, предназначенный для обмена сообщениями между браузером и веб‑сервером, используя постоянное соединение.
Источник: ru.wikipedia.org/wiki/WebSocket.
Доступные для настройки параметры рабочего интерфейса можно посмотреть в help:
Согласно инструкции с ИТС предполагается, что может потребоваться донастроить параметры hostname и port (its.1c.ru/db/cs26doc/bookmark/cs/TI000000020).
Выше мы уже проверяли его значения по‑умолчанию:
Параметры «hostname='0.0.0.0', port=9094» означают, что сервер взаимодействия будет принимать соединения через порт 9094 с любых ip‑адресов. Нас это устраивает, т. к. мы будем подключать 1С‑приложения к серверу взаимодействия на этой виртуальной машине username-cs-l извне.
Также эти параметры, или их часть, по-видимому, можно увидеть в рабочем каталоге инстанса cs в файле ../config/websocket.yml:

Интерфейс обслуживания (maintenance) — Параметры аутентификации по‑умолчанию
Взаимодействие с интерфейсом обслуживания осуществляется с помощью http‑запросов. Подробнее об этом опишем ниже в разделе «Подробнее про работу с утилитой curl». Здесь лишь уточним, что в большинстве случаев для этого требуется аутентификация, то есть в параметрах запроса должны быть переданы логин/пароль. По‑умолчанию для интерфейса заданы такие параметры:
- логин — admin,
- пароль — admin.
При необходимости эти параметры можно изменить, задав настройки http_security. Подробнее можно почитать на ИТС (its.1c.ru/db/cs26doc#bookmark:cs:TI000000091).
Запуск служб
Преднастройки инстансов выполнены, теперь пора запустить службы Сервера взаимодействия.
На нашей виртуалке установлена Debian 12. По‑умолчанию в ней используется система инициализации systemd и для управления службами предназначена утилита systemctl. Однако в парадигме сервера взаимодействия подразумевается, что управление службами будет осуществляться не через systemctl, а через команды утилиты ring.
Доступен ряд команд следующего формата:
Параметр «Команда» — может принимать значения start, stop, restart, status, create, delete (логика аналогична systemctl).
В инструкции на ИТС указана такая последовательность запуска служб:
- Hazelcast.
- Elasticsearch.
- CS.
Ради эксперимента мы пробовали и иной порядок, сервер всё равно успешно стартовал. Возможно, это не принципиально, но последовательность, при которой основной компонент cs стартует последним — логична, т. к. именно cs в своей работе использует hazelast и elasticsearch, а не наоборот.
Итак запустим службы:
В случае каких-то проблем может быть сообщение вида:
В чем может быть причина:
- Проверьте, выполняете ли вы запуск ring под пользователем root?
- Указана ли переменная среды JAVA_HOME или параметр инстансов java‑home?
- В иных случаях проанализируйте логи в папке logs/ внутри рабочей папки службы.
К примеру, для нашего случая пути к папкам логов такие:
/var/cs/hc-workdir/log
/var/cs/es-workdir/log
В случае успешного запуска никакой «отбивки» не последует, проверить состояние службы можно командой service status, например:
Также можно проверить информацию по службе на уровне ОС, для этого можно выполнить команду:
Обратите внимание, что в этом случае нужно указывать имя службы ОС, а не сервера взаимодействия. Например:
Общий «градусник»
Также проверить работоспособность запущенного сервера взаимодействия можно запросом из утилиты curl:
Где localhost:8087 — адрес интерфейса обслуживания, если не изменяли настройки.
В ответном сообщении будет json с кратким статусом по подсистемам:
"mainDbOk":true,
"allShardsOk":true,
"hazelcast":{"available":true,"members":["127.0.0.1:5701"]},
"elasticsearchOk":true,
"mediaClusterOk":false,"mediaServers":{},
"pushOk":false}
Заметка про порты hazelcast и elasticsearch
К слову, в этом выводе «градусника» можно заметить, что в настройке hazelcast фигурирует порт 5701.
Ради интереса можем проверить, какой процесс слушает этот порт, такой командой:
Ответ:
Второй параметр 251846 — это PID процесса.
Далее можем узнать например путь к исполняемому файлу:
Затем посмотреть свойства службы 1ce-hc-example.service и убедиться, что её основной PID как раз равен 251846:
А слушает ли какие‑то порты Elasticsearch? Это можно выяснить так.
Посмотреть PID в статусе службы:
И вызвать команду:
Получается, что Hazelcast «слушает» порт 5701, а Elasticsearch — порты 9200 и 9300. Увы, способов повлиять на эти параметры через ring мы не нашли. Да и как‑то использовать информацию мы не сможем, но знать это полезно.
Подробнее про работу с утилитой curl
После запуска служб в Сервер взаимодействия можно вносить настройки, отправляя http‑запросы по интерфейсу обслуживания. Для этого нам пригодится утилита curl, которая позволяет делать http‑запросы из консоли.
Команда в базовом виде выглядит так:
Опишем основные способы работы с настройками.
Всё взаимодействие происходит посредством GET/POST/PUT/DELETE запросов на адрес интерфейса обслуживания http://maintenance:port. По умолчанию, это 127.0.0.1:8087, или localhost:8087, если эти настройки не менялись (см. раздел «Интерфейсы сервера взаимодействия»).
В зависимости от нужного раздела настроек адрес уточняется, например:
- http://maintenance:port/admin/bucket_server — настройки баз данных для хранения данных абонентов.
- http://maintenance:port/admin/storage_server — настройки подключенных файловых хранилищ.
- http://maintenance:port/admin/media_server — настройки подключенных медиа‑серверов.
Аутентификация
При обращении к интерфейсу обслуживания необходимо задать логин и пароль аутентификации. Для этого нужно добавить параметр:
По-умолчанию это admin:admin, если не было перенастроено.
Как посмотреть настройку?
Нужно выполнить GET‑запрос:
Причем без параметра --X запрос по‑умолчанию считается типа GET, то есть его можно не указывать.
Пример получения настроек баз данных хранения данных абонентов:
Как добавить настройку?
Нужно выполнить POST‑запрос:
Где «--Sf» означает, что будут выводиться только не серверные ошибки.
«Параметры» — настройка в JSON‑формате.
Пример добавления настройки базы данных хранения данных абонентов:
Хорошо, добавили мы настройку и поняли, что в ней что‑то не так. Как её изменить или удалить? Это зачастую бывает не очевидно и не так‑то просто.
В наших экспериментах сработали нижеуказанные способы.
Как изменить настройку?
Сначала нужно узнать идентификатор настройки. Для это выполняем GET‑запрос и в ответном сообщении находим нужный идентификатор:
Далее выполняем PUT‑запрос, вида:
Пример изменения логина и отключения базы данных хранения данных абонента:
Как удалить настройку?
Выполнить DELETE‑запрос вида:
Пример удаления настройки подключенного медиа‑сервера:

Инициализация базы данных
Ранее в разделе настройки JDBC‑драйвера мы указали «Основную базу» данных сервера взаимодействия, в которой хранятся настройки абонентов, их связи с приложениями и пользователями, а также различные конфигурации опциональных систем — медиасерверов, файловых серверов и т. д.
Теперь после успешного запуска служб, необходимо инициализировать хотя бы одну базу для хранения данных абонентов. В самом простом случае эта база может совпадать с «Основной базой».
Под инициализацией здесь следует понимать добавление настройки базы в конфигурации сервера посредством POST запроса по адресу http://maintenance:port/admin/bucket_server с передачей параметров в JSON‑формате.
В нашем случае команда выглядела так:
В ответ нам выдало сообщение в json‑формате, с данными добавленной настройки:
Все текущие настройки можно проверить командой, в ответ будет массив структур в JSON‑формате:
"url":"jdbc:postgresql://localhost:5432/cs_db",
"username":"cs",
"password":"cs_password",
"lastUsedAt":"2025-04-13T10:46:06.239+00:00",
"enabled":true,
"deleted":false}]
Здесь нас заинтересовал вопрос: что будет, если инициализировать несколько баз?
Мы провели небольшой эксперимент.
Создали в PostgreSQL ещё одну базу данных cs_db2, добавили её в настройку bucket_server:
В основной базе данных cs_db в таблице bucket_server при этом добавилась строка:
Далее мы попробовали регистрировать приложения 1С в Сервере взаимодействия в разных вариациях. В итоге выяснили, что при регистрации приложения на нового абонента, для него закрепляется некий номер «корзины» — bucket_id. И в случае наличия более одной базы данных, данные каждого нового абонента размещаются в этих двух базах по очереди. При этом каждой базе соответствует своя схема «vb_subscriber_№», индекс которой не соответствует номеру корзины:
Полагаем эта система задумана для возможности горизонтального масштабирования. К сожалению, мы не нашли информации, есть ли в системе возможность управлять логикой такого размещения.
Про размещение данных в таблицах и схемах СУБД мы расскажем в будущих статьях.
Подключение баз 1С к серверу взаимодействия
Теперь, когда все необходимые настройки сделаны, можем подключить базу 1С к серверу взаимодействия.
Для этого входим в нашу ДЕМО базу БП КОРП в режим 1С:Предприятия под пользователем, у которого есть роль с правом «РегистрацияИнформационнойБазыСистемыВзаимодействия». И открываем внешнюю обработку регистрации CollaborationSystemRegister.epf.
Напомним, что скачать её можно на странице дистрибутива сервера взаимодействия (releases.1c.ru/version_files?nick=CollaborationSystem&ver=26.0.54):
В открывшейся форме заполняем поля и нажимаем кнопку «Зарегистрировать»:
Пояснения по полям формы «Регистрация системы взаимодействия»
Адрес сервера взаимодействия
Это строка вида: <Протокол>://<ИмяСервераИлиIP>:<Порт>.
В нашем случае выглядела так: ws://username-cs-l:9094.
Протокол — ws или wss, в зависимости от того, как настроен рабочий интерфейс, в нашем случае оставили этот режим по‑умолчанию ws.
ИмяСервераИлиIP и Порт — адрес, по которому можно «достучаться» до рабочего интерфейса сервера взаимодействия. Он должен соотноситься с настройками указанными в разделе «Настройка Websocket». Например, в нашем случае сервер взаимодействия развернут на виртуальной машине «username-cs-l», в локальной сети в DNS прописано соответствие этого имени с IP‑адресом, а в Websocket указано hostname=’0.0.0.0′, port=9094, то есть служба cs слушает порт 9094 с любых адресов.
Адрес электронной почты абонента
В общем смысле это значение выступает идентификатором абонента. Подключение нескольких баз в рамках одного идентификатора дает возможность организовать т. н. «Совместное использование приложений», что позволит общаться пользователям разных баз друг с другом. Подразумевается, что это всё же работающий адрес почты, т. к. хоть в отличии от 1С:Диалога, при подключении к своему серверу код подтверждения не нужен, но на этот адрес после подключения будет отправлен ключ администратора.
Но в целом, в тестах мы указывали в этом поле в том числе и произвольные строки, так что похоже это не критично для подключения. Здесь нужно только учитывать, что ключ администратора придется получить из встроенной обработки «Управление системой взаимодействия».
Кстати, при необходимости, адрес можно сменить после подключения прямо в обработке «Управление системой взаимодействия»:
Однако хотим предупредить, что похоже «объединить» двух разрозненных абонентов таким образом нельзя. То есть при смене адреса у «Абонента2» на уже существующий в системе адрес, который принадлежит «Абоненту1», Абоненты 1 и 2 не станут единым целым, и, вероятно, возможны коллизии:
Имя информационной базы
Это произвольное представление текущей базы. По нашим наблюдениям не является каким‑либо идентификатором, нужно в первую очередь, чтобы вы могли однозначно понять, с какой базой имеете дело.
Например, ради интереса мы зарегистрировали обе ДЕМО базы — БП и УНФ с одним именем «Бухгалтерия предприятия КОРП, редакция 3.0». Система позволила это сделать без ошибок:
После этого в сервисе совместного использования стало невозможно визуально отличить эти базы. Так что, если вы планируете подключать к серверу взаимодействия не одну базу, то нужно подходить к именованию с умом:
Ну и куда же без ошибок
Что делать, если подключиться не удалось?
У нас в одном из тестов была такая ошибка:
Необходимо проанализировать сетевую доступность рабочего интерфейса Сервера взаимодействия. Возможные проблемы:
- Порт 9094 закрыт файерволлом.
- Некорректные настройки hosts.
- В настройках Сервера взаимодействия указан другой порт, либо он слушает IP‑адрес, который не соответствует указанному имени.
Исходя из нашего опыта эксплуатации, также ошибки могут быть связаны с совместимостью версии платформы 1С и версии сервера взаимодействия. Лучший способ избежать этого — брать актуальные версии обоих продуктов.
После корректного заполнения формы «Регистрация системы взаимодействия» при успешном подключении вы увидите сообщение:
Ура, можно общаться!
Послесловие
Разнообразие программ, позволяющих общаться, усложняет выбор. Одни удобнее, другие надежнее, третьи безопаснее. Есть ли место в этом саду 1С:Системе взаимодействия? Без сомнения, да. И не только потому что «своя рубашка ближе к телу», хотя и по этой причине тоже, но и по вполне объективным меркам. Ни одна из других систем не позволит вести обсуждения объектно‑привязанным образом, никакая иная система не позволит так тонко настроить обработку и реакцию на сообщения, связать в единый контур вашу инфраструктуру и экосистему 1С.
Помимо этого подкупает также простота, с которой можно опробовать этот механизм в сервисе «1С:Диалог».
При этом мы понимаем, что для полноты вышеупомянутых возможностей необходимо перейти на свой собственный Сервер взаимодействия. И это вызывает некоторые сложности. Цель настоящей статьи состояла в том, чтобы облегчить задачу перехода. Хотя эта цель не единственная. Нам, помимо этого, хотелось приоткрыть завесу и показать устройство, а также ответить на сколько‑нибудь хитрые вопросы, ответы на которые мы сами искали.
Конечно, мы погрузились не во все проблематики, но на этом мы не останавливаемся. В будущих статьях мы расскажем про расширение возможностей Сервера взаимодействия, про устройство его таблиц СУБД, а также про незаурядный экспертный случай, который побудил нас в это устройство погрузиться.
До скорых встреч!
От экспертов «1С-Рарус»





