Разработка ботов для Системы взаимодействия в среде 1С:Предприятие 8.3 — это мощный инструмент для автоматизации коммуникаций, однако процесс его настройки часто вызывает вопросы у разработчиков. Типичная ситуация: бот создан, интеграция с мессенджером (например, Telegram) настроена, пользователь назначен, но обработчик сообщений упорно «молчит». В этой статье мы подробно разберем, какие шаги необходимо предпринять для инициализации работы бота, выясним, почему в списке активных сеансов внезапно появляются три неубиваемых фоновых задания, и научимся обновлять конфигурацию в таких условиях.
Прежде чем приступать к программному коду, давайте проанализируем, правильно ли выполнены предварительные действия в интерфейсе и метаданных. Для корректной работы бота должны быть соблюдены следующие условия:
Бот.Если все пункты выполнены, но записи в журнале регистрации (которые мы предусмотрительно добавили в обработчик) не появляются, значит, система просто не «опрашивает» сервер на предмет новых сообщений. Рассмотрим, как это исправить.
Многие разработчики ожидают, что платформа будет вызывать обработчик бота автоматически «из коробки», как только сообщение поступит на сервер взаимодействия. Однако в клиент-серверном варианте работы (особенно начиная с версии платформы 8.3.18) требуется явная команда на запуск процесса прослушивания очереди сообщений.
Разберем основной инструмент — метод СистемаВзаимодействия.ВыполнитьОбработкуБотов(). Этот метод является «триггером», который сообщает платформе: «Пора начать обработку входящих сообщений для всех зарегистрированных в этой базе ботов».
Для того чтобы бот работал постоянно, этот метод необходимо вызывать в рамках регламентного задания. Рассмотрим пример реализации:
// В модуле менеджера или общем модуле
Процедура ИнициализироватьОбработкуБотов() Экспорт
// Проверяем, поддерживается ли функционал платформой
// и запускаем процесс ожидания сообщений
СистемаВзаимодействия.ВыполнитьОбработкуБотов();
КонецПроцедуры
Как только этот код будет исполнен (например, через регламентное задание с расписанием «раз в минуту»), платформа инициирует сеансы обработки. И тут мы сталкиваемся со следующей технической особенностью.
После вызова ВыполнитьОбработкуБотов() в консоли администрирования кластера 1С можно заметить появление трех фоновых заданий. Проанализируем, почему их именно три и почему они не завершаются:
Важный вывод: Эти задания не являются «зависшими» в плохом смысле этого слова. Это штатное состояние системы, обеспечивающее реакцию бота в режиме реального времени. Однако именно это поведение создает сложности при необходимости обновить конфигурацию или выполнить другие действия в монопольном режиме.
Рассмотрим ситуацию: вам нужно обновить информационную базу. Вы выключаете регламентное задание, которое вызывает ВыполнитьОбработкуБотов(), но три фоновых задания продолжают висеть в списке активных сеансов. Попытка установить блокировку соединений или получить монопольный доступ заканчивается неудачей.
Проанализируем причины. Регламентное задание лишь запускает процесс обработки, но само оно завершается быстро. А вот инициированные им системные фоновые задания (те самые три процесса) живут своей жизнью. Они не привязаны к выполнению регламентного задания напрямую и не завершаются при его отключении.
Алгоритм действий для успешного обновления:
ЗавершитьСеанс() для удаления фоновых процессов, связанных с ботами, предварительно отобрав их по имени или метаданным.Чтобы не плодить лишние сущности и не перегружать сервер, давайте выясним, как правильно настроить регламентное задание. Нет смысла вызывать ВыполнитьОбработкуБотов() каждую секунду. Достаточно убедиться, что процессы запущены.
Разберем пример более «умного» подхода к запуску:
Процедура РегламентноеЗаданиеОбработкиБотов() Экспорт
// Платформа сама контролирует, запущены ли уже системные задания.
// Если вызвать метод повторно, когда задания уже активны,
// новые плодиться не будут (в норме).
// Однако для надежности можно обернуть в попытку-исключение.
Попытка
СистемаВзаимодействия.ВыполнитьОбработкуБотов();
Исключение
ЗаписатьЛогОшибки("Ошибка при инициализации ботов: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецПроцедуры
Проанализируем ситуацию с лицензированием и версиями. Функционал ботов доступен не только в КОРП-версиях платформы. Основное требование — наличие сервера взаимодействия. Если вы используете публичный сервер wss://1с.dialog.me, убедитесь, что у сервера 1С есть стабильный выход в интернет и настроены необходимые сертификаты безопасности.
Для того чтобы ваш бот начал обрабатывать сообщения, недостаточно просто описать алгоритм в модуле бота. Необходимо:
СистемаВзаимодействия.ВыполнитьОбработкуБотов() в контексте серверного вызова (через регламентное задание).Следуя этим правилам, вы обеспечите стабильную работу системы взаимодействия и сможете оперативно вносить изменения в конфигурацию без технических заминок.