ПараметрыШаблона (БСП)

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

Параметры шаблона. Определение и заполнение параметров(реквизитов) в тексте сообщения

// Определение и заполнение параметров(реквизитов) в тексте сообщения
//
Функция ПараметрыШаблона(Шаблон) Экспорт
	
	Результат = ШаблоныСообщенийКлиентСервер.ОписаниеПараметровШаблона();
	
	Если ТипЗнч(Шаблон) = Тип("ДанныеФормыСтруктура") Тогда
		
		Результат.ТипШаблона                  = ?(Шаблон.ПредназначенДляSMS, "SMS", "Письмо");
		Результат.Тема                        = Шаблон.ТемаПисьма;
		
		Если Шаблон.ПредназначенДляВводаНаОсновании Тогда
			Результат.ПолноеИмяТипаНазначения  = Шаблон.ПолноеИмяТипаПараметраВводаНаОсновании;
			Результат.Назначение               = Шаблон.Назначение;
		КонецЕсли;
		Результат.ФорматПисьма                 = Шаблон.ТипТекстаПисьма;
		Результат.УпаковатьВАрхив              = Шаблон.УпаковатьВАрхив;
		Результат.ПеревестиВТранслит           = Шаблон.ОтправлятьВТранслите;
		Результат.Отправитель                  = Шаблон.Отправитель;
		Если Результат.ТипШаблона = "SMS" Тогда
			Результат.Текст                    = Шаблон.ТекстШаблонаSMS;
		ИначеЕсли Шаблон.ТипТекстаПисьма = Перечисления.СпособыРедактированияЭлектронныхПисем.HTML Тогда
			Результат.Текст                    = Шаблон.ТекстШаблонаПисьмаHTML;
		Иначе
			Результат.Текст                    = Шаблон.ТекстШаблонаПисьма;
		КонецЕсли;
		Результат.ТранслитерироватьИменаФайлов = Шаблон.ТранслитерироватьИменаФайлов;
		Результат.ПодписьИПечать               = Шаблон.ПодписьИПечать;
		
		ЗаполнитьЗначенияСвойств(Результат, Шаблон,, "Параметры");
		
		Для каждого ПечатныеФормыИВложения Из Шаблон.ПечатныеФормыИВложения Цикл
			Результат.ВыбранныеВложения.Вставить(ПечатныеФормыИВложения.Идентификатор, ПечатныеФормыИВложения.Имя);
		КонецЦикла;
		
		Для каждого СтрокаПараметр Из Шаблон.Параметры Цикл
			Результат.Параметры.Вставить(СтрокаПараметр.ИмяПараметра, Новый Структура("ОписаниеТипа, Представление", СтрокаПараметр.ОписаниеТипа, СтрокаПараметр.ПредставлениеПараметра));
		КонецЦикла;
		
	ИначеЕсли ТипЗнч(Шаблон) = Тип("СправочникСсылка.ШаблоныСообщений") Тогда
		Запрос = Новый Запрос;
		Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	ШаблоныСообщений.ПредназначенДляВводаНаОсновании,
		|	ШаблоныСообщений.ПолноеИмяТипаПараметраВводаНаОсновании,
		|	ШаблоныСообщений.Назначение,
		|	ШаблоныСообщений.Наименование,
		|	ШаблоныСообщений.ПредназначенДляЭлектронныхПисем,
		|	ШаблоныСообщений.ТипТекстаПисьма,
		|	ВЫБОР
		|		КОГДА ШаблоныСообщений.ПредназначенДляЭлектронныхПисем
		|			ТОГДА ВЫБОР
		|					КОГДА ШаблоныСообщений.ТипТекстаПисьма = ЗНАЧЕНИЕ(Перечисление.СпособыРедактированияЭлектронныхПисем.HTML)
		|						ТОГДА ШаблоныСообщений.ТекстШаблонаПисьмаHTML
		|					ИНАЧЕ ШаблоныСообщений.ТекстШаблонаПисьма
		|				КОНЕЦ
		|		ИНАЧЕ ШаблоныСообщений.ТекстШаблонаSMS
		|	КОНЕЦ КАК ТекстШаблона,
		|	ШаблоныСообщений.ТемаПисьма,
		|	ШаблоныСообщений.УпаковатьВАрхив,
		|	ШаблоныСообщений.ТранслитерироватьИменаФайлов,
		|	ШаблоныСообщений.ФорматВложений,
		|	ШаблоныСообщений.ПредназначенДляSMS,
		|	ШаблоныСообщений.ОтправлятьВТранслите,
		|	ШаблоныСообщений.ПодписьИПечать,
		|	ШаблоныСообщений.ШаблонПоВнешнейОбработке,
		|	ШаблоныСообщений.ВнешняяОбработка,
		|	ШаблоныСообщений.Ссылка,
		|	ШаблоныСообщений.ВладелецШаблона
		|ИЗ
		|	Справочник.ШаблоныСообщений КАК ШаблоныСообщений
		|ГДЕ
		|	ШаблоныСообщений.Ссылка = &Шаблон
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ШаблоныСообщенийПечатныеФормыИВложения.Идентификатор,
		|	ШаблоныСообщенийПечатныеФормыИВложения.Имя
		|ИЗ
		|	Справочник.ШаблоныСообщений.ПечатныеФормыИВложения КАК ШаблоныСообщенийПечатныеФормыИВложения
		|ГДЕ
		|	ШаблоныСообщенийПечатныеФормыИВложения.Ссылка = &Шаблон
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ШаблоныСообщенийПараметры.ПредставлениеПараметра,
		|	ШаблоныСообщенийПараметры.ТипПараметра,
		|	ШаблоныСообщенийПараметры.ИмяПараметра
		|ИЗ
		|	Справочник.ШаблоныСообщений.Параметры КАК ШаблоныСообщенийПараметры
		|ГДЕ
		|	ШаблоныСообщенийПараметры.Ссылка = &Шаблон";
		
		Запрос.УстановитьПараметр("Шаблон", Шаблон);
		
		РезультатЗапроса = Запрос.ВыполнитьПакет();
		СведенияОШаблоне = РезультатЗапроса[0].Выгрузить();
		
		Если СведенияОШаблоне.Количество() > 0 Тогда
			
			СтрокаСведенийОШаблоне = СведенияОШаблоне[0];
			Для каждого ВыбраннаяПечатнаяФорма Из РезультатЗапроса[1].Выгрузить() Цикл
				Результат.ВыбранныеВложения.Вставить(ВыбраннаяПечатнаяФорма.Идентификатор, ВыбраннаяПечатнаяФорма.Имя);
			КонецЦикла;
			Результат.Текст                      = СтрокаСведенийОШаблоне.ТекстШаблона;
			Результат.ТипШаблона                 = ?(СтрокаСведенийОШаблоне.ПредназначенДляSMS, "SMS", "Письмо");
			
			Если СтрокаСведенийОШаблоне.ПредназначенДляВводаНаОсновании Тогда
				Результат.Назначение              = СтрокаСведенийОШаблоне.Назначение;
				Результат.ПолноеИмяТипаНазначения = СтрокаСведенийОШаблоне.ПолноеИмяТипаПараметраВводаНаОсновании;
			КонецЕсли;
			Результат.ФорматПисьма                = СтрокаСведенийОШаблоне.ТипТекстаПисьма;
			
			Если Результат.ТипШаблона = "SMS" Тогда
				Результат.ПеревестиВТранслит      = СтрокаСведенийОШаблоне.ОтправлятьВТранслите;
			Иначе
				Результат.Тема                    = СтрокаСведенийОШаблоне.ТемаПисьма;
				Результат.УпаковатьВАрхив         = СтрокаСведенийОШаблоне.УпаковатьВАрхив;
				Результат.ФорматПисьма            = СтрокаСведенийОШаблоне.ТипТекстаПисьма;
				Результат.ПодписьИПечать          = СтрокаСведенийОШаблоне.ПодписьИПечать;
			КонецЕсли;
			
			ЗаполнитьЗначенияСвойств(Результат, СтрокаСведенийОШаблоне);
			Результат.ФорматыВложений             = СтрокаСведенийОШаблоне.ФорматВложений.Получить();
			
			Для каждого СтрокаПараметр Из РезультатЗапроса[2].Выгрузить() Цикл
				Результат.Параметры.Вставить(СтрокаПараметр.ИмяПараметра, Новый Структура("ОписаниеТипа, Представление", СтрокаПараметр.ТипПараметра.Получить(), СтрокаПараметр.ПредставлениеПараметра));
			КонецЦикла;
			
		КонецЕсли;
	КонецЕсли;
	
	Если ЗначениеЗаполнено(Результат.ПолноеИмяТипаНазначения) 
		И НЕ ОбъектЯвляетсяПредметомШаблона(Результат.ПолноеИмяТипаНазначения) Тогда
		// Объект не входит в список предметов шаблона, поэтому шаблон может быть только общим.
		Результат.ПолноеИмяТипаНазначения = "";
		Результат.Назначение              = "";
	КонецЕсли;
	
	НастройкиШаблоновСообщений = ШаблоныСообщенийСлужебныйПовтИсп.ПриОпределенииНастроек();
	Результат.Вставить("РасширенныйСписокПолучателей", НастройкиШаблоновСообщений.РасширенныйСписокПолучателей);
	СведенияОПредмете = НастройкиШаблоновСообщений.ПредметыШаблонов.Найти(Результат.ПолноеИмяТипаНазначения, "Имя");
	Если СведенияОПредмете <> Неопределено Тогда
		Результат.Макет = СведенияОПредмете.Макет;
		Результат.ПараметрыСКД = СведенияОПредмете.ЗначенияПараметровСКД;
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

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

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

ОписаниеПараметровШаблона (БСП)

ДобавитьПараметрШаблона (БСП)

ЗаполнитьШаблон (БСП)

ШаблонПараметровВыполненияКоманды (БСП)

ПараметрыШаблона (БСП)

ТаблицаПараметров (БСП)

ПараметрыФормы (БСП)

1С Менеджер конфигураций