Почему в 1С:УНФ перестали автоматически отправляться СМС при смене статуса заказа и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет
← На главную

В работе с конфигурацией 1С:Управление нашей фирмой (УНФ) автоматизация коммуникаций с клиентами через СМС является одной из ключевых функций. Часто пользователи сталкиваются с ситуацией, когда настроенные правила рабочих процессов внезапно перестают работать: статусы заказов меняются (например, на «Готово» или «Оплачен»), но сообщения клиентам не уходят. При этом ручная отправка СМС из документа «Событие» продолжает функционировать исправно.

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

Разберем механизм работы рабочих процессов

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

  1. Система фиксирует изменение реквизита (статуса) документа ЗаказПокупателя.
  2. Проверяется соответствие правилу рабочего процесса.
  3. Если условие выполняется, запись о необходимости отправки попадает в специальный регистр сведений (очередь).
  4. С определенной периодичностью запускается регламентное задание Обработка правил рабочих процессов.
  5. Именно это задание считывает очередь и инициирует фактическую отправку сообщений через шлюз провайдера.

Если автоматика «вдруг» перестала работать, проблема, как правило, кроется на этапах 4 или 5.

Выясним причину остановки через Журнал регистрации

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

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

Проанализируем состояние регламентного задания

Одной из наиболее частых проблем в версиях УНФ 1.6.14 и смежных является самопроизвольное «исчезновение» или блокировка задания. Проверим список активных заданий:

  1. Перейдем в Администрирование — Обслуживание — Регламентные и фоновые задания.
  2. Найдем в списке Обработка правил рабочих процессов.
  3. Обратим внимание на колонку «Состояние» и «Дата окончания». Если задание помечено как «Выключено» или дата последнего запуска сильно отстает от текущего времени, значит, мы нашли корень проблемы.

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

Восстановление «пропавшего» задания

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

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

Также проверим настройку в самой конфигурации. Иногда помогает простое «передергивание» функциональной опции. Перейдем в CRM — Еще больше возможностей, найдем флаг «Использовать рабочие процессы», выключим его, сохраним настройки, а затем включим снова. Это инициирует процедуру обновления предопределенных данных.

Проблема файлового режима базы данных

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

  1. Для выполнения заданий должен быть запущен хотя бы один сеанс пользователя.
  2. Если используется механизм «Выделенного клиента», проверьте, запущен ли этот сеанс на сервере или компьютере, который выполняет роль сервера.
  3. Убедитесь, что компьютер не уходит в спящий режим в ночное время или периоды простоя.

Проверка блокировки регламентных заданий после копирования базы

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

Чтобы снять блокировку, выполним следующие шаги:

  1. Зайдем в Администрирование — Обслуживание — Блокировка работы пользователей.
  2. Проверим наличие галочки «Блокировка регламентных заданий включена». Если она установлена — снимем ее.

Технический анализ регистра очереди

Если регламентное задание работает, но СМС всё равно не уходят, проанализируем содержимое внутренних регистров. Через меню «Все функции» (или «Функции для технического специалиста») найдем регистр сведений, связанный с очередью рабочих процессов (название может варьироваться, например, ОчередьЗаданийРабочихПроцессов).

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


// Пример логики очистки зависших заданий через консоль кода
НаборЗаписей = РегистрыСведений.ОчередьЗаданийРабочихПроцессов.СоздатьНаборЗаписей();
// Установим фильтр по проблемным записям, если необходимо
// НаборЗаписей.Отбор.Состояние.Установить(Перечисления.СостоянияЗаданий.Ошибка);
НаборЗаписей.Записать(); // Очистка набора

После очистки «битых» записей новые события должны начать обрабатываться корректно.

Рекомендации по обновлению

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

← На главную