От экспертов «1С-Рарус»: Полное руководство по установке, начальной настройке и запуску «1С:Сервер взаимодействия»
От экспертов «1С-Рарус»: Полное руководство по установке, начальной настройке и запуску «1С:Сервер взаимодействия»

От экспертов «1С‑Рарус»: Полное руководство по установке, начальной настройке и запуску «1С:Сервер взаимодействия»

05.05.2025
168 мин
2187

Вступление

Уже многие слышали на сегодняшний день о Системе взаимодействия. С момента своего появления 8 лет назад в платформе 1С версии 8.3.10 система взаимодействия накопила функционал и ряд практик применения. И хотя площадок для общения сейчас множество, если ваша деятельность тесно связана с 1С, то система взаимодействия, если не превосходит аналоги, то, как минимум, является неплохой альтернативой.

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

Цели и задачи для системы взаимодействия

Итак, что же такое система взаимодействия?

С пользовательской стороны — это обычный мессенджер, только «встроенный в 1С». И как во многих мессенджерах мы можем:

  • Работать с чатами разных видов — здесь они называются обсуждениями.
    • Личные беседы между пользователями с глазу на глаз:

      Личные беседы между пользователями с глазу на глаз

    • Групповые обсуждения на несколько пользователей:

      Групповые обсуждения на несколько пользователей

    • Контекстные обсуждения — чаты, прикрепленные к объекту системы, например, к элементу справочника, документу и т. д.
      Хочется акцентировать внимание на данной возможности, это одно из проявлений общей концепции, что система взаимодействия интегрирована в платформу. И это огромнейший плюс, что при общении нет необходимости выходить из предметной области:

      Контекстные обсуждения — чаты, прикрепленные к объекту системы

  • Обмениваться файлами в чатах:

    Обмен файлами в чатах

  • Устраивать звонки, в том числе с видео при наличии веб‑камеры, а также с возможностью демонстрации экрана:

    Возможность проведения звонков

    Возможность проведения звонков, в том числе с видео при наличии веб-камеры

  • Помимо прочего, система взаимодействия поддерживает ряд возможностей связи с «внешним миром». Да, система интегрирована в платформу, но она не остается вещью в себе, а позволяет осуществить, так сказать, экзистенциальный выход за пределы 1С. Можно интегрироваться с некоторыми мессенджерами и другими приложениями с помощью webhook, встроить чат в сторонний сайт, или, например, пригласить гостя в обсуждение по ссылке:

    Система позволяет пригласить внешнего участника в обсуждение

    Приглашение участника в обсуждение по ссылке

    Приглашенный участник добавлен в обсуждение

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

Работа через объектную модель с помощью методов

Из самого простого — можно получать информацию об обсуждениях/сообщениях и конечно создавать их.

Также есть механизм обработки события отправки сообщения и, к примеру, возможность встраивать интерактивные действия прямо в сообщения:

Возможность встраивания интерактивных действий в сообщения

И ряд других вещей, о чем мы планируем написать в цикле статей.

Если говорить про архитектуру, то стоит сразу уточнить, что под капотом — хоть это и платформенный механизм, но одной только установленной платформы 1С для его работы не достаточно. Нужен «внешний компонент», который будет работать в связке с платформой. Таким компонентом может выступать сервис «1С:Диалог» или развернутый на собственных мощностях продукт «1С:Сервер взаимодействия».

Общую схему можно представить так:

Схема архитектуры работы платформы 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С:Диалог»:

Форма регистрации в сервисе «1С:Диалог»

Необходимо указать:

  • Адрес электронной почты — он будет использоваться и как адрес, на который придет код подтверждения, и как идентификатор «абонента», в рамках которого разные информационные базы можно будет объединить общим контуром.
  • Наименование приложения — произвольное название базы. Наименование выступает неким идентификатором базы для администратора. Его следует указывать так, чтобы в случае подключения нескольких баз в единый контур понимать, где какая база.

После этого нажимаем «Получить код» и ждем письмо на указанный адрес.

На почту должно прийти письмо с адреса info@1cdialog.com с кодом подтверждения:

Письмо от info@1cdialog.com с кодом подтверждения для подключения

Указываем код в появившемся поле «Код регистрации» и нажимаем «Зарегистрировать»:

Указываем код в поле «Код регистрации» и нажимаем «Зарегистрировать»

В результате видим окно с подтверждением:

Окно с подтверждением регистрации приложения

На этом процесс подключения завершен. При этом вид обработки «Управление системой взаимодействия» изменится так, что в нём можно будет управлять различными аспектами системы взаимодействия:

Измененный вид обработки «Управление системой взаимодействия»

После этого, если у вас в интерфейсе выведена «Панель открытых», вы увидите новую вкладку «Обсуждения» рядом с вкладкой «Начальная страница»:

Новая вкладка «Обсуждения» рядом с вкладкой «Начальная страница»

Как альтернатива, если «Панели открытых» нет, можно перейти в обсуждения через панель оповещений, которая открывается по значку колокольчика в заголовке окна 1С:Предприятия:

Переход в обсуждения через панель оповещений, открываемую по значку колокольчика в заголовке окна 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. Минимальная установка — те блоки, без которых сервер взаимодействия в принципе «не взлетит».
  2. Дополнительные опции — компоненты, так или иначе расширяющие возможности.

Для минимальной установки необходимы:

  • Платформа «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:

  1. Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.172.24).
  2. Управление нашей фирмой, редакция 3.0 (3.0.10.235).

