При разработке современных конфигураций на платформе 1С:Предприятие 8.3 часто возникает задача создания внутреннего мессенджера или системы мгновенных оповещений. Вместо того чтобы писать решение с нуля на справочниках и регистрах, что является трудозатратным и неэффективным подходом, рассмотрим стандартный механизм платформы — Систему взаимодействия (СВ). Разберем по шагам, как настроить этот инструмент, какие возможности он предоставляет разработчику и как реализовать уведомления, которые пользователь точно не пропустит.
Проанализируем техническую составляющую. Система взаимодействия — это не просто часть программного кода, а отдельный программный компонент, работающий на протоколе WebSocket. Это обеспечивает мгновенную передачу данных между клиентами без необходимости постоянного опроса сервера (polling).
Существует два основных способа развертывания системы:
Прежде чем приступать к написанию кода, необходимо связать информационную базу с сервером взаимодействия. Проанализируем этот процесс. В пользовательском режиме (или через код) нужно перейти в раздел управления системой взаимодействия. Если используется облако, потребуется указать адрес электронной почты, на который придет код подтверждения.
Для программной регистрации в «голой» конфигурации можно использовать следующий метод:
ПараметрыРегистрации = СистемаВзаимодействия.СоздатьПараметрыРегистрацииИнформационнойБазы();
ПараметрыРегистрации.АдресЭлектроннойПочты = "admin@company.ru";
ПараметрыРегистрации.АдресСервера = "wss://1cdialog.com"; // или ваш локальный адрес
СистемаВзаимодействия.ЗарегистрироватьИнформационнуюБазу(ПараметрыРегистрации);
После успешной регистрации пользователям станут доступны стандартные функции обсуждений: создание чатов, видеозвонки и обмен файлами.
Теперь разберем ситуацию, когда нам нужно программно инициировать отправку сообщения от одного пользователя другому. В Системе взаимодействия существуют понятия Обсуждение и Сообщение. Рассмотрим пример кода для отправки уведомления:
// 1. Найдем или создадим обсуждение между двумя пользователями
МассивУчастников = Новый Массив;
МассивУчастников.Добавить(ПользовательА_Идентификатор);
МассивУчастников.Добавить(ПользовательБ_Идентификатор);
КлючОбсуждения = "Уведомление_О_Заказе_123"; // Произвольный уникальный ключ
Обсуждение = СистемаВзаимодействия.СоздатьОбсуждение();
Обсуждение.Ключ = КлючОбсуждения;
Обсуждение.Участники = МассивУчастников;
Обсуждение.Наименование = "Новое сообщение от системы";
Обсуждение.Записать();
// 2. Создадим и отправим само сообщение
НовоеСообщение = СистемаВзаимодействия.СоздатьСообщение(Обсуждение.Идентификатор);
НовоеСообщение.Текст = "Вам пришло новое сообщение от пользователя А. Пожалуйста, ознакомьтесь.";
НовоеСообщение.Записать();
По умолчанию Система взаимодействия генерирует всплывающее оповещение (пуш-уведомление) в нижнем углу экрана. Если вы хотите реализовать модальное окно, о котором спрашивал автор темы, необходимо использовать обработчики событий в модуле управляемого приложения.
Выясним, как заставить 1С реагировать на входящее сообщение программно. Для этого используется метод ПодключитьОбработчикОповещенияОНовыхСообщениях. В модуле управляемого приложения мы можем прописать логику, которая при получении сообщения определенного типа будет открывать модальную форму или выводить Предупреждение.
Процедура ПриНачалеРаботыСистемы()
// Подключаем обработчик
СистемаВзаимодействия.ПодключитьОбработчикОповещенияОНовыхСообщениях(Новый ОписаниеОповещения("ОбработкаНовогоСообщения", ЭтотОбъект));
КонецПроцедуры
Процедура ОбработкаНовогоСообщения(Сообщение, ДополнительныеПараметры) Экспорт
// Проверяем текст или ключ обсуждения
Если Найти(Сообщение.Текст, "ВАЖНО") > 0 Тогда
ПоказатьПредупреждение(, Сообщение.Текст, 0, "Новое уведомление!");
КонецЕсли;
КонецПроцедуры
Именно такой подход позволяет реализовать "непропускаемые" сообщения. Важно помнить: чрезмерное использование модальных окон может раздражать пользователей, поэтому используйте этот механизм только для критически важных оповещений.
Одной из мощнейших функций СВ является возможность привязки чата к конкретному документу или элементу справочника. Это называется контекстным обсуждением. Представьте, что менеджеры обсуждают конкретный счет прямо в его форме. История переписки сохраняется в привязке к этому счету и видна всем, кто имеет к нему доступ.
Для реализации такой функции достаточно в свойствах формы установить флаг «Контекстное обсуждение» и указать основной реквизит (например, Объект.Ссылка). Платформа сама создаст чат и обеспечит его работу.
Рассмотрим расширенные возможности, которые появились в последних версиях платформы (8.3.23 и выше). Система взаимодействия позволяет интегрировать 1С с Telegram и VK. Это означает, что сообщения из внешнего мессенджера будут приходить в интерфейс 1С, а ответ менеджера уйдет обратно пользователю в Telegram.
Для создания чат-ботов используется объект БотСистемыВзаимодействия. Бот может:
Проанализируем современные возможности интерфейса. Начиная с последних релизов, разработчики могут программно управлять реакциями на сообщения. Если в теме форума упоминалась необходимость триггера на определенный эмодзи, это стало возможным через анализ свойств сообщения. Также реализована поддержка цитирования (тредов) и редактирования сообщений, что делает работу в 1С такой же удобной, как в привычных мессенджерах.
Таким образом, для реализации задачи автора нет необходимости писать сложный код на формах. Использование Системы взаимодействия предоставляет готовую инфраструктуру с поддержкой мобильных клиентов, видеосвязи и интеграции с внешним миром, требуя лишь минимальной настройки и использования встроенного языка для специфических уведомлений.