Механизм состоит из трех объектов метаданных: внешней обработки «Печать из шаблонов Word», справочника «Макеты универсальной печати документов» и справочника «Список параметров»
Внешняя обработка «Печать из шаблонов Word» загружается в пользовательском режиме в «Дополнительные отчеты и обработки» и служит для выбора объектов печати в подменю «Печать» которых будет выводиться команда «Универсальная печать по шаблонам Word». Она входит в состав расширения. Ее нужно сохранить как внешнюю обработку и загрузить в пользовательском режиме.
Картинка выше куда загружаем внешнюю обработку
Картинка выше выбираем объекты печати
Картинка выше- команда в подменю печать
Настройка шаблонов производится в справочнике «Макеты произвольной печати документов» (Администрирование)
Картинка выше справочник «Макеты универсальной печати документов»
Работа со справочником «Макеты универсальной печати документов» состоит из
- Ввода наименования шаблона
- Выбора типа объекта печати
- Загрузка шаблона
- Выбор соответствий параметров в шаблоне и реквизитов объекта печати
Картинка выше – выбираем объект печати. При выборе объекта печати автоматически заполняются и добавляются все табличные части и все реквизиты объекта печати. Один шаблон можно присоединить к нескольким объектам печати (Справочнику, документу) Также выбираем файл с расширением «.docx» в котором заполнены параметры.
Картинка выше простейший пример шаблона. Параметры в шаблоне текстового документа заполняются в квадратных скобках.
Параметр шаблона выбирается из справочника «Параметры шаблона», в котором они создаются как отдельный элемент. Один параметр можно использовать к разным шаблонам. В справочнике параметры без квадратных скобок.
Картинка выше- реализация произвольного алгоритма к основным реквизитам. Когда пользователь устанавливает галку «Произвольный алгоритм», становится доступной кнопка выбора поля «Значение параметра» и открывается форма ввода произвольного алгоритма. Произвольный алгоритм это программный код. (Для тех, кто умеет и знает как это делать)
В произвольном алгоритме пишем код, можно использовать параметр «СсылкаНаОбъектПечати». Это ссылка на объект печати. Алгоритм должен заканчиваться ЗначениеРеквизита = значение реквизита. Например ЗначениеРеквизита = …..(результат запроса и тд).
Затем нажимаем на кнопку «Применить алгоритм». Текст алгоритма переносится в поле «
Значение параметра»
Механизм произвольного алгоритма для табличных частей подобен алгоритму основных реквизитов, за исключением переменной в которую помещаем итоговое значение. Итоговое значение должно быть типа Список значений. Название переменной –ЗначениеРеквизитовСписок.
Особенности использование механизма универсальной печати в том, что автоматически создается папка с именем шаблона( в папке , в которой находится шаблон) и в ней сохраняется заполненный документ.
Механизм тестировался на документах «Заказ клиента» и документа «План закупок» (две табличные части)
В механизме реализована работа с несколькими табличными частями. Это значит, что если в объекте печати две и более табличные части, и данные из этих табличных частей нужно вывести на печать, то в текстовом шаблоне также создаем две и более табличных части и заполняем параметры, как указано на картинке выше. Достаточно заполнить одну строку таблицы. Количество строк автоматически будет добавлено по количеству строк в табличной части объекта печати. Обязательным условием является то, что в разных табличных частях не должно быть одинаковых параметров. Например в первой таблице есть параметр [Номенклатура]. Во второй таблице нужно назвать его иначе, например [НоменклатураПродажи], и указать этот параметр в нужной табличной части в поле нужного реквизита в нужном справочнике «Макеты универсальной печати».
Механизм реализован для печати текстовых документов с расширением docx, это значит доступен для приложений как Word так и R7 и любых других офисных приложений. При зазработке использовался механизм чтения и записи xml, что позволило сделать функционал универсальным и быстрым.
Поскольку при печати документа используется шаблон на диске, во время печати может возникнуть исключение, если два пользователя одновременно будут печатать одно и тоже.