This commit is contained in:
wakadakawaka 2025-08-28 19:38:21 +05:00
parent 95bf92102b
commit 161a8a7fc7

View File

@ -0,0 +1,67 @@
---
title: Отправка по шаблону на произвольный адрес ЭП
slug: общие-шаблоны-сообщений/отправка-по-шаблону-на-произвольный-адрес-эп
---
Реальных получателей передаем в функцию формирования и отправки сообщения через доп. параметры в том виде, в каком нам это удобно делать.
**ВАЖНО!** Этот код будет выполняться для любых шаблонов, поэтому нужно осознанно подходить к этому методу
Пример:
```bsl
Для Каждого Строка Из Объект.СписокКонтрагентов Цикл
Если ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(Строка.АдресЭП) Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("АдресЭП", Строка.АдресЭП);
Результат = ШаблоныСообщений.СформироватьСообщениеИОтправить(Объект.ШаблонСообщения,
Строка.Контрагент,
УникальныйИдентификатор,
ДополнительныеПараметры);
Иначе
ТекстСообщения = СтрШаблон("Адрес ЭП контрагента %1 не соответствует требованиям", Строка.Контрагент);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецЦикла;
```
И эти данные мы можем поймать в процедуре `ШаблоныСообщенийПереопределяемый.ПриЗаполненииПочтыПолучателейВСообщении()` в структуре `ПредметСообщения.ПараметрыСообщения`:
```bsl
// Заполняет список получателей почты при отправке сообщения сформированного по шаблону.
//
// Параметры:
// ПолучателиПисьма - ТаблицаЗначений - список получается письма:
// * ВариантОтправки - Строка - вариант отправки для получателя письма: Кому, Копия, СкрытаяКопия, ОбратныйАдрес;
// * Адрес - Строка - адрес электронной почты получателя;
// * Представление - Строка - представление получателя письма;
// * Контакт - Произвольный - контакт, которому принадлежит адрес электронной почты.
// НазначениеШаблона - Строка - идентификатор назначения шаблона.
// ПредметСообщения - ЛюбаяСсылка - ссылка на объект, являющийся источником данных.
// - Структура - структура описывающая параметры шаблона:
// * Предмет - ЛюбаяСсылка - ссылка на объект, являющийся источником данных;
// * ВидСообщения - Строка - вид формируемого сообщения: "ЭлектроннаяПочта" или "СообщениеSMS";
// * ПроизвольныеПараметры - Соответствие - заполненный список произвольных параметров;
// * ОтправитьСразу - Булево - признак мгновенной отправки письма;
// * ПараметрыСообщения - Структура - дополнительные параметры сообщения;
// * ПреобразовыватьHTMLДляФорматированногоДокумента - Булево - признак преобразование HTML текста
// сообщения содержащего картинки в тексте письма из-за особенностей вывода изображений
// в форматированном документе;
// * УчетнаяЗапись - СправочникСсылка.УчетныеЗаписиЭлектроннойПочты - учетная запись для отправки письма.
//
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, НазначениеШаблона, ПредметСообщения) Экспорт
АдресЭП = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПредметСообщения.ПараметрыСообщения, "АдресЭП", "");
Если Не ЗначениеЗаполнено(АдресЭП) Тогда
ВызватьИсключение "Не заполнен адрес ЭП";
КонецЕсли;
СтрокаПолучателей = ПолучателиПисьма.Добавить();
СтрокаПолучателей.ВариантОтправки = "Кому";
СтрокаПолучателей.Адрес = АдресЭП;
КонецПроцедуры
```