Дизайнер бизнес-процессов > Шаблоны документов / Синтаксис шаблонов

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

Шаблон документа, загружаемый в ELMA365, может содержать любой текст, переменные, функции, условия и циклы. Добавляя шаблон в бизнес-процесс, вы сможете связать поля из вашего шаблона с контекстными переменными процесса.

Переменные

Все переменные в шаблоне должны иметь следующий формат: {$имя_переменной}. Имя переменной уникально и пишется латинскими буквами, например, {$kontragent}. Такая переменная позволит подставить наименование контрагента при создании договора в бизнес‑процессе.

В шаблоне можно использовать атрибуты полей из контекста приложения, т. е. обращаться к вложенным переменным. Доступно для полей типа Файлы, Пользователи, Приложение, Произвольное приложение и т. д.

Например, в заказе есть поле Договор (код — contract), куда загружается файл договора, а также поле Клиент (код — client), в которое добавляется элемент приложения Контакты. В сгенерированном документе можно отобразить название файла или номер телефона клиента. Для этого в синтаксисе шаблона используются код поля из исходного приложения и код вложенной переменной, разделённые точкой: {$contract.__name} или {$client.phone}.

При написании функций аргументы и значения переменных заключаются в кавычки. Разрешено использовать следующие виды кавычек: " ", « », “ “, ” ”' '.

Функции

Функции для работы со строчным типом данных

Эти функции позволяют выводить текст в разном формате.

Для примера в переменной $stroka1 задано значение Иван Крапивин:

  1. UpperCase(<param1: строка>) — переводит текст в верхний регистр.

начало примера

Пример:

{UpperCase({$stroka1})} —> ИВАН КРАПИВИН.

конец примера

  1. LowerCase(<param1: строка>) — переводит текст в нижний регистр.

начало примера

Пример:

{LowerCase({$stroka1})} —> иван крапивин.

конец примера

  1. Capitalize(<param1: строка>) — переводит первую букву первого слова в заглавную.

начало примера

Пример:

{Capitalize({$stroka1})} —> Иван крапивин.

конец примера

  1. Substr(<param1: строка>, <from: число>, <length: число>) — извлекает часть текста, начиная с указанного символа <from>, длиной в заданное количество символов <length>.

Вы можете заполнить только <from>, чтобы сохранить весь текст после указанного символа.

начало примера

Примеры:

  • {Substr({$stroka1}, 0, 3)} —> Ива;
  • {Substr({$stroka1}, 3)} —> н Крапивин.

конец примера

Функция ToString()

Функция ToString универсальна и позволяет выводить в документе следующие типы данных:

Подробнее про типы данных в ELMA365 читайте в статье «Типы данных в системе».

Число

Для этого типа данных используется следующий синтаксис: ToString(param1: число, <format: строка>, <locale: строка>).

Для примера в качестве $int1 будем использовать целое число 546.

начало примера

Пример:

{ToString({$int1})} —> 546.

конец примера

По умолчанию число выводится цифрами. Чтобы вывести число прописью, используйте формат astext.

начало внимание

Обратите внимание, дробные числа вывести прописью нельзя.

конец внимание 

начало примера

Пример:

{ToString({$int1}, astext)} —> пятьсот сорок шесть.

конец примера

Можно указать локаль, чтобы вывести число прописью на другом языке. Доступные локали:

  • русский язык — ru–RU или ru;
  • английский язык — en–US или en.

начало примера

Пример:

{ToString({$int1}, astext, en–US)} —> five hundred forty six.

конец примера

Строка

Строка позволяет отобразить в документе текстовую информацию.

Для этого типа данных используется следующий синтаксис: ToString(param1: строка).

Для примера используем переменную $str1 с значением Отправлено на согласование.

начало примера

Пример:

{ToString({$str1})} —> отправлено на согласование.

конец примера

Категория

Тип данных Категория используется для того, чтобы выбирать определённое значение из списка. Например, при выборе способа оплаты можно указать, производится оплата картой или наличными.

Для этого типа данных используется следующий синтаксис: ToString(param1: категория).

При создании контекстной переменной этого типа в процессе указывается её название и код. Укажите соответствующий код в функции ToString, чтобы в документе, формируемом по шаблону, отобразилось название переменной.

Для примера в качестве переменной $enum1 возьмём оплату картой: { «code»: «karta», «name»: «картой» }.

начало примера

Пример:

Оплата производится {ToString({$enum1})} —> Оплата производится картой.

конец примера

Также для типа данных Категория в шаблон можно вывести название и код категории без использования функции ToString.

Начало примера 

Примеры:

  • Оплата производится {$enum1.name} —> Оплата производится картой;
  • Оплата производится {$enum1} —> Оплата производится картой;
  • Код используемой категории: {$enum1.code} —> Код используемой категории: karta.

Конец примера

Выбор «да/нет»

У этого типа данных два варианта: Да и Нет. Вы можете их переименовать, например, Согласовано и Не согласовано.

Для примера возьмём $bool1 = true. Вариант Да (yesValue) определён как Согласовано.

начало примера

Пример:

{ToString({$bool1})} —> Согласовано.

конец примера

Деньги

Вы можете вывести в документе денежную сумму в различном формате.

Для этого типа данных используется следующий синтаксис: ToString(param1: деньги, <format: string>, <locale: string>).

Доступные значения format:

В функции можно указать локаль. Доступные локали:

  • русский язык — ru–RU или ru;
  • английский язык — en–US или en.

начало примера

Пример:

{ToString({$money1}, full, en)} —> 1 005 rubles 56 kopecks.

конец примера

ФИО

Вы можете указать в документе фамилию, имя и отчество в нужном формате и падеже.

Для этого типа данных используется следующий синтаксис: ToString(param1: ФИО, <format: строка>, <case: строка>).

Доступные значения format:

Доступные значения case:

Обратите внимание, функция максимально правильно склоняет имя в том случае, если указано отчество.

начало примера

Примеры:

  • {ToString({$fio1})} —> Сергеев Сергей Николаевич;
  • {ToString({$fio1}, short)} —> Сергеев С.Н.;
  • {ToString({$fio1}, short, Р)} —> Сергеева С.Н.

конец примера

Если вы хотите отдельно указать имя, фамилию или отчество, используйте значения, записанные в переменной типа Ф.И.О.: {$executor.fullname.firstname}, {$executor.fullname.lastname}, {$executor.fullname.middlename}.

Телефон

Вы можете создать маску для ввода телефонного номера. Для этого используется следующий синтаксис: ToString({$phone1}, «+7–XXX–XXX–XX–XX»).

Телефонный номер заполняется цифрами слева направо.

начало примера

Примеры:

  • {ToString({$phone1}, «+7—XXX—XXX—XX—XX»)} —> +7–912–345–67–89;
  • {ToString({$phone1}, «X—XXX—XXX—XX—XX»)} —> 8–912–345–67–89;
  • {ToString({$phone1}, «XX—XX—XX»)} —> 45–67–89.

конец примера

Дата/Время

Вы можете указать в шаблоне дату и время, например, дату поставки оборудования по договору. Для этого используется следующий синтаксис: ToString(param1: дата/время, <format: строка>, <locale: строка>).

У типа данных Дата/Время есть разные подтипы: Дата/Время, Дата, Время.

Без указания дополнительных аргументов в документе отображается текущая дата и время.

начало примера

Пример:

{ToString({$date1})} —> Дата/время — 09.04.2019 15:18:43; Дата — 09.04.2019; Время — 15:18:43.

конец примера

При использовании в функции формата short время указывается без уточнения секунд.

начало примера

Пример:

{ToString({$date1}, short)} —> Дата/время — 09.04.2019 15:18; Дата — 09.04.2019; Время — 15:18.

конец примера

Если в функции задан формат long, время будет отображаться с секундами, а дата — с полным названием месяца:

начало примера

Пример:

{ToString({$date1}, long)} —> Дата/время — 09.04.2019 19:18:43; Дата — 9 апреля 2019 г.; Время — 19:18:43.

конец примера

Вы также можете указать локаль:

  • русский язык — ru–RU или ru;
  • английский язык — en–US или en.

начало примера

Пример:

{ToString({$date1}, short, en–US)} —> 4/11/19 7:15 am.

конец примера

Обратите внимание, подтип Дата/Время учитывает временную зону компании и выводит дату с учётом этой зоны. Подтипы Дата и Время выводят абсолютные значения.

Пример:

Функция DateTime()

Функция DateTime() позволяет вывести в шаблоне дату и время с указанием формата даты и локали.

Синтаксис функции: DateTime(<формат:строка>,<переменная:дата\время>,<локаль>).

Например, вы можете указать дату и время создания элемента.

Начало примера

Пример:

{DateTime(«YYYY–MM–DD hh:mm:ss»,{$__createdAt},"ru_RU")} —> 20210121 08:30:56.

Конец примера

В шаблоне поддерживаются следующие виды кавычек: " ", « », “ “, ” ”' '.

начало примера

Примеры:

  • {DateTime('"DD" MMMM YYYY',{$__createdAt},"ru_RU")} —> "31" августа 2023;
  • {DateTime("«DD» MMMM YYYY",{$__createdAt},"ru_RU")} —> «31» августа 2023;
  • {DateTime(«'DD' MMMM YYYY»,{$__createdAt},"ru_RU")} —> '31' августа 2023.

конец примера

Форматы данных:

Функция Now

Чтобы подставить в шаблон текущую дату и время с учётом временной зоны, используйте функцию Now.

Синтаксис функции: Now(<format: строка>, <locale: строка>, <timezone: строка>):

  • с различными значениями format дата будет выводиться по‑разному;

Доступные значения format:

  • для locale доступен русский язык — ru–RU и английский язык — en–US;
  • timezone задаётся в формате Europe/Samara, America/Toronto.

начало примера

Примеры синтаксиса функции:

  • {Now(datelong, en-US)} — длинная дата, en-US;
  • {Now(datelong, en)} — длинная дата en;
  • {Now(date, en)} — только дата en;
  • {Now(datelong, ru-RU)} — длинная дата ru-RU;
  • {Now(datelong, ru)} — длинная дата ru;
  • {Now(date, ru)} — только дата ru;
  • {Now(time, ru)} — только время ru;
  • {Now(timelong, ru)} — время с секундами ru;
  • {Now(short, ru)} — дата и время без секунд ru.

конец примера

Функции для склонения по падежам

В системе доступны функции для склонения слов и словосочетаний.

FormatFio (ФорматФио)

Склоняет ФИО в нужном падеже и выводит в нужном формате, например, только имя и отчество.

Синтаксис функции: {FormatFio (<ФИО: строка>, <падеж: 1>, <фамилия: 2>)}:

  • [1] — падеж обозначается первой буквой или полным названием («и» или «именительный», «р» или «родительный» и т. д.);
  • [2] — формат отображения ФИО. Допустимые форматы указываются в кавычках, чередуются через пробел, в полной или сокращённой форме:
    • «фамилия» или «ф.»;
    • «имя» или «и.»;
    • «отчество» или «о.».

начало примера

Пример:

Данные {FormatFio(«Иванов Иван Иванович»,р,«фамилия и. о.»)} —> Данные Иванова И.И.

конец примера

Incline (Просклонять)

Данная функция возвращает заданную строку в указанном падеже.

Синтаксис функции: {Incline(Просклонять) (<Выражение: строка>,<падеж: 1>,<признаки: 2>)}:

  • [1] — падеж обозначается первой буквой или полным названием («и» или «именительный», «р» или «родительный» и т. д.). По умолчанию будет использоваться именительный;
  • [2] — дополнительные признаки комбинируются через пробел:
    • фио (ф);
    • мужской род (м);
    • женский род (ж);
    • нарицательное (н);
    • одушевлённое (о);
    • неодушевлённое (но)

начало примера

Пример:

{Просклонять('договор подряда',П,м но)} —> о договоре подряда.

конец примера

InclineMany (ПросклонятьМнож)

Эта функция возвращает заданную строку в указанном падеже и во множественном числе. Параметры такие же, как у функции Incline.

начало примера

Пример:

{ПросклонятьМнож('договор подряда',П)} —> о договорах подряда.

конец примера

NumberToString (ЧислоВСтроку)

Данная функция возвращает указанное число в текстовом формате и в заданном падеже.

Правила написание функции:

  • параметры Падеж, Единица измерения и Формат отображения числа прописываются в кавычках — «»;
  • параметры отделяются друг от друга запятой;
  • единица измерения дробной части указывается с помощью вертикальной черты — |.

Синтаксис функции: {NumberToString(<Число>,<падеж: 1>,<единица измерения: 2>,<объем единицы измерения: 3>,<формат: 4>)}:

  • <Число> — число для преобразования в строку;
  • [1] — падеж прописывается с использованием кавычек, например, «И» или «Именительный», «Р» или «Родительный» и т. д. По умолчанию употребляется именительный падеж;

начало примера

Примеры:

  • {NumberToString(5634,«П»)} —> пяти тысячах шестистах тридцати четырех;
  • {NumberToString(5634.37,«Р»)} —>  пяти тысяч шестисот тридцати четырех целых тридцати семи сотых.

конец примера

  • [2] — единицы измерения прописывается с использованием кавычек.

Допустимые форматы:

начало примера

Примеры:

  • {NumberToString(5850,«П»,«рубль»)} —> пяти тысячах восьмистах пятидесяти рублях;
  • {NumberToString(5830.35,«Т»,«евро|евроцент»)} —> пятью тысячами восемьюстами тридцатью евро тридцатью пятью евроцентами.

конец примера

  • [3] — объём единиц измерения. Прописывается как число, по умолчанию используется 100;
  • [4] — формат отображения числа. Прописывается с использованием кавычек. Может быть использован без указания параметра [3].

Допустимые значения:

начало примера

Примеры:

  • {NumberToString(46.25,«И»,«ящик|мешок»,38,«{ЦЧ}({ПЦЧ}{НЦЧ}) примерно {ДЧ}({ПДЧ}{НДЧ}) и один контейнер»)} —> 46 (сорок шесть ящиков) примерно 10 (десять мешков) и один контейнер.

Примечание: .25 — это четверть. Мы указали, что в целом 38 частей. 38\4 = 9.5 (округляется до 10);

  • {NumberToString(12345.5,«Д»,«бочка|литр»,60,«{ЦЧ:N} ({ПЦЧ} {НЦЧ}) и {ДЧ} ({ПДЧ} {НДЧ})»)} —> 12,345.000 (двенадцати тысячам трёмстам сорока пяти бочкам) и 30 (тридцати литрам).

Примечание: В значении {ЦЧ:N} :N — это формат отображения. Данный формат обозначает, что всегда необходимо показывать дробную часть в числе, но, так как в функции дробная часть отделяется, после запятой будут идти нули.

конец примера

ChangeKind (ИзменитьРод)

Данная функция позволяет изменить род прилагательного.

Синтаксис функции: {ChangeKind(<прилагательное в именительном падеже мужского рода: строка>,<род: 1>)}.

[1] — род и число, в которые нужно преобразовать.

Допустимые значения:

начало примера

Примеры:

  • {ChangeKind(спокойный,жен)} —> спокойная;
  • {ChangeKind(спокойный,мн)} —> спокойные.

конец примера

GetPartOfFullName (Фио)

Функция позволяет получить полное имя или его часть. Синтаксис функции: {Фио(<ФИО:строка>,<часть ФИО:1>)}.

[1] — часть ФИО.

Допустимые значения:

начало примера

Пример:

{Фио('Пушкин Александр Сергеевич',о)} —> Сергеевич.

конец примера

AnotherGenderSecondName (ФамилияПротивоположногоПола)

Функция позволяет получить фамилию противоположного пола.

Синтаксис функции: {ФамилияПротивоположногоПола(<фамилия:строка>)}.

начало примера

Пример:

{ФамилияПротивоположногоПола(Петров)} —> Петрова.

конец примера

Функция Barcode

Функция Barcode используется для кодирования строки приложения и добавления её в документ в виде штрихкода. Например, таким образом можно сгенерировать штрихкод для регистрационного номера договора или другого уникального номера документа. В дальнейшем с помощью штрихкода можно будет сопоставить документ на бумажном носителе и электронную копию.

Взаимодействие ELMA365 с ПО для считывания штрихкодов осуществляется через модули интеграции. Подробнее о них можно прочитать в статьях «Готовые модули» и в справке по публичному API ELMA365.

Генерация штрихкода доступна для форматов Word и Excel.

Синтаксис функции: GenerateBarcode(<text: строка:1>, <format: формат кода:2>, <высота сгенерированного штрихкода в пикселях>).

  • [1] — строка зависит от формата, указываемого во втором параметре;
  • [2] — возможные форматы штрихкодов и требования к строке:
    • QR Code — любая строка. Поддерживается разрешение до 300 DPI;
    • EAN-8 — строка до восьми цифр, где последняя используется как контрольная;
    • EAN-13 — строка из 12 цифр или 13 цифр, где последняя — контрольная.
  • высота штрихкода в пикселях — необязательный параметр. Для корректного распознавания высота указывается в зависимости от количества используемых символов.

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

Если в шаблоне одна и та же строка используется для генерации QR-кода два раза, но при этом указывается разный размер, то в обоих случаях сгенерируется QR-код одинакового размера.

начало внимание

Если при использовании форматов EAN контрольная сумма не была указана, она добавится автоматически. Для корректной работы сканер штрихкодов следует настроить на работу с данными форматами.

конец внимание

Мы рекомендуем использовать формат QR Code, так как он не имеет таких строгих ограничений, как форматы EAN.

Для примера возьмём строку $numberstring = «5901234123457». Она подойдёт для формата QR Code и EAN-13.

начало примера

Примеры:

  • {GenerateBarcode({$numberstring}, "QR Code", "125" )};
  • {GenerateBarcode({$numberstring}, "EAN-13", "125" )}.

конец примера

Для формата EAN-8 в строке должно быть не больше восьми цифр: $numberstring = «59012341».

Функция JobPosition

Эта функция используется для получения должности пользователя.

Синтаксис функции: JobPosition(<param1: пользователь>, <формат:строка>).

Вы можете использовать переменную «first» для передачи первой должности, и переменную «all» — для всех должностей пользователя.

начало примера

Пример:

{JobPosition({$__createdBy},«all»)} —> функция передаст все должности пользователя, записанного в поле Автор.

конец примера

Функция PasteImage

Чтобы вставить в шаблон документа изображение из контекстной переменной, используйте функцию PasteImage.

Синтаксис функции: PasteImage(<param1: изображение/файл>, <ширина в пикселях>, <высота в пикселях>, <обрезать вместо сжатия: true/false>)

Начало примера

Примеры:

  • {PasteImage({$image})} — вставка изображения с исходными значениями ширины и высоты;
  • {PasteImage({$image}, 200)} — изображение отобразится с шириной 200 пикселей. Значение высоты изменится, исходные пропорции сохранятся;
  • {PasteImage({$image}, 200, 400)} — функция масштабирует изображение до строго заданного размера;
  • {PasteImage({$image}, auto, 400)} — изображение из переменной отобразится с высотой 400 пикселей. При этом значение ширины масштабируется, исходные пропорции сохранятся;
  • {PasteImage({$image}, 200, 400, true)} — функция обрежет изображение до указанного размера без учёта исходных пропорций.

Конец примера

Функция HYPERLINK для таблиц

При формировании шаблона в файле формата .xls и .xlsx можно использовать функцию HYPERLINK. Это стандартная функция программы Excel, которая позволяет преобразовать заданное значение в гиперссылку.

В качестве аргументов можно использовать переменные типа Строка из контекста приложения, а также задать значения вручную. Для корректной работы функции указывается полный URL‑адрес ссылки.  

Синтаксис функции: HYPERLINK("{$param1: строка}" или "<полный url-адрес>";"{$param2: строка}" или "<значение гиперссылки>").

начало примера

Примеры:

  • =HYPERLINK("{$site}";"Смотрите на официальном сайте") — адрес сайта указан в виде строки в элементе приложения, значение гиперссылки задано вручную;
  • =HYPERLINK("https://elma365.com/ru/";"{$__name}") — адрес сайта прописан вручную, значение гиперссылки формируется из поля в элементе приложения.

конец примера

Функция ExtText

Если для настройки шаблона системных функций недостаточно, вы можете создать пользовательскую функцию ExtText. Функция позволяет вызывать методы API, описанные в пользовательских модулях, и применять их к генерируемому шаблону.

Синтаксис функции: {ExtText("id модуля", "адрес метода", {$дополнительный параметр})}:

  • id модуля — символы из URL модуля, идущие после /ext_. Например, если URL модуля mycompany.elma365.ru/admin/extensions/ext_12ab-1212, в функцию нужно вставить 12ab-1212;
  • адрес метода — значение поля Адрес из таблицы, расположенной на вкладке Методы API в настройках модуля.
  • дополнительный параметр — опциональный параметр, который передаётся в указанный метод, например, свойство приложения. В теле запроса дополнительные параметры отображаются в виде p1, p2 и т.д. Они передаются в функцию ExtText через запятую после обязательных параметров. Значения будут присваиваться параметрам в том порядке, в котором они объявлены в теле запроса.

Начало примера

Пример:

Вы можете применить функцию ExtText в названии элемента приложения. Для этого:

  1. Создайте модуль и настройте в нём метод API, который будет использоваться для генерации названия элемента.
  2. Сформируйте название элемента по шаблону, использовав функцию ExtText.

Например:

{ExtText("4c34-822c", "name", "Текст для примера", {$_index})}

  1. Функция запустит метод, внутри которого будут обрабатываться переданные параметры. После выполнения заданных в методе условий получим результат, который будет использоваться в качестве названия элемента приложения.

Пример сценария метода API для формирования названия элемента:

Конец примера

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

Для этого можно включить фича-флаг enableConcurrencyTemplateMapper в следующих поставках:

После включения фича-флага можно задать количество параллельных потоков обработки с помощью дополнительных параметров.

Условия

В зависимости от условия, в документе можно вывести тот или иной текст.

Условие начинается с оператора {if <условие>} и заканчивается оператором {end}. Здесь <условие> — это любое условие, например, {$имя_переменной} = «Да».

начало примера

Пример 1:

{if {$user_name} = «Петров Илья»} С уважением, Петров Илья {end} —> в функции задаётся условие для проверки имени пользователя. Если значение в поле совпадёт, отобразится указанный текст.

Пример 2:

{if {$week.day} = «Пятница»}

До свидания, хороших выходных!

{else}

До свидания!

{end} —> в примере проверяется текущий день недели. В зависимости от его значения отобразится один из вариантов указанного текста.

конец примера

начало внимание

При использовании многострочных условий для файлов формата .xlsx нельзя располагать дополнительный текст в строках с операторами {if <условие>}, {else} и {end}. При генерации документа он удаляется.

конец внимание

Обратите внимание, для переменных типа Выбор «да/нет» нужно указывать значения из поля Варианты. По умолчанию это Да и Нет.

Начало примера

Пример:

{if {$options} <> «Нет»} Текст для примера {end} —> текст будет отображаться только в том случае, если выбрано значение Да.

Конец примера

В функции можно проверять наличие значений у свойств элемента приложения. Если поле на форме заполнено, можно вывести его значение.

Для свойства типа Приложение или Файлы функция условия применяется, если в нём содержится только одно значение, т. е. для свойства включена опция Один. Когда отмечена опция Несколько, используется Цикл for.

Начало примера

Пример:

{if {$document}} {$document} {end} —> если в поле типа Файлы загружен документ, в сгенерированном файле отобразится его название.

конец примера

Условные операторы

При написании условий вы можете использовать следующие операторы:

  • = — равно;
  • <> — не равно;
  • > — больше;
  • >= — больше или равно;
  • < — меньше;
  • <= — меньше или равно.

Логические операторы OR и AND

Для создания сложных условий можно использовать операторы OR и AND, которые позволяют задавать несколько условий в виде одной конструкции.

При использовании OR достаточно, чтобы выполнилось хотя бы одно из указанных условий.

начало примера

Пример:

{if {$trip.location_type} = «Гостиница» OR {$trip.location_type} = «Квартира принимающей стороны»}

{$business_trip_request.city}

{end}

конец примера

При использовании AND нужно, чтобы выполнялись все перечисленные условия.

начало примера

Пример:

{if {$item.price} < 5000 AND {$item.isAvailable}}

{$item.name}

{end}

конец примера

Условия с логическими операторами OR и AND можно комбинировать, используя скобки.

начало примера

Пример:

{if ({$business_trip_request.location_type} = «Гостиница» OR {$business_trip_request.location_type} = «Квартира принимающей стороны») AND ({$business_trip_request.price} < 5000)}

{$business_trip_request.city}

{end}

конец примера

Цикл for

Цикл for используется для того, чтобы отобразить в документе список, например, несколько товаров один за другим.

начало примера

Пример:

{for fr in {$tovar} }

заказан товар — {$fr}

{end}

конец примера

При загрузке шаблона в систему и извлечении цикла for из документа, поле для переменной будет определено как список.

синт шабл 1

for для приложений

Цикл for можно использовать, чтобы отображать данные из приложения.

начало примера

Пример:

{for fr in {$appListField} }

Приложение — {$fr}, с именем {$fr.__name} на сумму {$fr.money}

{end}

конец примера

Такой же цикл позволяет записать данные приложения в таблицу.

начало внимание

Для файлов формата .xlsx в строках с операторами {for <выражение>} и {end} нельзя располагать дополнительный текст. При генерации документа он удаляется. Исключение составляет текст в объединённых ячейках.

конец внимание

 

начало примера

Пример:

{for fr in {$appListField} }

{$fr}

{$fr.__name}

{$fr.money}

{end}

конец примера

начало внимание

В системах версии 2023.12 и ниже при работе с приложениями названия полей в шаблоне следует указывать без префикса data. С версии 2024.1 генерация сработает корректно при использовании префикса.

конец внимание

for для таблиц

Для корректной работы цикла при загрузке шаблона в систему укажите тип данных Таблица для переменной в цикле.

for-table

Если вам нужно выгрузить в документ данные из таблицы ELMA365, например, список товаров с указанием их количества и стоимости, заполненный в процессе обработки заказа, вы можете использовать шаблон в формате .xlsx.

начало внимание

В системах версии 2023.12 и ниже при работе с таблицами перед именами полей в шаблоне следует указывать префикс row.data. С версии 2024.1 использование data не влияет на корректную генерацию файла.

конец внимание

Настраивая шаблон, используйте цикл for и укажите переменную процесса, в которой хранятся данные таблицы.

При создании шаблона в файле формата .xlsx команды for и end должны быть в первом столбце таблицы, иначе введённый текст отобразится некорректно. Далее вам нужно указать в шаблоне коды соответствующих полей приложения.

Например, для колонки, в которой будет отображаться стоимость, укажем {$row.data.item_price} или {$row.item_price}, начиная с версии системы 2024.1.

В функции item_price — это код поля Стоимость. Префикс row.data или row обращается к элементу в цикле и позволяет заполнить в документе столько строк, сколько заполнено в таблице в ELMA365.

начало внимание

В строках таблицы с операторами {for <выражение>} и {end} нельзя располагать дополнительный текст. При генерации документа он удаляется. Исключение составляет текст в объединённых ячейках.

конец внимание

Шаблон документа формата .xlsx для таблицы, в которой указан товар, его стоимость, количество и итоговая сумма к оплате, может выглядеть следующим образом:

template-syntax-4

Вы также можете добавить условие if в цикл for. Пример смотрите в статье «Настройки шаблонов для листов согласования и ознакомления». Обратите внимание, для файлов формата .xlsx в строках с операторами {for <выражение>} и {end} нельзя располагать другой текст, так как он удаляется при генерации. Исключение составляют объединённые по вертикали ячейки.

Шаблон для таблицы в файле формата .docx

Чтобы генерировать таблицу по шаблону в файле формата .docx:

  1. Отделите первую строку таблицы с помощью опции Разделить таблицу.
  2. В появившейся пустой строке объявите цикл for.
  3. Настройте шаблон в таблице, указав переменные из контекста бизнес-процесса.
  4. Под таблицей закройте цикл командой end.

Например, шаблон для таблицы в документе может выглядеть следующим образом:

template-syntax-5

Вложенные таблицы

Цикл for можно использовать, чтобы создать вложенную таблицу. Для обращения к колонкам вложенной таблицы вместо row.data или row используется другой префикс, например, subrow.data в версиях системы 2023.11 и ниже или subrow начиная с 2024.1.

template-syntax-7

Обратите внимание, в строках с операторами {for <выражение>} и {end} нельзя располагать другой текст, так как он удаляется при генерации. Исключение составляют объединённые по вертикали ячейки. Например, при генерации по такому шаблону значение переменной {$row.author} отобразится в таблице:

template-syntax-8

Вывести порядковый номер в таблице

С помощью цикла for можно выводить в шаблоне таблицы порядковый номер строки. Для этого используется префикс row.data и системное свойство __index. В версии системы 2024.1 и выше указывается строка вида {$row.__index}.

Например, шаблон для таблицы с номером строки, названием товара и его стоимостью можно создать следующим образом:

template_syntax-6