Подключение

В linux-среде все основные действия будем производить через терминал. Мы подключаемся с windows‑машины, поэтому можно использовать:

  • командную строку,
  • Windows PowerShell,
  • Putty.

Проще всего набрать в поиске cmd:

Ввод команды через cmd

В нашем случае мы воспользовались PowerShell и подключились по ssh следующей командой:

ssh <ИмяПользователя>@<ИмяСервера>

Ввод команды и подключение по ssh в PowerShell

Материалы

Путеводителем для нас в этом путешествии являлись следующие материалы с сайта ИТС:

  • Инструкция к продукту «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 -version

Если выводится сообщение, что команда java не найдена, переходим к следующему шагу:

Переход к следующему шагу при выводе «команда java не найдена»

Мы производим установку на ОС Debian 12, поэтому скачали пакет Liberica 11 Full JDK (64-bit) для DEB‑based Linux‑систем, версии 11.0.20+8 (releases.1c.ru/project/Liberica11FullJDK):

Установка Liberica 11 Full JDK (64-bit) версии 11.0.20+8 на ОС Debian 12 для DEB-based Linux-систем

И «перекинули» его на нашу linux‑машину с помощью программы WinSCP:

Передача пакета на Linux-машину с помощью программы WinSCP

Передать файл по сети можно и без дополнительных утилит с помощью консольной команды scp. Синтаксис передачи файла следующий:

scp <ПолныйПутьДоФайла> <ИмяПользователя>@<АдресСервера>:<ПутьНазначения>

Где ПолныйПутьДоФайла — полный путь до передаваемого файла на текущей машине, а ПутьНазначения — папка на удаленной машине, в которую файл хотим загрузить.

Пример для нашего случая выглядел бы так:

scp C:\Users\username\Downloads\bellsoft_jdk11.0.20_8_linux_amd64_full.deb username@username-cs-l:/home/username/

Далее возвращаемся к терминалу подключенному по ssh к виртуалке и переходим в домашнюю директорию, куда мы поместили .deb файл.

Чтобы установить deb-пакет можно использовать dpkg — менеджер пакетов Debian, с параметром «-i» — установка пакета:

sudo dpkg -i bellsoft_jdk11.0.20_8_linux_amd64_full.deb

Мы так и сделали, получив пачку ошибок настройки из‑за отсутствия необходимых пакетов, от которых зависит устанавливаемый:

Ошибки настройки из-за отсутствия необходимых пакетов, зависимых от устанавливаемого

Исправить эту ситуацию поможет команда:

sudo apt --fix-broken install

Apt — это тоже менеджер пакетов, но более высокоуровневый, и в своей основе он собственно использует dpkg. При вызове с параметрами --fix-broken install он попытается найти все проблемы, связанные с зависимостями, и доустановить недостающие пакеты.

Всё починилось:

Исправление ошибок зависимостей

Как альтернативу, мы могли бы изначально вместо dpkg вызвать такую команду:

sudo apt install ./bellsoft_jdk11.0.20_8_linux_amd64_full.deb

Обратите внимание, что apt install используется обычно применительно к пакетам из репозиториев и тогда параметром выступает просто имя пакета. В случае же, когда в неё необходимо передать deb‑файл, это нужно делать с указанием локального пути «./».

После установки проверяем снова версию java. Если видим подобный ответ, считаем миссию исполненной:

Проверка версии Java после установки и успешного завершения процесса

Установка переменной среды JAVA_HOME

В статье на ИТС «Настройка „1С:Сервера взаимодействия“ и медиасервера» на этом этапе предлагается установить переменную среды JAVA_HOME следующей командой:

export JAVA_HOME=<ПутьКПапкеУстановкиJava>

В нашем случае:

export JAVA_HOME=/usr/lib/jvm/bellsoft-java11-full-amd64/
Внимание

