Ошибка протокола системы взаимодействия 1с

Обновлено: 02.07.2024

В начале апреля фирма «1С» выпустила новую версию платформы – 8.3.10.

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

Если коротко, то это Skype (или Telegram) внутри конфигурации 1С. О таком корпоративном мессенджере давно мечтали руководители и IT-шники :)

Начнем рассмотрение Системы взаимодействия с самых основ.

Концепция

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

Рисунок 1 – Упрощённая схема трёхзвенной архитектуры

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

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

Но давайте вернёмся к «Системе взаимодействий»! Для начала обратимся к документации и посмотрим – что же скрывается под таким громким названием?

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

Исходя из описания, получается что фирма «1С» встроила в платформу «мессенджер» для общения пользователей между собой. «Наконец-то!» – воскликнут одни. «Зачем?» – вопрошают другие. Оставим эту дискуссию для комментариев, а пока продолжим рассматривать «Систему взаимодействий» дальше.

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

Рисунок 2 – Схема многопользовательского варианта работы «1С:Предприятие»

Но! Клиентские процессы работают каждый в своей рабочей области и не имеют пересечений. Единственная возможность передачи информации – через серверную часть.

Рисунок 3 – Схема запуска клиентской частью обработчика ожидания для периодического запроса к серверной части

Как видим, общение клиентских частей таким образом возможно, но оно имеет свои особенности.

Но самое главное: увеличится нагрузка на самое узкое место системы – соединение между клиентом и сервером (особенно в момент передачи потока медиа). Поэтому фирме «1С» надо было найти иное решение задачи взаимодействия пользователей.

Рисунок 8 – Схема серверной части «Системы взаимодействий». Первое приближение

Встроить этот «маршрутизатор» в серверную часть «1С:Предприятие», по уже понятным нам причинам, нецелесообразно. Поэтому («в-третьих»), дополнительно необходимо определиться с расположением серверной части «Системы взаимодействий».

Итак, у нас получилось несколько «пазлов», сложив которые, мы увидим полную картину о «Системе взаимодействий». Давайте прямо сейчас это и сделаем!

Вопрос с оперативной двусторонней передачей информации между клиентом и сервером «Системы взаимодействий» решился без «изобретения велосипеда»: на помощь пришёл современный протокол WebSocket (далее WS). В качестве «вишенки на торте» – этот протокол позволяет передавать информацию в зашифрованном виде, что обеспечивает защиту передаваемой информации.

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

Сложив всё вместе, получаем следующую схему:

Рисунок 9 – Схема работы «Системы взаимодействий». Первое приближение

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

Но как «Система взаимодействий» узнает о пользователях информационной базы, если это отдельный сервис?

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

Рисунок 10 – Схема работы «Системы взаимодействий». Второе приближение

Получается, что все желающие будут пользоваться одним «маршрутизатором»? Как это возможно, как не запутаться – где чья информационная база и кому можно управлять её подключением к сервису?

Рисунок 11 – Схема серверной части «Системы взаимодействий». Второе приближение

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

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

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

Внимание! К моменту публикации этой статьи фирма «1С» уже опубликовала некоторые особенности платформы 8.3.11, в которых сообщается об изменении механизма работы «Системы взаимодействий» в части видеовызовов.

В платформе 8.3.10 технология видеозвонков была реализована при помощи центрального видео-сервера, встроенного в сервер «Системы взаимодействий». Скорее всего, тестирование данного механизма показало большую нагрузку на серверную часть «Системы взаимодействий» при совершении пользователями звонков. И уже в следующей версии платформы [8.3.11] видеовызовы будут выполняться по технологии peer-to-peer.

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

Ну что, наверное уже хочется попробовать «Систему взаимодействий»? Сейчас мы расскажем, как начать её использовать.

Подключение

Начать работать с «Системой взаимодействий» можно на любой, даже пустой, конфигурации, если используется платформа «8.3.10». Для этого необходимо убедиться, что свойство Режим совместимости установлено в значение Не использовать:

Рисунок 12 – Настройка режима совместимости конфигурации

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

Рисунок 14 – Меню подключения к «Системе взаимодействий»

В случае, если информационная база ещё не подключена к сервису «1С:Диалог», откроется следующая форма:

Рисунок 15 – Окно управления подключением к «Системе взаимодействий». Подключение отсутствует Рисунок 16 – Окно управления подключением к «Системе взаимодействий». Запрос кода регистрации

Когда вы укажете адрес электронной почты, на который сервис «1С:Диалог» сможет выслать регистрационную информацию, на него придёт письмо примерно следующего содержания:

Рисунок 17 – Пример письма с кодом регистрации в «Системе взаимодействий»

Цифровой код из письма (на рисунке подсвечен желтым цветом), необходимо использовать для завершения регистрации при помощи диалогового окна подтверждения регистрации следующего вида:

Интуитивно понятно, что в поле Адрес электронной почты абонента необходимо указать электронную почту, которая была использована на первом шаге регистрации, а в поле Код регистрации – код из письма. При указании некорректных данных в этих полях ввода «Система взаимодействий» вернёт ошибку «Отказано в доступе» и регистрация не будет завершена.

Поле Наименование информационной базы заполняется произвольными символами (как показала практика, можно использовать даже спец. символы).

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

Рисунок 19 – Окно управления подключением к «Системе взаимодействий». Успех!

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

  • Регистрационный номер лицензионной программы 1С и ИНН организации, на которую приобреталась эта программа
  • Электронную почту абонента сервиса
  • Планируемое количество пользователей.

Каждая заявка анализируется, и по результатам рассмотрения открывается доступ к видео-вызовам или присылается отказ.

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

Использование «Системы взаимодействий» «в картинках»

А теперь заглянем в использование системы. Но только совсем чуть-чуть… Как говорится – «для затравочки»!

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

$ tar xvzf 1c_cs_10.0.47_linux_x86_64.tar.gz
$ tar xvjf postgresql_11.5_19.1C_x86_64_rpm.tar.bz2

$ sudo ./1ce-installer-cli install

$ sudo passwd postgres

$ su postgres
$ /usr/pgsql-11/bin/initdb -D /var/lib/pgsql/11/data
$ psql

$ exit
$ sudo systemctl enable postgresql-11
$ sudo systemctl start postgresql-11

Проверить, что все запустилось: Копировать в буфер обмена

При необходимости смотреть логи: Копировать в буфер обмена

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

Для обмена файлами в системе взаимодействия необходимо подключиться на сервере взаимодействия к хранилищу файлов. Хранилище должно поддерживать протокол S3 (V2 или V4).

Можно развернуть собственное хранилище:

Или подключиться к существующим:

  1. Amazon
  2. Amazon CDN
  3. Google Cloud
  4. Google Cloud CDN
  5. Croc Cloud
  6. Техносерв

Необходимо выбрать только один вариант использования хранилища файлов:

$ sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent
$ sudo firewall-cmd --reload

Для доступа к серверу хранилища, необходимо задать логин и пароль в переменных среды MINIO_ACCESS_KEY и MINIO_SECRET_KEY, соответственно. Чтобы значения этих переменных устанавливалиь при старте, занесем их инициализацию в /etc/default.
Копировать в буфер обмена

$ sudo vi /etc/default/minio

$ sudo vi /etc/systemd/system/minio.service

[Service]
WorkingDirectory=/usr/local/
User=user
Group=user
EnvironmentFile=/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"$\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/opt/minio/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
LimitNOFILE=65536
TimeoutStopSec=infinity
SendSIGKILL=no

$ sudo systemctl enable minio.service
$ sudo systemctl start minio.service

Создайте новое хранилище, например cs-bucket

Логин: значение переменной MINIO_ACCESS_KEY,
Пароль: значение переменной MINIO_SECRET_KEY

В данном примере будет использоваться хранилище Amazon

