Как настроить и использовать Систему взаимодействия 1С для отправки уведомлений с сервера на клиент?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Выбор между облачным сервисом и локальным сервером

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

  1. Облачный сервис «1С:Диалог». Это публичный сервер, поддерживаемый фирмой «1С». Он полностью бесплатен для использования в большинстве случаев. Единственные ограничения касаются объема передаваемых файлов и срока хранения истории сообщений (как правило, до 90 дней). Это идеальный вариант для малого и среднего бизнеса, а также для задач разработки.
  2. Локальный сервер взаимодействия. Это отдельное программное обеспечение, которое вы устанавливаете на свои мощности. Стоимость лицензии на один экземпляр сервера составляет 50 000 рублей. Этот вариант выбирают крупные корпорации, которым по политике безопасности запрещено передавать данные через внешние серверы (даже зашифрованные).

Проанализируем ситуацию: если ваша задача — просто отправлять уведомления и бюджет ограничен, использование сервиса 1С:Диалог будет оптимальным решением. Технически работа с облаком и локальным сервером из кода 1С практически не отличается.

Регистрация информационной базы в Системе взаимодействия

Для того чтобы начать работу, информационную базу необходимо зарегистрировать. Разберем этот процесс по шагам:

  1. Запустите информационную базу в режиме «1С:Предприятие».
  2. Перейдите в меню Функции для технического специалиста (ранее называлось «Все функции»).
  3. Найдите в списке стандартных функций пункт Управление системой взаимодействия.
  4. В открывшемся окне нажмите кнопку Регистрация.
  5. Вам потребуется указать адрес электронной почты. На него придет код подтверждения. Если вы используете облачный сервис, адрес сервера по умолчанию уже будет заполнен (wss://1cdialog.com).
  6. Введите полученный код и завершите регистрацию.

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

Программная отправка сообщений с сервера на клиент

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

Рассмотрим пример кода, который позволяет отправить сообщение конкретному пользователю. Для этого нам нужно сначала найти обсуждение (чат) с этим пользователем, а затем создать в нем сообщение.


// Пример функции для отправки уведомления пользователю
Процедура ОтправитьУведомлениеПользователю(ИмяПользователяПриемника, ТекстСообщения) Экспорт

    // 1. Получаем пользователя системы взаимодействия
    ПользовательПриемник = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователяПриемника);
    ИдентификаторПользователя = СистемаВзаимодействия.ПолучитьИдентификаторПользователя(ПользовательПриемник.УникальныйИдентификатор);

    // 2. Ищем существующее неконтекстное обсуждение (тет-а-тет)
    МассивУчастников = Новый Массив;
    МассивУчастников.Добавить(ИдентификаторПользователя);
    МассивУчастников.Добавить(СистемаВзаимодействия.ТекущийПользователь());

    Отбор = Новый ОтборСистемыВзаимодействия;
    Отбор.Участники = МассивУчастников;
    
    СписокОбсуждений = СистемаВзаимодействия.ПолучитьОбсуждения(Отбор);
    
    ПеременнаяОбсуждение = Неопределено;
    Если СписокОбсуждений.Количество() > 0 Тогда
        ПеременнаяОбсуждение = СписокОбсуждений[0];
    Иначе
        // Если обсуждения нет, создаем новое
        ПеременнаяОбсуждение = СистемаВзаимодействия.СоздатьОбсуждение();
        ПеременнаяОбсуждение.Участники = МассивУчастников;
        ПеременнаяОбсуждение.Записать();
    КонецЕсли;

    // 3. Создаем и отправляем сообщение
    НовоеСообщение = СистемаВзаимодействия.СоздатьСообщение(ПеременнаяОбсуждение.Идентификатор);
    НовоеСообщение.Текст = ТекстСообщения;
    НовоеСообщение.Записать();

КонецПроцедуры

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

Работа с вебхуками и внешними интеграциями

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

Выясним причину, почему это важно: интеграции позволяют связать 1С с внешним миром без написания сложных HTTP-сервисов вручную. Рассмотрим, как это работает:

Технические нюансы локальной установки

Если вы все же решили потратить 50 000 рублей и поставить свой сервер, проанализируем необходимые компоненты. Локальный сервер взаимодействия — это не просто .exe файл, а целый стек технологий:

  1. Java Runtime Environment (JRE): Сервер написан на Java, поэтому наличие среды исполнения обязательно.
  2. СУБД PostgreSQL: Даже если сама 1С работает на MS SQL Server, сервер взаимодействия требует именно PostgreSQL для хранения переписки.
  3. Elasticsearch: Этот инструмент необходим для обеспечения мгновенного полнотекстового поиска по тысячам сообщений.
  4. Hazelcast: Используется для обеспечения отказоустойчивости и масштабируемости (актуально для крупных кластеров).

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

Заключение

Система взаимодействия — это не только замена корпоративному мессенджеру, но и полноценная шина для передачи событий между сервером и клиентом. Использование бесплатного сервиса 1С-Диалог позволяет внедрить этот функционал без дополнительных затрат. Разберем еще раз ключевые объекты: СистемаВзаимодействия.СоздатьСообщение() — ваш основной инструмент для уведомлений, а Интеграции — способ связи с внешним миром.

← На главную