В процессе работы с конфигурацией 1С:Управление нашей фирмой (УНФ) версии 1.6.11 на платформе 8.3.16 пользователи часто сталкиваются с ситуацией, когда автоматические уведомления через рабочие процессы не уходят клиентам. Проблема проявляется следующим образом: система исправно создает документ Событие, заполняет шаблон и все необходимые поля, но устанавливает статус «Запланировано». При этом ручная отправка из того же документа проходит успешно. Разберем по шагам, почему это происходит и как настроить систему для корректной работы.
Для начала проанализируем разницу между отправкой электронных писем и SMS. В системе 1С механизмы почты и SMS-рассылок часто разделены программно. Если для электронной почты может быть установлен флаг «Отправлять письма сразу», то SMS в УНФ практически всегда проходят через очередь. Рассмотрим подробнее, как это работает:
Событие с типом SMS.Если статус не меняется на «Завершено», значит, цепочка прерывается на последнем этапе. Выясним причину, проверив регламентные задания.
В старых релизах УНФ (включая 1.6.11) за отправку отвечает задание, которое может называться Отправка SMS или входить в состав общего задания Рассылка сообщений. Посмотрим на список регламентных заданий через раздел «Администрирование — Обслуживание — Регламентные операции». Если вы не находите там нужного задания, проанализируем следующие моменты:
Рассмотрим ситуацию, когда «руками все отправляется», а автоматически — нет. Это классический индикатор проблемы контекста выполнения. Ручная отправка выполняется на стороне клиента (вашего ПК), а автоматическая — на стороне сервера 1С под учетной записью службы (например, USR1CV8).
Проанализируем возможные препятствия на стороне сервера:
inetcfg.xml на сервере или в константах базы данных.Если регламентное задание работает, но «не видит» созданные рабочими процессами события, мы имеем дело с багом конкретного релиза. В версии 1.6.11 рабочие процессы могли создавать документ Событие, но не проставлять ему скрытый признак готовности к отправке. Разберем, как это исправить программно.
Нам необходимо модифицировать логику создания события так, чтобы после записи документа сразу вызывался метод отправки. Рассмотрим пример кода, который можно добавить в модуль объекта Событие или в место вызова из рабочего процесса:
// В процедуре после записи события или в обработчике рабочего процесса
Если ЭтоНовый() И ТипСобытия = Перечисления.ТипыСобытий.SMS Тогда
// Устанавливаем параметры и вызываем процедуру отправки из общего модуля
ПараметрыОтправки = СообщенияSMS.ПодготовитьSMSКОтправке(Ссылка);
Если ПараметрыОтправки.Подготовлено Тогда
Результат = СообщенияSMS.ОтправитьSMS(ПараметрыОтправки);
// Если отправка прошла успешно, обновляем статус документа
Если Результат.Успешно Тогда
ОбъектСобытие = Ссылка.ПолучитьОбъект();
ОбъектСобытие.Состояние = Перечисления.СостоянияСобытий.Завершено;
ОбъектСобытие.ДатаИсполнения = ТекущаяДата();
ОбъектСобытие.Записать();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Использование этого метода позволяет обойти очередь ожидания и заставить систему отправить сообщение немедленно, аналогично тому, как это происходит с электронными письмами. Мы рекомендуем использовать общий модуль СообщенияSMS, так как в нем уже реализованы все необходимые проверки авторизации на шлюзе.
Выясним еще одну причину: в старых релизах при создании события через фоновое задание (которым является рабочий процесс) мог не заполняться реквизит Учетная запись или Настройка SMS. Если в системе настроено несколько провайдеров, фоновое задание «не знает», через какой именно канал отправить сообщение, и оставляет его в очереди.
Проверьте, чтобы в шаблонах SMS, используемых в рабочих процессах, была жестко указана настройка отправки SMS. Если поле остается пустым, регламентное задание пропустит такую запись, считая её недооформленной.
Подводя итог, если вы столкнулись со статусом «Запланировано», выполните следующие действия:
ОтправитьSMS непосредственно в момент создания документа рабочим процессом.Такой комплексный подход позволит автоматизировать коммуникации с клиентами и избежать «зависания» важных уведомлений в системе.