СформироватьСообщение (БСП)

Автор: 1С
ОбщийМодуль.ШаблоныСообщенийСлужебный
БСП

Сформировать сообщение. Создание сообщения по шаблону

// Создание сообщения по шаблону

Функция СформироватьСообщение(ПараметрыОтправки) Экспорт
	
	Если ПараметрыОтправки.Шаблон = Справочники.ШаблоныСообщений.ПустаяСсылка() Тогда
		Возврат СообщениеБезШаблона(ПараметрыОтправки);
	КонецЕсли;
	
	ПараметрыШаблона = ПараметрыШаблона(ПараметрыОтправки.Шаблон);
	Если ПараметрыОтправки.ДополнительныеПараметры.Свойство("ПараметрыСообщения") Тогда
		ПараметрыШаблона.ПараметрыСообщения = ПараметрыОтправки.ДополнительныеПараметры.ПараметрыСообщения;
	КонецЕсли;
	
	Если ПараметрыОтправки.Шаблон = Неопределено Тогда
		Если ПараметрыОтправки.Свойство("ДополнительныеПараметры")
			И ПараметрыОтправки.ДополнительныеПараметры.Свойство("ВидСообщения") Тогда
			ПараметрыШаблона.ТипШаблона = ПараметрыОтправки.ДополнительныеПараметры.ВидСообщения;
		КонецЕсли;
	Иначе
		Если ПараметрыОтправки.Шаблон.ПредназначенДля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
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

СформироватьСообщениеИОтправить (БСП)

СформироватьСообщениеВФоне (БСП)

СформироватьСообщениеБлокировки (БСП)

СформироватьОписаниеВерсии (БСП)

СформироватьСписокРеквизитовПоСКД (БСП)

СформироватьИнформационнуюНадписьКоличествоСимволовСообщений (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз