В некоторых конфигурациях необходимо использовать шаблоны, а шаблоном может служить справочник со
строкой неограниченой длины. Например это эффективно в конфигурациях связанных с медициной.
Например это могут быть Шаблоны врача, шаблоны Диагнозов.
Но что если недостаточно просто текста, если нужно еще и таблицу с даными использовать в шаблонах - значит сделаем справочник с макетом с использованием хранилища значений.
В Форме элемента разместим поле табличного документа
Модуль:
Процедура ПриОткрытии() Если ЭтоНовый() тогда МакетДоговора = Справочники.ШП.ПолучитьМакет("ТБО"); Иначе МакетДоговора = Макет.Получить(); КонецЕсли; ЭлементыФормы.ТабДок.Вывести(МакетДоговора); ОбластьПриемник = ЭлементыФормы.ТабДок.Область("R1C1:R50C14"); ОбластьПриемник.Очистить(Истина,Истина,Истина); ОбластьДляВставки = МакетДоговора.Область("R1C1:R50C14"); ЭлементыФормы.ТабДок.ВставитьОбласть(ОбластьДляВставки, ОбластьПриемник,,Ложь); Модифицированность = Ложь; КонецПроцедуры Процедура ПриЗаписи(Отказ) МакетДоговора = Новый ТабличныйДокумент; Область = ЭлементыФормы.ТабДок.Область("R1C1:R50C14"); ОбластьПриемник = МакетДоговора.Область("R1C1:R50C14"); МакетДоговора.ВставитьОбласть(Область,ОбластьПриемник,,Ложь); Макет = Новый ХранилищеЗначения(МакетДоговора); КонецПроцедуры
Полезная используемая область 14 столбцов на 50 строк.
Создадим форму Подбора.
Теперь в нужном документе (в форме) добавим Поле табличного документа, в которое будем передавать шаблон (приеменик).
Добавим кнопу открываюущую форму подбора нашего справочника.
И в модуль формы документа добовим процедуры:
Процедура ПриОткрытии() если ЭтоНовый() тогда МакетДоговора = Справочники.ШП.ПолучитьМакет("ТБО"); Иначе если не(макет1.Получить()=неопределено) тогда МакетДоговора = макет1.Получить(); иначе макетдоговора=новый табличныйдокумент; конецесли; КонецЕсли; ЭлементыФормы.ТабД.Вывести(МакетДоговора); ОбластьПриемник = ЭлементыФормы.ТабД.Область("R1C1:R50C14"); ОбластьПриемник.Очистить(Истина,Истина,Истина); ОбластьДляВставки = МакетДоговора.Область("R1C1:R50C14"); ЭлементыФормы.ТабД.ВставитьОбласть(ОбластьДляВставки, ОбластьПриемник,,Ложь); Модифицированность = Ложь; КонецПроцедуры Процедура ПриЗаписи(Отказ) МакетДоговора = Новый ТабличныйДокумент; Область = ЭлементыФормы.ТабД.Область("R1C1:R50C14"); ОбластьПриемник = МакетДоговора.Область("R1C1:R50C14"); МакетДоговора.ВставитьОбласть(Область,ОбластьПриемник,,Ложь); Макет1 = Новый ХранилищеЗначения(МакетДоговора); КонецПроцедуры
Теперь у нас есть справочник с макетом:
и он попадает в документ
И вывод на печать
ОБЛАСТЬ=МАКЕТ.ПолучитьОбласть("ТаблОбласть"); ОбластьПриемник=ОБЛАСТЬ.ОБЛАСТЬ("R1C1:R50C14"); МАКЕТДОГОВОРА=макет1.Получить(); ОбластьПриемник.Очистить(Истина,Истина,Истина); ОбластьДляВставки = МакетДоговора.Область("R1C1:R50C14"); ОБЛАСТЬ.ВставитьОбласть(ОбластьДляВставки, ОбластьПриемник,,Ложь); ТабДокумент.Вывести(Область);