Почему не работает обработчик бота Системы взаимодействия и как справиться с зависшими фоновыми заданиями

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

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

Шаг 1. Анализ базовых настроек бота

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

  1. Создание объекта метаданных: В дереве конфигурации должен быть создан объект типа Бот.
  2. Интеграция: В пользовательском режиме (раздел «Функции для технического специалиста» — «Стандартные» — «Управление системой взаимодействия») должна быть создана интеграция, например, с Telegram.
  3. Назначение пользователя: В настройках бота крайне важно указать пользователя информационной базы, от имени которого будет выполняться программный код обработчика. Важный нюанс: рекомендуется использовать специально созданного «технического» пользователя, который не используется реальными сотрудниками для работы в интерфейсе. Это исключит конфликты прав и статусов активности в Системе взаимодействия.

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

Шаг 2. Инициализация обработчика: метод ВыполнитьОбработкуБотов()

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

Разберем основной инструмент — метод СистемаВзаимодействия.ВыполнитьОбработкуБотов(). Этот метод является «триггером», который сообщает платформе: «Пора начать обработку входящих сообщений для всех зарегистрированных в этой базе ботов».

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


// В модуле менеджера или общем модуле
Процедура ИнициализироватьОбработкуБотов() Экспорт
    // Проверяем, поддерживается ли функционал платформой
    // и запускаем процесс ожидания сообщений
    СистемаВзаимодействия.ВыполнитьОбработкуБотов();
КонецПроцедуры

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

Шаг 3. Феномен трех фоновых заданий

После вызова ВыполнитьОбработкуБотов() в консоли администрирования кластера 1С можно заметить появление трех фоновых заданий. Проанализируем, почему их именно три и почему они не завершаются:

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

Шаг 4. Проблема монопольного доступа и обновления конфигурации

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

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

Алгоритм действий для успешного обновления:

  1. Отключение регламентного задания: Сначала нужно остановить расписание, чтобы новые процессы не запустились после того, как вы убьете старые.
  2. Принудительное завершение сеансов: Необходимо зайти в Консоль администрирования кластера 1С (или воспользоваться обработкой «Блокировка соединений») и вручную завершить сеансы этих трех фоновых заданий.
  3. Программный способ: Если вы автоматизируете процесс обновления, используйте метод ЗавершитьСеанс() для удаления фоновых процессов, связанных с ботами, предварительно отобрав их по имени или метаданным.

Шаг 5. Оптимизация регламентного задания

Чтобы не плодить лишние сущности и не перегружать сервер, давайте выясним, как правильно настроить регламентное задание. Нет смысла вызывать ВыполнитьОбработкуБотов() каждую секунду. Достаточно убедиться, что процессы запущены.

Разберем пример более «умного» подхода к запуску:


Процедура РегламентноеЗаданиеОбработкиБотов() Экспорт
    
    // Платформа сама контролирует, запущены ли уже системные задания.
    // Если вызвать метод повторно, когда задания уже активны, 
    // новые плодиться не будут (в норме).
    // Однако для надежности можно обернуть в попытку-исключение.
    
    Попытка
        СистемаВзаимодействия.ВыполнитьОбработкуБотов();
    Исключение
        ЗаписатьЛогОшибки("Ошибка при инициализации ботов: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
    КонецПопытки;
    
КонецПроцедуры

Проанализируем ситуацию с лицензированием и версиями. Функционал ботов доступен не только в КОРП-версиях платформы. Основное требование — наличие сервера взаимодействия. Если вы используете публичный сервер wss://1с.dialog.me, убедитесь, что у сервера 1С есть стабильный выход в интернет и настроены необходимые сертификаты безопасности.

Резюме

Для того чтобы ваш бот начал обрабатывать сообщения, недостаточно просто описать алгоритм в модуле бота. Необходимо:

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

← На главную