Простые подсистемы. Управление контактными сообщениями: регистрация и последующая отправка сообщений из 1С (E-Mail, SMS)


Вариант реализации интерфейса рассылки сообщений из 1С, удобная «обёртка» для методов БСП.
Подсистема, умеющая отправлять по регламентному заданию зарегистрированные ранее к отправке сообщения SMS или E-Mail.

Подсистема может решать следующие задачи:
1. Единый интерфейс отправки сообщений в системе
2. Контроль рассылки не из продуктивных баз
3. Фиксация в системе всех следов сообщений.

Требования:
БСП 2.4 (под другие редакции просто не тестировалось, уверен, что при небольших доработках всё быстро взлетаемо). Платформа 8.3.10.2252 и выше.

Алгоритм следующий:
1. Программист формирует контейнер с параметрами сообщения (тема, текст сообщения, получатели и т.п.), передаёт его как параметр при вызове метода КонтактныеСообщенияСервер.Сообщение(ТипСообщения, КонтейнерДанных)
2. Метод регистрирует сообщение в системе
3. По прошествии какого-то времени отрабатывает регламентное задание и выполняет рассылку зарегистрированных ранее сообщений.

Внедрение
Файл конфигурации во вложении содержит ряд объектов БСП, которые необходимы для работы текущей подсистемы.
Для внедрения подсистемы Управление сообщениями в целевую конфигурацию:
1. Сравнение/объединение с приложенным cf
2. Снять выделение всех объектов
3. Меню Действия -> Отметить по подсистемам файла: выбрать "УправлениеКонтактнымиСообщениями"
4. Нажать "Выполнить"
5. После обновления конфигурации ИБ настроить регламентное задание "Отправка контактных сообщений"

Пример вызова
 

 ТипСообщения = Перечисления.пп_ТипыКонтактныхСообщений.EMail;

Получатели = Новый ТаблицаЗначений;
Получатели.Колонки.Добавить("Адрес");
Получатели.Колонки.Добавить("Адресат");

КонтейнерДанных = Новый Структура;
КонтейнерДанных.Вставить("Тема", ТемаСообщения);
КонтейнерДанных.Вставить("Тело", ТекстСообщения);
КонтейнерДанных.Вставить("ОбъектОснование", СсылкаНаОбъектОснование);
КонтейнерДанных.Вставить("Получатели", Получатели);

Результат = пп_КонтактныеСообщенияСервер.Сообщение(ТипСообщения, КонтейнерДанных);

Если Результат <> Истина Тогда
ОписаниеСообщения = "Не удалось зарегистрировать контактное сообщение: " + Строка(ТипСообщения);
ЗаписьЖурналаРегистрации("ОшибкаФормированияУведомлений", УровеньЖурналаРегистрации.Ошибка, , СсылкаНаОбъектОснование, ОписаниеСообщения);
КонецЕсли;

Плюсы:
1. Отказоустойчивость. В случае сбоя с интернетом система таки "дошлёт" сообщения, но позже. Регистрирует ошибки отправки.
2. Всегда быстро и доступно видно, кому, когда и какие сообщения были зарегистрированы и когда были высланы.
3. Быстрая и незатратная по времени регистрация сообщения (быстрее, чем непосредственная отправка)
4. Легко можно доработать подсистему на новые протоколы (telegram, whatsapp и т.п.)
 

Минусы:
1. В системе может накапливаться очень большое количество уже не нужных (возможно) высланных за прошлые периоды сообщений. Это придётся "чистить", если потребуется.
2. Сама система в состоянии "зародыша" — пока руки не дошли даже до фиксации вложений в письма. Но это быстро реализуемо.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *