Сформировать сообщение. Создание сообщения по шаблону
// Создание сообщения по шаблону
Функция СформироватьСообщение(ПараметрыОтправки) Экспорт
Если ПараметрыОтправки.Шаблон = Справочники.ШаблоныСообщений.ПустаяСсылка() Тогда
Возврат СообщениеБезШаблона(ПараметрыОтправки);
КонецЕсли;
ПараметрыШаблона = ПараметрыШаблона(ПараметрыОтправки.Шаблон);
Если ПараметрыОтправки.ДополнительныеПараметры.Свойство("ПараметрыСообщения") Тогда
ПараметрыШаблона.ПараметрыСообщения = ПараметрыОтправки.ДополнительныеПараметры.ПараметрыСообщения;
КонецЕсли;
Если ПараметрыОтправки.Шаблон = Неопределено Тогда
Если ПараметрыОтправки.Свойство("ДополнительныеПараметры")
И ПараметрыОтправки.ДополнительныеПараметры.Свойство("ВидСообщения") Тогда
ПараметрыШаблона.ТипШаблона = ПараметрыОтправки.ДополнительныеПараметры.ВидСообщения;
КонецЕсли;
Иначе
Если ПараметрыОтправки.Шаблон.ПредназначенДляSMS Тогда
ПараметрыОтправки.ДополнительныеПараметры.Вставить("ВидСообщения", "СообщениеSMS");
Иначе
ПараметрыОтправки.ДополнительныеПараметры.Вставить("ВидСообщения", "ЭлектроннаяПочта");
КонецЕсли;
КонецЕсли;
МенеджерОбъекта = Неопределено;
СведенияОШаблоне = Неопределено;
Если ПараметрыОтправки.Предмет <> Неопределено Тогда
СведенияОШаблоне = СведенияОШаблоне(ПараметрыШаблона);
КонецЕсли;
Если ЗначениеЗаполнено(ПараметрыШаблона.ПолноеИмяТипаНазначения) Тогда
МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПараметрыШаблона.ПолноеИмяТипаНазначения);
Если МетаданныеОбъекта <> Неопределено Тогда
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПараметрыШаблона.ПолноеИмяТипаНазначения);
КонецЕсли;
КонецЕсли;
СформированноеСообщение = КонструкторСообщения(ПараметрыШаблона);
Если ПараметрыШаблона = Неопределено Тогда
Возврат СформированноеСообщение;
КонецЕсли;
Если ПараметрыШаблона.ШаблонПоВнешнейОбработке Тогда
Возврат СформироватьСообщениеВнешнейОбработкой(ПараметрыШаблона, СведенияОШаблоне, ПараметрыОтправки);
КонецЕсли;
// Извлекаем из шаблона параметры
ПараметрыТекстаСообщения = ПараметрыИзТекстаСообщения(ПараметрыШаблона);
// Заполняем параметры
Сообщение = ЗаполнитьПараметрыСообщения(ПараметрыШаблона, ПараметрыТекстаСообщения, ПараметрыОтправки);
Сообщение.ДополнительныеПараметры = ПараметрыОтправки.ДополнительныеПараметры;
// Вложения
Если ПараметрыШаблона.ТипШаблона = "Письмо" И СведенияОШаблоне <> Неопределено Тогда
ДобавитьВыбранныеПечатныеФормыВоВложения(ПараметрыОтправки, СведенияОШаблоне, Сообщение.Вложения, ПараметрыШаблона);
КонецЕсли;
ДобавитьПрисоединенныеФайлыВоВложения(ПараметрыОтправки, Сообщение);
ШаблоныСообщенийПереопределяемый.ПриФормированииСообщения(Сообщение, ПараметрыШаблона.ПолноеИмяТипаНазначения, ПараметрыОтправки.Предмет, ПараметрыШаблона);
Если МенеджерОбъекта <> Неопределено Тогда
МенеджерОбъекта.ПриФормированииСообщения(Сообщение, ПараметрыОтправки.Предмет, ПараметрыШаблона);
КонецЕсли;
// Заполнение значений параметров
СообщениеРезультат = УстановитьЗначенияРеквизитовВТекстСообщения(ПараметрыШаблона, ПараметрыТекстаСообщения, ПараметрыОтправки.Предмет);
СформированноеСообщение.Тема = СообщениеРезультат.Тема;
СформированноеСообщение.Текст = СообщениеРезультат.Текст;
Для каждого Вложение Из Сообщение.Вложения Цикл
НовоеВложение = СформированноеСообщение.Вложения.Добавить();
Если ПараметрыШаблона.ТранслитерироватьИменаФайлов Тогда
НовоеВложение.Представление = СтроковыеФункцииКлиентСервер.СтрокаЛатиницей(Вложение.Ключ);
Иначе
НовоеВложение.Представление = Вложение.Ключ;
КонецЕсли;
НовоеВложение.АдресВоВременномХранилище = Вложение.Значение;
КонецЦикла;
Если ПараметрыШаблона.ТипШаблона = "Письмо" И ПараметрыШаблона.ФорматПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда
ОбработатьHTMLДляФорматированногоДокумента(ПараметрыОтправки, СформированноеСообщение, ПараметрыОтправки.ДополнительныеПараметры.ПреобразовыватьHTMLДляФорматированногоДокумента);
КонецЕсли;
ЗаполнитьПолучателейСообщения(ПараметрыОтправки, ПараметрыШаблона, СформированноеСообщение, МенеджерОбъекта);
СформированноеСообщение.СообщенияПользователю = ПолучитьСообщенияПользователю(Истина);
Возврат СформированноеСообщение;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
СформироватьСообщениеИОтправить (БСП)
СформироватьСообщениеВФоне (БСП)
СформироватьСообщениеБлокировки (БСП)
СформироватьОписаниеВерсии (БСП)
СформироватьСписокРеквизитовПоСКД (БСП)
СформироватьИнформационнуюНадписьКоличествоСимволовСообщений (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)