Часто в бизнес-процессах возникает необходимость отправлять одно и то же электронное письмо несколько раз в день по заданному расписанию (например, в 08:00, 12:00 и 16:00). Стандартный механизм отложенной отправки в 1С позволяет задать время, но не имеет встроенного планировщика для цикличного дублирования одного письма. Разберем детально, как решить эту задачу в конфигурации 1С:Управление торговлей, используя как типовые средства, так и программные доработки.
Прежде чем приступать к настройке, проанализируем, почему нельзя просто «зациклить» одно стандартное письмо. Архитектура Библиотеки стандартных подсистем (БСП) устроена так, что механизм отложенной отправки базируется на документе ЭлектронноеПисьмоИсходящее. Данный документ не предназначен для цикличной рассылки.
При обработке письма регламентным заданием по работе с почтой происходят следующие действия:
Повторная отправка этого же объекта логически некорректна. Документ фиксирует факт конкретной одинарной транзакции. Без программного изменения статуса и очистки идентификаторов сообщения отправить его заново невозможно. Поэтому нам нужно искать другие подходы.
Рассмотрим, как можно решить задачу, не прибегая к написанию кода. На форуме справедливо предложили самый простой ручной метод — «Создайте 3 письма». Если писем немного, этот способ имеет право на жизнь: вы просто создаете три документа ЭлектронноеПисьмоИсходящее и для каждого задаете свое время отложенной отправки.
Если же процесс нужно автоматизировать, разберем встроенные механизмы 1С:УТ:
Если типовые средства не закрывают ваши потребности, задачу решают через создание расширения. На форуме была высказана идея использовать регламентное задание и регистр сведений для хранения ссылки на письмо. Проанализируем этот подход и скорректируем его с учетом правильной архитектуры.
Хранить в регистре ссылку на само отправленное письмо — плохая практика, так как мы выяснили, что документ ЭлектронноеПисьмоИсходящее является одноразовым. Правильнее выстроить логику следующим образом:
ЭлектронноеПисьмоИсходящее.РаботаСПочтовымиСообщениями. Вы подготавливаете параметры и вызываете функцию отправки, передавая ей только что сгенерированный документ.Такой подход является самым надежным: он сохраняет корректную историю переписки в базе. В хронологии взаимодействий будет четко видно 3 отправленных письма (разные документы-транзакции), что полностью соответствует стандартам и не ломает типовые механизмы БСП.