Если вы планируете работать в web-клиенте, то необходимо настроить CORS:

  1. Откройте хранилище в браузере (или перейдите по ссылке https://console.aws.amazon.com/s3/buckets/<имя_хранилища>/?region=eu-west-1)
  2. Permissions / CORS Configuration
  3. Настройка с максимальным уровнем доступа:

    <?xml version="1.0" encoding="UTF-8"?>
    <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
    </CORSRule>
    </CORSConfiguration>

  4. На сервере взаимодействия выполните команду Копировать в буфер обмена

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


Подключение медиасервера для проведения видеоконференций

$ sudo yum install git

$ sudo yum install epel-release
$ sudo yum install wget ninja-build meson jansson-devel openssl-devel libsrtp-devel sofia-sip-devel glib2-devel opus-devel libogg-devel libcurl-devel pkgconfig gengetopt libconfig-devel libtool autoconf automake cmake
$ sudo yum groupinstall 'Development Tools'

/distr
$ git clone https://libwebsockets.org/repo/libwebsockets
$ cd libwebsockets
$ mkdir build
$ cd build
$ cmake -DLWS_MAX_SMP=1 -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" -DLIB_SUFFIX=64 ..
$ make && sudo make install

$ sudo mkdir /var/log/janus
$ sudo vi /opt/janus/etc/janus/janus.jcfg

$ sudo vi /opt/janus/etc/janus/janus.plugin.videoroom.jcfg

$ sudo vi /etc/systemd/system/janus.service
[Unit]
Description=Janus WebRTC Server
After=network.target

$ sudo systemctl enable janus.service
$ sudo systemctl start janus.service

$ sudo firewall-cmd --zone=public --add-port=8088/tcp –permanent
$ sudo firewall-cmd --zone=public --add-port=0-65535/udp –permanent
$ sudo firewall-cmd –reload

mediaserver - имя машины или IP-адрес сервера Janus.

Для проверки, что конференция идет через медиасервер, необходимо создать конференцию с числом участников >= значения параметра conference-server-based-threshold. После того, как все участники конференции ответят на звонок, выполнить команду:

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

Сервер 1С Предприятия установлен на Linux Ubuntu 16.04
Аппаратные характеристики сервера 1C предприятия: 22vCPU, 132 GB RAM, SSD-диск

База данных: PostgresSQL на Linux Ubuntu 16.04
Аппаратные характеристики сервера 1C предприятия: 18vCPU, 112 GB RAM, SSD-диск

Сервер взаимодействия установлен на Linux Ubuntu 16.04
Аппаратные характеристики сервера взаимодействия: 2vCPU, 4GB RAM

Имеется проблема с Системой взаимодействия, которая заключается в следующем: при одновременной работе более 50 пользователей новые пользователи могут авторизоваться, после чего у них интерфейс приложения 1С "зависает", невозможно переходить в меню и пункты. В некоторых случаях помогает удаление пользовательского кэша 1С на компьютере, после чего можно зайти 1 раз, на этом компьютере, следующие попытки войти снова приводят к зависанию.

Если остановить сервер взаимодействия или обработкой отменить регистрацию системы взаимодействия - конфигурация начинает работать нормально. Если перезапустить систему взаимодействия - платформа непродолжительное время может работать нормально, от 30 минут до 2 часов, после чего снова начинаются зависания. Время проявления зависания уменьшается если одновременно заходит большое количество пользователей, от 50-100 человек. При этом деградации производительности во время зависания ни на одном сервере не наблюдается, работа серверов стабильна, есть достаточное количество свободной оперативной памяти и ядер.

Проблема началась после перехода на на платформу 8.3.13.1644 и сервер взаимодействия версии 4.0.73, а затем и на 8.3.13.1690 и 5.0.37. Ранее, до перехода на 8.13, на платформах, включая 8.3.12.1685 - всё работало нормально.

Когда были платформы до 8.3.12 - использовали PostgreSQL 9.6.3 и для сервера взаимодействия, и для сервера базы данных. После обновления платформы до 8.3.13.1644 проблема с зависанием появилась при использовании PostgreSQL 9.6.3, после чего обновили PostgreSQL до версии 11.1 на сервере баз данных, и до последней версии в ветке 9.6 - на сервере взаимодействия. Проблема так и сохранилась, и от версии PostgreSQl не зависит.

Устанавливали сервер взаимодействия заново, на чистую систему, без обновления существующей установки сервера взаимодействия.

Вопросы: куда копать, что смотреть? В конфигурации установлен режим совместимости с 8.3.11, может ли это меть влияние? Как ограничить количество подключений пользователей к серверу взаимодействия? В техподдержку 1с написал, ответ жду уже больше месяца, результата пока нет.

Система взаимодействия — это механизм появившийся в технологической платформе 8.3.10. Это механизм позволяет клиентским приложениям, серверу и пользователям взаимодействовать между собой. В этой статье я попробую рассказать обо всем этом более подробно.

Общая информация

Итак, как уже было сказано выше, система взаимодействия позволяет осуществлять различные виды взаимодействия между приложениями, сервером и пользователями. Цель создания такой системы — упростить автоматизацию бизнес-процессов и предоставить пользователям простое средство коммуникации.

По видам, взаимодействия можно разделить на:

  • Не интерактивные — когда информацией обмениваются только подсистемы прикладного решения (без участия живых людей);
  • Только интерактивные — когда все участники взаимодействия являются живыми людьми;
  • Смешанные — когда человек общается с подсистемой прикладного решения (своего рода робот, отвечающий на запросы).

Неконтекстные обсуждения — не привязанные к какому-либо объекту информационной базы. Участвовать могут любые пользователи выбранные инициатором обсуждения. Обсуждений такого вида может быть сколько угодно.

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

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

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

    ; ;
  • Ring;
  • Сервер взаимодействия (64-bit);

Ring и сервер взаимодействия

Ring и сервер взаимодействия

Сервер взаимодействия включает в себя севера Hazelcast и Elasticsearch, которые можно скачивать и устанавливать отдельно, но в нашем случае я выбрал общий вариант.

Во время установки потребуется ввести логин и пароль от учетной записи PostgreSQL.

Проверка состояния сервера взаимодействий

Проверка состояния сервера взаимодействий

Запустить и остановить компоненты системы можно как и все остальные службы:

Службы сервера взаимодействий

Службы сервера взаимодействий

А также при помощи утилиты Ring:

ring hazelcast --instance <hc_instance> service start(stop)
ring elasticsearch --instance <elastic_instance> service start(stop)
ring cs --instance <cs_instance> service start(stop)

<hc_instance>, <elastic_instance>, <cs_instance> — название экземпляра соответствующего сервера.

Настройки сервера взаимодействий в моем случае находятся тут:

В этой папке находится достаточно много файлов и соответственно немало настроек, описывать которые в этой статье я не буду, ибо статья обзорная. Небольшие изменения внесу только в файл com._1c.ecs.websocket.yml :

Настройка WebSocket

Настройка WebSocket

Изменить параметры можно при помощи утилиты Ring. Подробнее об имеющихся параметрах можно узнать на сайте ИТС или из справки утилиты Ring:

Подключение и использование

Для подключения к собственному серверу взаимодействий потребуется специальная обработка — CollaborationSystemRegister.epf , которую можно скачать там же, где и сам сервер. В этой обработке нужно указать адрес для подключения (который настраивается в файле com._1c.ecs.websocket.yml ) и адрес эл. почты:

Читайте также: