Генерация файла по шаблону

Шаблоны документов

Шаблоны используются для автоматического создания документов. В качестве шаблона могут использоваться частично заполненные файлы формата .rtf, .doc, .docx, .txt, .xls или .xlsx.

В шаблоне могут использоваться контекстные переменные типа Строка, Целое число или Дробное число. Для использования в шаблоне контекстных переменных другого типа их нужно сначала преобразовать в типы Строка, Целое число или Дробное число при помощи сценария, который будет выполняться в бизнес-процессе перед генерацией документа.

Синтаксис шаблонов

При составлении шаблона можно использовать произвольное наполнение файла-шаблона. В содержимое файла-шаблона можно вставить контекстные переменные. При этом используется следующий синтаксис:

Текст Текст {$Имя_контекстной_переменной} Текст Текст

Использование блоков в шаблонах

Если в шаблоне необходимо использовать контекстную переменную типа Блок, то синтаксис записи Блока в шаблон выглядит так:

{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

Так же есть русский аналог : {если ...} {конец если}.

Общий вид условия:

{if <условие>}

<Действие, если условие истинно>

{else}

<Действие, если условие ложно>

{end}

В шаблонах можно использовать вложенные условия:

{if <условие>}text{end if}

{if <условие1>}text{if <условие2>}text{else}text{end if} text{end if}

Примеры использования шаблонов

Пример 1

Нужно вывести КПП юридического лица.

Текст шаблона:

{if {$Kontragent.TypeUid} = ’3325eab1-fe46-4900-a617-c6fb54ac24c0’}

КПП контрагента:{$Kontragent.KPP}

{else}

Контрагент не является юридическим лицом

{end}

Описание:

Сначала проверяем является ли контрагент юридическим лицом. Если условие выполняется, то выводим КПП контрагента. Если условие не выполняется, то в шаблон выводим – Контрагент не является юридическим лицом.

Если необходимо использовать физическое лицо, то Uid выглядит так: 27e70dfe-2a76-4f1d-a99a-cdf31c62d618

Если нужно использовать условие неравно, то в шаблонах оно записывается так: <>

Шаблон см. во вложении к статье (Файл 1).

Файл, сгенерированный по шаблону, см. во вложении к статье (Файл 1.1).

Пример 2

Вывести юридический адрес физического лица в последовательности: Страна, Город, Улица, Дом.

Текст шаблона:

Юридический адрес: {$FizicheskoeLico.LegalAddress.Country.Name},г.{$FizicheskoeLico.LegalAddress.City},ул.{$FizicheskoeLico.LegalAddress.Street},дом{$FizicheskoeLico.LegalAddress.Building}.

Описание:

При такой записи свойства объекта адрес (страна, город, улица, дом) запишется в файл, сгенерированный по шаблону, в желаемой последовательности через запятую.

Шаблон см. во вложении к статье (Файл 2).

Файл, сгенерированный по шаблону, см. во вложении к статье (Файл 2.1).

Пример 3

Вывести в шаблон нарушения, значение контекстных переменных которых выбрано Да.

Текст шаблона:

{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»).

Пример условия:

{if {$Znachenie} = 123} // Задаем условие при котором  цвет ячейки будет изменен. При выполнении условия цвет и стиль текста будет изменен на используемый в следующей строке. 
{$Znachenie} // В данной строке задается стиль текста и цвет ячеек. Измените цвет ячеек на необходимый и он будет использован в документа после генерации. 
{else} // Следующее условие 
{$Znachenie} // Аналогично 2 строке задаем цвет ячеек и стиль текста. 
{end} // Конец условия

В шаблоне используется контекстная переменная "Znachenie". Задано условие, если "Znachenie" = 123, то содержимое переменной будет выведено на желтом фоне красным шрифтом, иначе ячейка будет окрашена в синий и шрифт будет использован белый. (Файл 6.1).

В версии 3.2.8 появится возможность добавить картинку в шаблон. Для того, что бы задействовать данный механизм необходимо в шаблоне использовать функцию {Image({$контекстная переменная})}. При этом картинка должна содержаться в контекстной переменной с типом Файл (системный).

Пример 7

Нужно сравнить переменные между собой.

Текст шаблона:

{if {$Date1}>{$Date2}}
{$Date1} больше {$Date2}
{else}
{$Date1} НЕ больше {$Date2}
{end}

Пример 8

Нужно осуществить проверку на null.

Текст шаблона:

{if {$NullableDate}=null}
дата не указана
{else}
дата - {$NullableDate}
{end}

Прикрепленные файлы