Генерация файла по шаблону
Шаблоны документов
Шаблоны используются для автоматического создания документов. В качестве шаблона могут использоваться частично заполненные файлы формата .rtf, .doc, .docx, .txt, .xls или .xlsx.
В шаблоне могут использоваться контекстные переменные типа Строка, Целое число или Дробное число. Для использования в шаблоне контекстных переменных другого типа их нужно сначала преобразовать в типы Строка, Целое число или Дробное число при помощи сценария, который будет выполняться в бизнес-процессе перед генерацией документа.
Синтаксис шаблонов
При составлении шаблона можно использовать произвольное наполнение файла-шаблона. В содержимое файла-шаблона можно вставить контекстные переменные. При этом используется следующий синтаксис:
1 | Текст Текст {$Имя_контекстной_переменной} Текст Текст |
Использование блоков в шаблонах
Если в шаблоне необходимо использовать контекстную переменную типа Блок, то синтаксис записи Блока в шаблон выглядит так:
1 2 3 | { for Item in {$Blok}} {$Item.Tekst1} {$Item.Tekst2} {$Item.Tekst3} {end} |
где
- Blok – имя свойства контекстной переменной типа Блок;
- Tekst1,Tekst2,Tekst3 – имена свойств, контекстной переменной типа Блок. В шаблон свойства блока записываются через точку после команды Item.
В результате генерации данного шаблона в файл свойства блока запишутся по очереди.
Такой же синтаксис используется для шаблонов в Excel-файлах.
Команды for и end должны быть в первом столбце таблицы, иначе введенный текст отображается некорректно.
Следует отметить, что в случае использования данных команд в документе Word с таблицами, начало и конец цикла должны быть либо в одной ячейке с циклической переменной, либо снаружи таблицы. Файлы документов с примерами приложены ниже (Contact, Contact1).
Использование условий в шаблонах
Условие начинается с оператора {if <условие>} и заканчивается оператором {end}. Вместо {end} можно использовать {end if}.
<условие> - произвольное условие, например {$Otvetchiki.Individual}=true
Так же есть русский аналог : {если ...} {конец если}.
Общий вид условия:
1 2 3 4 5 6 7 8 9 | { if <условие>} <Действие, если условие истинно> { else } <Действие, если условие ложно> {end} |
В шаблонах можно использовать вложенные условия:
1 2 3 | { if <условие>}text{end if } { if <условие1>}text{ if <условие2>}text{ else }text{end if } text{end if } |
Примеры использования шаблонов
Пример 1
Нужно вывести КПП юридического лица.
Текст шаблона:
1 2 3 4 5 6 7 8 9 | { if {$Kontragent.TypeUid} = ’3325eab1-fe46-4900-a617-c6fb54ac24c0’} КПП контрагента:{$Kontragent.KPP} { else } Контрагент не является юридическим лицом {end} |
Описание:
Сначала проверяем является ли контрагент юридическим лицом. Если условие выполняется, то выводим КПП контрагента. Если условие не выполняется, то в шаблон выводим – Контрагент не является юридическим лицом.
Если необходимо использовать физическое лицо, то Uid выглядит так: 27e70dfe-2a76-4f1d-a99a-cdf31c62d618
Если нужно использовать условие неравно, то в шаблонах оно записывается так: <>
Шаблон см. во вложении к статье (Файл 1).
Файл, сгенерированный по шаблону, см. во вложении к статье (Файл 1.1).
Пример 2
Вывести юридический адрес физического лица в последовательности: Страна, Город, Улица, Дом.
Текст шаблона:
1 | Юридический адрес: {$FizicheskoeLico.LegalAddress.Country.Name},г.{$FizicheskoeLico.LegalAddress.City},ул.{$FizicheskoeLico.LegalAddress.Street},дом{$FizicheskoeLico.LegalAddress.Building}. |
Описание:
При такой записи свойства объекта адрес (страна, город, улица, дом) запишется в файл, сгенерированный по шаблону, в желаемой последовательности через запятую.
Шаблон см. во вложении к статье (Файл 2).
Файл, сгенерированный по шаблону, см. во вложении к статье (Файл 2.1).
Пример 3
Вывести в шаблон нарушения, значение контекстных переменных которых выбрано Да.
Текст шаблона:
1 2 3 4 5 | { if {$Nedostatok1}= true }нарушение1; {end}{ if {$Nedostatok2}= true }нарушение2; {end}{ if {$Nedostatok3}= true }нарушение3; {end}{ if {$Nedostatok4}= true }нарушение4; {end} |
Описание:
У контекстных переменных Nedostatok1, Nedostatok2, Nedostatok3, Nedostatok4 тип «да/нет». В результате генерации по шаблону в файле выводятся только те нарушения, в недостатках которых на форме в веб-части выбрано значение Да.
Шаблон см. во вложении к статье (Файл 3).
Файл, сгенерированный по шаблону, см. во вложении к статье (Файл 3.1).
Пример 4
Комплексный и более сложный пример: шаблон договора. Данный шаблон может использоваться для мгновенной генерации полноценных договоров. Для использования в реальной практике, потребуется немного доработать его под особенности организации, в которой он будет использоваться.
Пример 5
Рассмотрим excel-шаблон на примере товарной накладной.Шаблон см. во вложении к статье (Файл 5).
Файл, сгенерированный по шаблону, см. во вложении к статье (Файл 5.1).
Пример 6
Если Вам нужно изменить цвет ячейки в зависимости от условия, то необходимо в шаблоне прописать условие при котором будет изменяться цвет и указать какой именно цвет и стиль будет использоваться. (Пример шаблона во вложении «Файл 6»).
Пример условия:
1 2 3 4 5 | { if {$Znachenie} = 123} // Задаем условие при котором цвет ячейки будет изменен. При выполнении условия цвет и стиль текста будет изменен на используемый в следующей строке. {$Znachenie} // В данной строке задается стиль текста и цвет ячеек. Измените цвет ячеек на необходимый и он будет использован в документа после генерации. { else } // Следующее условие {$Znachenie} // Аналогично 2 строке задаем цвет ячеек и стиль текста. {end} // Конец условия |
В шаблоне используется контекстная переменная "Znachenie". Задано условие, если "Znachenie" = 123, то содержимое переменной будет выведено на желтом фоне красным шрифтом, иначе ячейка будет окрашена в синий и шрифт будет использован белый. (Файл 6.1).
Пример 7
Нужно сравнить переменные между собой.
Текст шаблона:
1 2 3 4 5 | { if {$Date1}>{$Date2}} {$Date1} больше {$Date2} { else } {$Date1} НЕ больше {$Date2} {end} |
Пример 8
Нужно осуществить проверку на null.
Текст шаблона:
1 2 3 4 5 | { if {$NullableDate}= null } дата не указана { else } дата - {$NullableDate} {end} |