Параметры шаблона. Определение и заполнение параметров(реквизитов) в тексте сообщения
// Определение и заполнение параметров(реквизитов) в тексте сообщения
//
Функция ПараметрыШаблона(Шаблон) Экспорт
Результат = ШаблоныСообщенийКлиентСервер.ОписаниеПараметровШаблона();
Если ТипЗнч(Шаблон) = Тип("ДанныеФормыСтруктура") Тогда
Результат.ТипШаблона = ?(Шаблон.ПредназначенДля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
///////////////////////////////////////////////////////////////////////////////////////////////////////
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)