Внимание! Важно понимать логику работы с переменными среды в Linux. То, что введено через команду export, касается только текущего сеанса и только процессов запущенных под текущим пользователем. Это можно использовать в некоторых случаях, например, для однократного запуска установщика Сервера взаимодействия «1ce-installer-cli», т. к. для этого тоже нужен путь к java (its.1c.ru/db/inst10doc#content:10023:hdoc). О самом установщике мы поговорим чуть позже.

Но далее мы будем настраивать службы сервера взаимодействия, а они будут запускаться под отдельными пользователями, как системные службы systemd. Для них переменная JAVA_HOME также должна быть установлена, иначе при запуске служб можно поймать подобные ошибки:

Необходимость установки переменной JAVA_HOME для предотвращения ошибок при запуске служб сервера взаимодействия

Ошибки при необнаруженной переменной JAVA_HOME

Способов установить переменную среды несколько:

  • Для всех пользовательских сеансов.
    Можно указать эту переменную в файле /etc/environment:
    • Либо просто отредактировать файл:

      nano /etc/environment
    • Либо сразу добавить нужную строку в конец файла командой:

      sudo sh -c 'echo JAVA_HOME=<ПутьКJava> >> /etc/environment'

      Добавление переменной JAVA_HOME в файл /etc/environment

    • После этого, чтобы изменения стали доступны всем пользователям, нужно выполнить:

      source /etc/environment
  • Для конкретных пользователей.
    Можно добавить в свои личные настройки или в /.profile, или через /.basrc.
  • В настройке конкретной службы.
    Для этого нужно вызвать команду переопределения параметров службы:

    sudo systemctl edit <ИмяСлужбы>

    Например:

    sudo systemctl edit 1ce-hc-example.service

    И добавить секцию:

    [Service]
    Environment=JAVA_HOME=<ПутьКJava>

    Добавление секции [Service] с переменной JAVA_HOME в конфигурацию службы systemd

  • В конфигурации инстансов сервера взаимодействия.
    Именно этим путем пойдем мы, см. подробнее раздел «Установка параметра служб java‑home» ниже в статье.

curl

Утилита curl — специальный инструмент, который позволяет выполнять запросы к веб‑ресурсам из командной строки. Относительно сервера взаимодействия, curl используется для изменения настроек сервера взаимодействия верхнего уровня, и такие настройки хранятся на уровне основной базы данных. В отличии от утилиты ring, которая используется для базового конфигурирования инстансов и служб до запуска, причем настройки служб изменяются и хранятся в конфигурационных файлах.

Перейдём к описанию установки curl.

Для начала можно проверить, может быть эта утилита уже у вас установлена, командой:

curl -V

Проверка наличия установленной curl

В руководстве установки сервера взаимодействия на ИТС its.1c.ru/db/cs26doc#bookmark:cs:TI000000002 предлагается скачать утилиту по ссылке curl.haxx.se/download.html.

Но мы пошли по более простому пути и установили её из доступных репозиториев командой:

sudo apt install curl

На этот раз без приключений:

Установка curl из доступных репозиториев без ошибок

После установки проверяем снова версию. Версия не самая свежая, но это не принципиально:

curl -V

Проверка версии curl

PostgreSQL

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

Если у вас уже есть установленный PostgreSQL, можно использовать его. Тогда пункт «Установка» можно пропустить и сразу перейти к «Настройка — создание пользователя и базы данных PostgreSQL».

Установка

Для текущей установки мы используем 12‑ю версию PostgreSQL с патчами 1С, подготовленную командой PostgresPRO. После заполнения формы на сайте 1c.postgres.ru нам на почту прислали специальный скрипт подключения репозитория — pgpro-repo-add.sh.

Перекинем его уже известным способом через WinSCP или scp на целевую машину и выполним:

./pgpro-repo-add.sh

Далее обновляем информацию о доступных пакетах:

apt update

И устанавливаем PostgreSQL командой:

apt install postgrespro-1c-12

Во время установки такого пакета у нас автоматически:

  • Создался пользователь postgres.
  • Инициализировался кластер PostgreSQL в директории /var/lib/pgpro/12/data.
  • Создалась служба postgrespro-1c-12.service по пути /lib/sustemd/system, и запустилась.

Теперь можно найти, как называется наша служба:

systemctl -l | grep postgres

И убедиться, что она запущена и работает:

systemctl status postgrespro-1c-12.service

Поиск имени службы и проверка её статуса

На этом установка завершена.

Настройка — создание пользователя и базы данных PostgreSQL

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

Нам предстоит:

  1. Создать пользователя СУБД, которого сервер взаимодействия будет использовать для подключения. Важно, чтобы у этого пользователя были права на создание баз данных.
  2. Создать базу данных.
  3. Установить для БД специальное расширение uuid‑ossp.
  4. Назначить владельцем базы данных пользователя из п. 1.

Для этого нужно подключиться к кластеру PostgreSQL, используя утилиту psql под полноправным пользователем СУБД (обычно это пользователь «postgres»).

Переключаемся на этого пользователя командой su <ИмяПользователя> и запускаем psql:

Подключение к кластеру PostgreSQL с помощью утилиты 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";

Установка расширения uuid-ossp

4. Назначаем владельца базы данных

И наконец, назначаем пользователя cs владельцем базы данных cs_db, выдаем ему все права на неё:

ALTER DATABASE cs_db OWNER TO cs;
GRANT ALL PRIVILEGES ON DATABASE cs_db TO cs;

Назначение пользователя владельцем базы данных и выдача ему всех прав

Полный листинг команд в psql:

Полный листинг команд в psql

Имя базы данных, пользователя и пароль выпишем себе куда‑нибудь, так как эти параметры понадобятся нам для дальнейшей настройки:

Имя БД = cs_db
Пользователь БД = cs
Пароль пользователя БД = cs_password

1С:Сервер взаимодействия

Наконец все сторонние утилиты установлены, переходим к центральному элементу.

Установка дистрибутива

Файл дистрибутива «Сервер взаимодействия (64-bit) Linux» версии 26.0.54 для Linux мы скачали с releases.1c.ru/project/CollaborationSystem:

Установка дистрибутива

Там же имеет смысл скачать обработку для регистрации информационной базы, она пригодится нам позже.

Переносим дистрибутив в виде файла с расширением .gz на нашу машину username-cs-l с помощью WinSCP:

Перенос дистрибутива .gz на машину stanib-cs-l с помощью WinSCP

Далее переходим в терминал нашей виртуалки, в домашний каталог.

Файл с расширением .gz что мы скачали — это архив, нам нужно его распаковать.
Но чтобы не захламлять домашнюю директорию создадим отдельную папку:

mkdir CS_Distrib

И выполним команду распаковки в эту папку:

tar xvzf <ИмяАрхива> -C <ПутьКПапкеРаспаковки>

Где tar — утилита архиватор, как правило в linux-системах установлена по‑умолчанию.
Параметры:
xf — execute folder, команда означает распаковку.
z — указание на формат файла gzip.
v — с выводом информации на экран.

В нашем случае:

tar xvzf 1c_cs_26.0.53_linux_x86_64.tar.gz -C /home/username/CS_Distrib

После распаковки заходим в папку CS_Distrib и видим файл 1ce-installer-cli — это консольная версия установщика:

После распаковки в папке CS_Distrib обнаружен файл 1ce-installer-cli — консольная версия установщика

Запускаем установку, вызвав эту утилиту с параметром install:

sudo ./1ce-installer-cli install

И «благополучно» ловим ошибку цифровой подписи:

Запуск установки через утилиту 1ce-installer-cli с параметром install и возникновение ошибки цифровой подписи

Информацию по этой проверке мы найти не смогли, но мы были уверены, что скачали файл из надежного источника, поэтому повторили установку с параметром отключения проверки, как нам и предложила система:

sudo ./1ce-installer-cli install --ignore-signature-warnings

Более подробно о параметрах утилиты установщика можно почитать в статье на ИТС (its.1c.ru/db/inst10doc#content:10015:hdoc).

После этого установка дистрибутива завершилась успешно:

Установка дистрибутива завершилась успешно

Компоненты сервера взаимодействия установились в директорию /opt/1C/1CE/components:

Установка компонентов сервера взаимодействия в директорию /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:

Консольная утилита ring для настройки служб сервера взаимодействия

Далее приводим несколько советов при работе с данной утилитой.

Переменая среды PATH

Утилиту можно вызывать указывая полный путь, например так:

/opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/ring <параметры>

Но лучше иметь возможность обращаться к ней из любой директории по имени «ring», для этого нужно чтобы для текущего сеанса в переменной среды PATH присутствовал путь «/opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64/».

Доступные варианты мы уже описывали в п. «JAVA» -> «Установка переменной среды JAVA_HOME».

Для нас сгодится такой вариант:

export PATH=/нужный/путь:$PATH

Пример:

export PATH=/opt/1C/1CE/components/1c-enterprise-ring-0.19.5+12-x86_64:$PATH

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

Привилегированный вызов

Внимание
Внимание! Все команды с утилитой ring необходимо выполнять от пользователя root!

Чтобы переключиться на пользователя root можно воспользоваться командой:

sudo su

Возможные ошибки

У нас при первых запусках утилита выдавала ошибки такого вида:

Ошибки при первых запусках утилиты ring

Интернет подсказал нам, что необходимо установить программу gawk, такой командой: 

sudo apt install gawk

awk — утилита для различных операций над текстовыми файлами.
gawk — расширенная реализация этой утилиты для GNU систем.

После установки этой утилиты ошибки пропали.

Доступные команды

Справку по доступным командам ring для разных компонент можно получить командой:

ring <Компонент> help

Где «Компонент» принимает одно из значений — cs, hazelcast, elsticsearch.

Создание пользователей и каталогов для служб

Функционирование сервера взаимодействия завязано на трёх службах:

Три службы, обеспечивающие функционирование сервера взаимодействия: CS, Hazelcast и Elasticsearch

  1. CS — головная служба сервера взаимодействия.
  2. Hazelcast — распределенное хранилище в памяти, в котором обслуживаются сессии/очереди/события.
  3. Elasticsearch — служба поиска, обеспечивает полнотекстовый поиск и подбор пользователей.

Следующий этап — конфигурирование инстансов cs, hazelcast, elasticsearch.

Прежде этого нам нужно будет создать для них пользователей, указать имена служб, а также (опционально) указать для них рабочие папки.

В нашем случае пусть это будут:

  • Пользователи cs_user, hc_user, es_user.
  • Службы — cs-example, hc-example, es-example.
  • Папки — cs-workdir, hc-workdir, es-workdir.

Далее создаем пользователей, используя команду useradd:

sudo useradd cs_user
sudo useradd hc_user
sudo useradd es_user

Проверить список пользователей в системе можно посмотрев в файл /etc/passwd. Например, такой командой:

cat /etc/passwd | grep _user

cat — выводит содержимое файла на экран, grep фильтрует строки по вхождению «_user»:

Команда cat выводит содержимое файла, а grep фильтрует строки

Далее создаем рабочие папки служб командой mkdir, с параметром «-p», что позволит создать несколько каталогов друг в друге:

sudo mkdir -p /var/cs/cs-workdir
sudo mkdir -p /var/cs/hc-workdir
sudo mkdir -p /var/cs/es-workdir

И указываем каждой папке своего владельца:

sudo chown cs_user:cs_user /var/cs/cs-workdir
sudo chown hc_user:hc_user /var/cs/hc-workdir
sudo chown es_user:es_user /var/cs/es-workdir

После этого можем пройти в /var/cs и проверить выданные права командой ls, которая выводит список файлов/папок. С ключом -l выводится подробная информация, в том числе по группе и владельцу файлов:

cd /var/cs
ls -l

Проверка выданных прав в директории /var/cs с помощью команды «ls -l», которая выводит список файлов с подробной информацией

Инициализация служб

Теперь переходим непосредственно к созданию инстансов и сервисов для каждой компоненты cs/elasticsearch/hazelcast.

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

Для создания инстанса необходимо выполнить команду:

ring <Компонент> instance create --name <ИмяСлужбы> --dir <ПутьКРабочейПапкиСлужбы> --owner <ПользовательСлужбы>

Компонент может принимать значения cs, elasticsearch или hazelcast.

Параметры команды instance create аналогичны для всех компонент, вот пример для CS:

Параметры команды instance create аналогичны для всех компонент, пример для CS

Внимание
Важно! Параметр «--name» не является обязательным. Если он не указан, то имя инстанса будет совпадать с именем рабочей директории из параметра «–dir».

Вызываем команду создания для каждой компоненты:

ring cs instance create --name cs-example --dir /var/cs/cs-workdir --owner cs_user
ring hazelcast instance create --name hc-example --dir /var/cs/hc-workdir --owner hc_user
ring elasticsearch instance create --name es-example --dir /var/cs/es-workdir --owner es_user

При этом действии система создала в рабочих папках инстансов структуру подпапок и конфигурационных файлов:

Создание структуры папок и конфигурационных файлов

Также заполнилась конфигурация в файле /etc/1C/1CE/server-instances.cfg:

Заполнение конфигурации в файле /etc/1C/1CE/server-instances.cfg

Информацию об инициализированных инстансах и их рабочих папках можно посмотреть командой:

ring <Компонент> instance list

Просмотр информации об инициализированных инстансах и их рабочих папках

Следующим пунктом мы должны создать службы для каждого инстанса. Это делается командой:

ring <Компонент> --instance <ИмяСлужбы> service create --username <ПользовательСлужбы>

Параметры команды service create:

Параметры команды service create

Создадим службы:

ring cs --instance cs-example service create --username cs_user --stopped
ring hazelcast --instance hc-example service create --username hc_user --stopped
ring elasticsearch --instance es-example service create --username es_user --stopped
Внимание
Параметр --stopped важен — без него службы сразу попытаются запуститься, но сейчас делать это преждевременно, они ещё не настроены должным образом.

После этого действия в каталоге /etc/systemd/system/ появились файлы описания указанных служб. К их названию добавился префикс «1ce-»:

Создание служб для CS, Hazelcast и Elasticsearch с параметром «--stopped» и появление файлов описания в /etc/systemd/system/ с префиксом «1ce-»

Установка параметра служб java-home

Как мы писали выше в разделе JAVA, для работы служб сервера необходимо указать путь к папке установки Java. И это можно сделать через указание специального параметра java‑home в конфигурации служб.

Для этого нужно выполнить команду:

ring <Компонент> --instance <ИмяСлужбы> service java-home set <ПутьУстановкиJava>

В нашем случае «ПутьУстановкиJava» = /usr/lib/jvm/bellsoft-java11-full-amd64/.

Выполним для каждого инстанса:

ring cs --instance cs-example service java-home set /usr/lib/jvm/bellsoft-java11-full-amd64/
ring elasticsearch --instance es-example service java-home set /usr/lib/jvm/bellsoft-java11-full-amd64/
ring hazelcast --instance hc-example service java-home set /usr/lib/jvm/bellsoft-java11-full-amd64/

Удостовериться, что параметр заполнился можно такой командой:

ring <Компонент> --instance <ИмяСлужбы> service java-home get

Проверка заполнения параметра с помощью команды

Также параметр можно очистить, использовав метод clear:

ring <Компонент> --instance <ИмяСлужбы> service java-home clear

Настройка JDBC-драйвера

Теперь настроим конфигурацию JDBC‑драйвера.

JDBC (англ. Java DataBase Connectivity — соединение с базами данных на Java) — платформенно независимый промышленный стандарт взаимодействия Java‑приложений с различными СУБД.

Источник: ru.wikipedia.org/wiki/Java_Database_Connectivity.

Схема JDBC

В данном случае JDBC‑драйвер — это такая «прослойка» между сервером взаимодействия и СУБД PostgreSQL, которая дает возможность серверу выполнять запросы SQL. Если кратко, то мы должны «сообщить» службе сервера взаимодействия, в какой конкретно кластер PostgreSQL нужно стучаться, в какую базу, и с каким логином/паролем.

Заметка про «Зоны хранения»

При этом, забегая немного вперед, по нашим наблюдениям, сервер взаимодействия подразумевает разделение «зон хранения» на две части:

  1. Основная база — это БД, в которой хранятся настройки абонентов, приложений, и адресации хранения данных абонентов.
  2. Базы хранения данных абонентов — одна или несколько баз данных, в которых будут размещены уже прикладные таблицы с данными обсуждений, сообщений и т. д. Причем эти таблицы в PostgreSQL выделены в специальную схему, и такая база может совпадать с основной, просто данные настроек и данные абонента будут разведены по разным схемам.

В текущем разделе похоже, что мы настраиваем именно Основную базу, без неё сервер взаимодействия просто не запустится.

Настройка

Примечание: настройки JDBC задаются только в рамках центральной компоненты cs.

Напомним, ранее в разделе POSTGRESQL мы определили следующие параметры:

Имя БД = cs_db
Пользователь БД = cs
Пароль пользователя БД = cs_password

У сервера взаимодействия настройки JDBC‑драйвера имеют значения по‑умолчанию. Перед установкой собственных настроек предлагаем на них взглянуть. Это можно сделать командой:

ring cs --instance <ИмяСлужбыCS> jdbc pools --name <ИмяПула> list-params

ИмяПула — может принимать значения privileged и common.

Параметры команды:

Просмотр настроек JDBC-драйвера с помощью команды «ring cs --instance <ИмяСлужбыCS> jdbc pools --name <ИмяПула> list-params»

Вызовем эту команду для каждого пула:

ring cs --instance cs-example jdbc pools --name common list-params
ring cs --instance cs-example jdbc pools --name privileged list-params

Вызов команды для каждого пула

Проверяем, кластер postgresql у нас действительно развернут локально на порту 5432, имя пользователя cs совпадает, но вот имя базы и пароль другие.

Перенастроить их можно командой с методом set‑params:

ring cs --instance <ИмяСлужбыCS> jdbc pools --name <ИмяПула> set-params --<Параметр> <Значение>

Параметры команды:

Проверка настроек кластера PostgreSQL и перенастройка имени базы и пароля с помощью команды «ring cs --instance <ИмяСлужбыCS> jdbc pools --name <ИмяПула> set-params --<Параметр> <Значение>»

Назначим корректную строку подключения с базой «cs_db»:

ring cs --instance cs-example jdbc pools --name common set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public
ring cs --instance cs-example jdbc pools --name privileged set-params --url jdbc:postgresql://localhost:5432/cs_db?currentSchema=public

И заменим пароль на «cs_password»:

ring cs --instance cs-example jdbc pools --name common set-params --password cs_password
ring cs --instance cs-example jdbc pools --name privileged set-params --password cs_password

У нас не было необходимости менять имя пользователя, но если бы это было нужно, это можно сделать командами:

ring cs --instance cs-example jdbc pools --name common set-params --username cs
ring cs --instance cs-example jdbc pools --name privileged set-params --username cs

Снова проверяем установленные значения, теперь всё корректно:

Проверка установленных значений на корректность

Также эти параметры можно увидеть в рабочем каталоге инстанса cs в файле ../config/jdbc.yml:

Просмотр параметров JDBC в файле ../config/jdbc.yml рабочего каталога инстанса CS

Но похоже только те, что отличаются от значений по‑умолчанию.

Интерфейсы сервера взаимодействия

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

Для обмена информацией и конфигурирования в сервере взаимодействия есть несколько интерфейсов, т. е. ресурсов вида <ip_адрес>:<порт>, которые он прослушивает.

Всего таких интерфейса три (в скобках дано название из внутренних настроек):

  1. Рабочий (websocket) — служит для соединения с 1С:Предприятием, именно по этому адресу мы будем подключать базы 1С к серверу взаимодействия.
    По-умолчанию: 0.0.0.0:9094.
  2. Обслуживания (maintenance) — служит для управления настройками сервера взаимодействия, например, задания настроек подключения к медиасерверу, хранилищу файлов, списку баз хранения данных абонентов и т. д.
    По-умолчанию: 127.0.0.1:8087.
  3. Интеграции (integration) — используется при работе с внешними системами, например, для интеграции с мессенджерами ВК, Telegram и т. д.
    По-умолчанию: 127.0.0.1:8443.

Интерфейсы сервера взаимодействия

Получить текущие настройки можно следующей командой:

ring cs --instance <ИмяСлужбыCS> <ИмяИнтерфейса> list-params

Где ИмяИнтерфейса может принимать значения websocket, maintenance, integration.

Пример для нашего случая:

ring cs --instance cs-example websocket list-params

Пример команды для просмотра параметров websocket

При необходимости можно изменить параметры командой:

ring cs --instance <ИмяСлужбыCS> <ИмяИнтерфейса> set-params --hostname <Адрес>
ring cs --instance <ИмяСлужбыCS> <ИмяИнтерфейса> set-params --port <Порт>

Рабочий интерфейс (WebSocket)

WebSocket — протокол связи поверх TCP‑соединения, предназначенный для обмена сообщениями между браузером и веб‑сервером, используя постоянное соединение.
Источник: ru.wikipedia.org/wiki/WebSocket.

Доступные для настройки параметры рабочего интерфейса можно посмотреть в help:

Доступные для настройки параметры рабочего интерфейса

Согласно инструкции с ИТС предполагается, что может потребоваться донастроить параметры hostname и port (its.1c.ru/db/cs26doc/bookmark/cs/TI000000020).

Выше мы уже проверяли его значения по‑умолчанию:

ring cs --instance cs-example websocket list-params

Проверка значений по умолчанию

Параметры «hostname='0.0.0.0', port=9094» означают, что сервер взаимодействия будет принимать соединения через порт 9094 с любых ip‑адресов. Нас это устраивает, т. к. мы будем подключать 1С‑приложения к серверу взаимодействия на этой виртуальной машине username-cs-l извне.

Также эти параметры, или их часть, по-видимому, можно увидеть в рабочем каталоге инстанса cs в файле ../config/websocket.yml:

Просмотр параметров websocket в файле ../config/websocket.yml рабочего каталога инстанса CS

Внимание
Важно! С текущей настройкой рабочего интерфейса сервер будет работать с незащищенным протоколом WS, этот вариант подойдет для тестирования или использования в локальной сети. В иных же случаях лучше настроить работу с имеющим шифрование протоколом WSS. По нашему разумению, безопасность сервера взаимодействия достаточно обширная тема, постараемся осветить её в будущих статьях.

Интерфейс обслуживания (maintenance) — Параметры аутентификации по‑умолчанию

Взаимодействие с интерфейсом обслуживания осуществляется с помощью http‑запросов. Подробнее об этом опишем ниже в разделе «Подробнее про работу с утилитой curl». Здесь лишь уточним, что в большинстве случаев для этого требуется аутентификация, то есть в параметрах запроса должны быть переданы логин/пароль. По‑умолчанию для интерфейса заданы такие параметры:

  • логин — admin,
  • пароль — admin.

При необходимости эти параметры можно изменить, задав настройки http_security. Подробнее можно почитать на ИТС (its.1c.ru/db/cs26doc#bookmark:cs:TI000000091).

Запуск служб

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

На нашей виртуалке установлена Debian 12. По‑умолчанию в ней используется система инициализации systemd и для управления службами предназначена утилита systemctl. Однако в парадигме сервера взаимодействия подразумевается, что управление службами будет осуществляться не через systemctl, а через команды утилиты ring.

Доступен ряд команд следующего формата:

ring <Компонент> --instance <ИмяСлужбы> service <Команда>

Параметр «Команда» — может принимать значения start, stop, restart, status, create, delete (логика аналогична systemctl).

В инструкции на ИТС указана такая последовательность запуска служб:

  1. Hazelcast.
  2. Elasticsearch.
  3. CS.

Ради эксперимента мы пробовали и иной порядок, сервер всё равно успешно стартовал. Возможно, это не принципиально, но последовательность, при которой основной компонент cs стартует последним — логична, т. к. именно cs в своей работе использует hazelast и elasticsearch, а не наоборот.

Итак запустим службы:

ring hazelcast --instance hc-example service start
ring elasticsearch --instance es-example service start
ring cs --instance cs-example service start

В случае каких-то проблем может быть сообщение вида:

Пример сообщения об ошибке при возникновении проблем

В чем может быть причина:

  • Проверьте, выполняете ли вы запуск ring под пользователем root?
  • Указана ли переменная среды JAVA_HOME или параметр инстансов java‑home?
  • В иных случаях проанализируйте логи в папке logs/ внутри рабочей папки службы.

К примеру, для нашего случая пути к папкам логов такие:

/var/cs/cs-workdir/log
/var/cs/hc-workdir/log
/var/cs/es-workdir/log

В случае успешного запуска никакой «отбивки» не последует, проверить состояние службы можно командой service status, например:

ring cs --instance cs-example service status

Проверка состояния службы после запуска

Также можно проверить информацию по службе на уровне ОС, для этого можно выполнить команду:

systemctl status <ИмяСлужбы>

Обратите внимание, что в этом случае нужно указывать имя службы ОС, а не сервера взаимодействия. Например:

systemctl status 1ce-cs-example.service

Проверка состояния службы через systemctl с указанием имени службы ОС

Общий «градусник»

Также проверить работоспособность запущенного сервера взаимодействия можно запросом из утилиты curl:

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

Где localhost:8087 — адрес интерфейса обслуживания, если не изменяли настройки.

В ответном сообщении будет json с кратким статусом по подсистемам:

{"status":"UP",
"mainDbOk":true,
"allShardsOk":true,
"hazelcast":{"available":true,"members":["127.0.0.1:5701"]},
"elasticsearchOk":true,
"mediaClusterOk":false,"mediaServers":{},
"pushOk":false}

Заметка про порты hazelcast и elasticsearch

К слову, в этом выводе «градусника» можно заметить, что в настройке hazelcast фигурирует порт 5701.

Ради интереса можем проверить, какой процесс слушает этот порт, такой командой:

lsof -i :5701 | grep LISTEN

Ответ:

launcher 251846 hc_user 14u IPv6 1805506 0t0 TCP *:5701 (LISTEN)

Второй параметр 251846 — это PID процесса.

Далее можем узнать например путь к исполняемому файлу:

ps -p 251846 -o cmd=

Затем посмотреть свойства службы 1ce-hc-example.service и убедиться, что её основной PID как раз равен 251846:

systemctl status 1ce-hc-example.service

Проверка состояния службы через systemctl с указанием имени службы ОС

А слушает ли какие‑то порты Elasticsearch? Это можно выяснить так.

Посмотреть PID в статусе службы:

systemctl status 1ce-es-example.service

И вызвать команду:

lsof -p <PID> | grep LISTEN

Проверка, слушает ли Elasticsearch порты

Получается, что Hazelcast «слушает» порт 5701, а Elasticsearch — порты 9200 и 9300. Увы, способов повлиять на эти параметры через ring мы не нашли. Да и как‑то использовать информацию мы не сможем, но знать это полезно.

Подробнее про работу с утилитой curl

После запуска служб в Сервер взаимодействия можно вносить настройки, отправляя http‑запросы по интерфейсу обслуживания. Для этого нам пригодится утилита curl, которая позволяет делать http‑запросы из консоли.

Команда в базовом виде выглядит так:

curl –X <ТипЗапроса> –u <Аутентификация> –h <Заголовки> –d <Параметры> <Адрес>

Опишем основные способы работы с настройками.

Всё взаимодействие происходит посредством 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 — настройки подключенных медиа‑серверов.

Аутентификация

При обращении к интерфейсу обслуживания необходимо задать логин и пароль аутентификации. Для этого нужно добавить параметр:

-u <Логин>:<Пароль>

По-умолчанию это admin:admin, если не было перенастроено.

Как посмотреть настройку?

Нужно выполнить GET‑запрос:

curl -X GET -u <Логин>:<Пароль> " http://maintenance:port/admin/<РазделНастроек>"

Причем без параметра --X запрос по‑умолчанию считается типа GET, то есть его можно не указывать.

Пример получения настроек баз данных хранения данных абонентов:

curl -u admin:admin "http://localhost:8087/admin/bucket_server"

Как добавить настройку?

Нужно выполнить POST‑запрос:

curl -Sf -X POST -H "Content-Type: application/json" -d <Параметры> -u <Логин>:<Пароль> http://maintenance:port/admin/<РазделНастроек>

Где «--Sf» означает, что будут выводиться только не серверные ошибки.
«Параметры» — настройка в JSON‑формате.

Пример добавления настройки базы данных хранения данных абонентов:

curl -Sf -X POST -H "Content-Type: application/json" -d "{ \"url\" : \"jdbc:postgresql://localhost:5432/cs_db\", \"username\" : \"cs\", \"password\" : \"cs_password\", \"enabled\" : true }" -u admin:admin http://localhost:8087/admin/bucket_server

Хорошо, добавили мы настройку и поняли, что в ней что‑то не так. Как её изменить или удалить? Это зачастую бывает не очевидно и не так‑то просто.

В наших экспериментах сработали нижеуказанные способы.

Как изменить настройку?

Сначала нужно узнать идентификатор настройки. Для это выполняем GET‑запрос и в ответном сообщении находим нужный идентификатор:

Получение идентификатора надстройки через выполнение GET-запроса

Далее выполняем PUT‑запрос, вида:

curl -X PUT -H "Content-Type: application/json" -d <ИзмененныеПараметры> -u admin:admin http://localhost:8087/admin/<РазделНастроек>/<ИдентификаторНастройки>

Пример изменения логина и отключения базы данных хранения данных абонента:

curl -X PUT -H "Content-Type: application/json" -d "{ \"username\" : \"cs2\", \"enabled\" : false }" -u admin:admin http://localhost:8087/admin/bucket_server/40362bf2-5e65-47cf-abd9-be9384f1dc01

Как удалить настройку?

Выполнить DELETE‑запрос вида:

curl -X DELETE -u admin:admin http://localhost:8087/admin/<РазделНастроек>/<ИдентификаторНастройки>

Пример удаления настройки подключенного медиа‑сервера:

curl -X DELETE -u admin:admin http://localhost:8087/admin/media_server/f62d0ae9-3c0e-4506-bf1a-d4aacda0bebd
Внимание

Внимание! По нашему опыту не для всех настроек доступно удаление.

JSON-ответ GET-запроса с параметрами надстройки bucket_server

В этом случае скорее всего придется использовать изменение (PUT) с передачей «отключающего» флага в настройке. Например, для bucket_server это enabled.

Инициализация базы данных

Ранее в разделе настройки JDBC‑драйвера мы указали «Основную базу» данных сервера взаимодействия, в которой хранятся настройки абонентов, их связи с приложениями и пользователями, а также различные конфигурации опциональных систем — медиасерверов, файловых серверов и т. д.

Теперь после успешного запуска служб, необходимо инициализировать хотя бы одну базу для хранения данных абонентов. В самом простом случае эта база может совпадать с «Основной базой».

Под инициализацией здесь следует понимать добавление настройки базы в конфигурации сервера посредством POST запроса по адресу http://maintenance:port/admin/bucket_server с передачей параметров в JSON‑формате.

В нашем случае команда выглядела так:

curl -Sf -X POST -H "Content-Type: application/json" -d "{ \"url\" : \"jdbc:postgresql://localhost:5432/cs_db\", \"username\" : \"cs\", \"password\" : \"cs_password\", \"enabled\" : true }" -u admin:admin http://localhost:8087/admin/bucket_server

В ответ нам выдало сообщение в json‑формате, с данными добавленной настройки:

Ответ сервера в формате JSON с данными добавленной настройки

Все текущие настройки можно проверить командой, в ответ будет массив структур в JSON‑формате:

curl -u admin:admin "http://localhost:8087/admin/bucket_server"

Проверка всех текущих настроек с выводом массива структур в формате JSON через команду curl

[{"id":"40362bf2-5e65-47cf-abd9-be9384f1dc01",
"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:

curl -Sf -X POST -H "Content-Type: application/json" -d "{ \"url\" : \"jdbc:postgresql://localhost:5432/cs_db2\", \"username\" : \"cs\", \"password\" : \"cs_password\", \"enabled\" : true }" -u admin:admin http://localhost:8087/admin/bucket_server

В основной базе данных cs_db в таблице bucket_server при этом добавилась строка:

Добавление строки в таблицу bucket_server основной базы данных cs_db

Далее мы попробовали регистрировать приложения 1С в Сервере взаимодействия в разных вариациях. В итоге выяснили, что при регистрации приложения на нового абонента, для него закрепляется некий номер «корзины» — bucket_id. И в случае наличия более одной базы данных, данные каждого нового абонента размещаются в этих двух базах по очереди. При этом каждой базе соответствует своя схема «vb_subscriber_№», индекс которой не соответствует номеру корзины:

Таблицы размещения данных абонентов по разным схемам в базах данных при регистрации приложений 1С на сервере взаимодействия

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

Про размещение данных в таблицах и схемах СУБД мы расскажем в будущих статьях.

Подключение баз 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С-Рарус»

Есть вопросы по статье? Задайте их нам!

Рассылка «Новости компании»: узнавайте о новых продуктах, услугах и спецпредложениях

Посмотреть все рассылки «1С‑Рарус»

Поле не должно быть пустым
Электронная почта указывается только латиницей, обязательно должен присутствовать знак @, доменное имя не может быть короче двух символов

Посмотреть все рассылки «1С-Рарус»

Иконка «Предупреждение» Отправляя эту форму, Вы соглашаетесь с Политикой конфидециальности и даете согласие на обработку персональных данных компанией «1С-Рарус»

Заинтересованы в сотрудничестве?
Нужна консультация?
Свяжитесь с нами!