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

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

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

Переменные

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

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

Использование английских кавычек в шаблоне “ “ может привести к его некорректной работе.

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

Функции

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

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

Для примера в качестве переменной $stroka1 будем использовать фразу «Заказ оформлен».

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

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

Пример: {UpperCase({$stroka1})} —> ЗАКАЗ ОФОРМЛЕН

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

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

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

Пример: {LowerCase({$stroka1})}  —> заказ оформлен

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

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

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

Пример: {Capitalize({$stroka1})} —> Заказ оформлен

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

Substr(<param1: строка>, <length: число>, <from: число>) — обрезает текст в соответствии с указанным количеством символов.

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

Пример:

{Substr({$stroka1}, 0, 3)} —> Зак

{Substr({$stroka1}, 4)} —> з оформлен

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

Функция ToString()

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

Подробно про типы данных, используемые в  ELMA365, вы можете прочитать в статье «Типы данных в системе».

Число

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

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

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

Пример: {ToString({$int1})}  —> 546

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

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

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

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

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

Для того чтобы вывести число прописью на другом языке, необходимо указать локаль. На данный момент доступны локали ru–RU для русского языка и en–US для английского языка, также в шаблонах можно использовать шорткаты ru и en соответственно.

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

Пример: {ToString({$int1}, astext, en–US)} —> five hundred forty—six

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

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

Строка

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

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

Для примера возьмем $str1 = «отправлено на согласование».

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

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

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

Категория

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

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

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

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

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

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

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

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

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

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

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

Пример: {ToString({$bool1})} —> Согласовано

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

Деньги

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

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

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

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

Пример:

short —> 1005, 56 (разделитель тысячных и целой/дробной части соответствует локали)

sign —> 1005, 56 RUB

full —> 1005 рублей 56 копеек

astext —> Одна тысяча пять рублей 56 копеек

wildcard —> вы можете задать свой формат, например, {ToString({$money1}, «%i руб. %f коп.»)}. В этом случае сумма отобразится следующим образом: 1005 руб. 56 коп. (%i — целая часть, %f — дробная часть)

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

Вы также можете указать локаль. На данный момент доступны локали ru–RU для русского языка и en–US для английского языка, также в шаблонах можно использовать шорткаты ru и en соответственно.

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

Пример: {ToString({$money1}, full, en)} —> 1 005 rubles 56 kopecks

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

ФИО

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

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

 

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

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

long — будет указана фамилия, имя и отчество полностью (Сергеев Сергей Николаевич)

short — будет указана фамилия и инициалы (Сергеев С. Н.)

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

 

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

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

nominative | именительный | И — именительный

genitive | родительный | Р — родительный

dative | дательный | Д — дательный

accusative | винительный | В — винительный

instrumental | творительный | Т — творительный

prepositional | предложный | П — предложный

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

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

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

Пример:

{ToString({$fio1})} —> Сергеев Сергей Николаевич

{ToString({$fio1}, short)}  —> Сергеев С.Н.

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

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

Телефон

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

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

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

Пример:

{ToString({$phone1}, «+7—XXX—XXX—XX—XX»)} —> +79634998877

{ToString({$phone1}, «X—XXX—XXX—XX—XX»)} —> 89634998877

{ToString({$phone1}, «XX—XX—XX»)} —> 998877

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

Дата/Время

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

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

При использовании функции без дополнительных аргументов {ToString({$date1})} и при использовании формата short в {ToString({$date1}, short)}, данные в документе будут выглядеть следующим образом:

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

Пример:

Дата/время — 09.04.2019 19:18
Дата — 09.04.2019
Время — 15:18

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

Если задан формат long в {ToString({$date1}, long)}, то данные будут выглядеть следующим образом:

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

Пример:

Дата/время — 09.04.2019 19:18:43

Дата — 9 апреля 2019 г.

Время — 15:18:43

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

Вы также можете указать локаль. На данный момент доступны локали ru–RU для русского языка и en–US для английского языка, также в шаблонах можно использовать шорткаты ru и en соответственно.

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

Пример:

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

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

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

Кроме того, указать в шаблоне дату и время можно с помощью функции {DateTime(<формат:строка>,<переменная:дата\время>)}.

В этом случае вы можете задать нужный формат даты вручную. Например, указать дату и время создания элемента до миллисекунд. Для этого поменяйте формат на {DateTime(«YYYYMMDD HH:mm:ss.SSS»,_)}.

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

Пример:

{DateTime(«YYYYMMDD HH:mm:ss.SSS»,{$__createdAt})} —> 20210121 08:30:56.345

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

В функции DateTime() по умолчанию применяется локаль русского языка. Изменить локаль нельзя.

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

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

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

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

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

[1]: Падеж обозначается первой буквой или полным названием («и» или «именительный», «р» или «родительный» и т.д.)

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

  • «фамилия» или «ф.»
  • «имя» или «и.»
  • «отчество» или «о.»

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

Пример:

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

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

 

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

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

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

[1]: Падеж обозначается первой буквой или полным названием («и» или «именительный», «р» или «родительный» и т.д.)

По умолчанию будет использоваться именительный.

[2]: Дополнительные признаки (комбинируются через пробел):

  • фио (ф);
  • мужскойрод (м);
  • женскийрод (ж);
  • нарицательное (н);
  • одушевленное (о);
  • неодушевленное (но)

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

Пример:

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

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

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

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

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

Пример:

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

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

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

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

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

Параметры:

[0]: Число для преобразования в строку

[1]: Падеж. («и» или «именительный», «р» или «родительный» и т.д.)

По–умолчанию — именительный.

[2]: Единицы измерения.

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

  • НазваниеЦелойЧасти|НазваниеДробнойЧасти (пример: "рубль|копейка")
  • Только целая (пример: "рубль")

[3]: Объём единиц измерения. (Число, по умолчанию:100)

[4]: Формат отображения числа (может быть использован без указания парметра [3])

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

  1. 0 — отображает только дробную части числа
  2. A или B (латиница) — идентификатор системного формата:
    A — {ПЦЧ} {НЦЧ} {ПДЧ} {НДЧ}
    B — {ПЦЧ} {НЦЧ} {ДЧ} {НДЧ}
  3. Написать свой шаблон отображения целой и дробной части.
    Расшифровка значений (символ 'Ф' нужно заменить на обозначение формата. Доступные форматы можно посмотреть здесь.)
    {ЦЧ} или {ЦелаяЧасть} — шаблон для отображения целой части числа;
    {ДЧ} или {ДробнаяЧасть} — шаблон для отображения дробной части числа;
    {ЦЧ:Ф} или {ЦелаяЧасть:Ф} — шаблон для отображения целой части числа с использованием формата отображения;
    {ДЧ:Ф} или {ДробнаяЧасть:Ф} — шаблон для отображения дробной части числа с использованием формата отображения;
    {ПЦЧ} или {ПрописьЦелойЧасти} — шаблон для отображения целой части числа прописью;
    {ПДЧ} или {ПрописьДробнойЧасти} — шаблон для отображения дробной части числа прописью;
    {НЦЧ} или {НаименованиеЦелойЧасти} — шаблон для отображения единиц измерения целой части числа;
    {НДЧ} или {НаименованиеДробнойЧасти} — шаблон для отображения единиц измерения дробной части числа.

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

Пример 1:

{NumberToString(5634.37;И)}—>  пять тысяч шестьсот тридцать четыре целых тридцать семь сотых

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

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

Пример 2:

{ЧислоВСтроку(46.25;И;ящик|мешок;38;{ЦЧ} ({ПЦЧ} {НЦЧ}) примерно {ДЧ} ({ПДЧ} {НДЧ}) и один контейнер)} —> 46 (сорок шесть ящиков) примерно 10 (десять мешков) и один контейнер

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

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

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

Пример 3:

{NumberToString(12345,5;Д;бочка|литр;60;{ЦЧ:N} ({ПЦЧ} {НЦЧ}) и {ДЧ} ({ПДЧ} {НДЧ}) )} —> 12 345,00 двенадцати тысячам трёмстам сорока пяти бочкам и 30 литрам

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

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

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

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

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

Параметры:

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

Допустимые значения (в скобках даны сокращенные варианты):

  • мужской род (м, муж);
  • женский род (ж, жен);
  • средний род (с, ср);
  • множественное число (мн, множ)

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

Пример 1:

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

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

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

Пример 2:

{ChangeKind(спокойный;мн)} —> спокойные

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

GetPartOfFullName (Фио)

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

 

[1]: Часть ФИО. Допустимые значения (в скобках даны сокращенные варианты):

  • фамилия (ф)
  • имя (и)
  • отчество (о)
  • полноеимя (полн)

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

Пример:

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

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

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

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

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

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

Пример:

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

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

Функция Now

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

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

С различными значениями format дата будет выводиться по—разному.

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

Доступны следующие варианты:

date —> дата (13.04.2019)

time —> 15:34

timelong —> 15:34:22

datelong —> 13 апреля 2019 г.

short (по умолчанию) —> 13.04.2019 15:33

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

Для 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)} — short ru

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

Функция Barcode

Для того, чтобы закодировать строку приложения и добавить ее в документ в виде штрихкода, используйте функцию Barcode. Например, таким образом можно сгенерировать штрихкод для регистрационного номера договора или другого уникального номера документа. Генерация штрихкода доступна для форматов Word и Excel.

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

[1]: строка зависит от формата, указываемого во втором параметре.

[2]: возможные форматы штрихкодов и требования к строке:

  • QR Code — любая строка
  • EAN—8 — строка из 7 цифр
  • EAN—13 — строка из 12 цифр

Если неправильно передать формат, то будет выбран формат по умолчанию — QR Code.

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

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

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

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

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

Пример:

{GenerateBarcode({$numberstring}, "QR Code", "125" )}

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

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

Условия

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

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

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

шаблоны

Можно использовать условия трех видов:

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

Пример 1

{if {$user_name} = «Петров Илья»} С уважением, Петров Илья {end}

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

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

Пример 2

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

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

{else}

До свидания!

{end}

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

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

Пример 3

{if {$bool} <> «Нет»} Этот текст должен быть виден {end}

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

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

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

= — равно

<> — неравно

> — больше

>= — больше или равно

< — меньше

<= — меньше или равно

Цикл for

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

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

Пример

{ for fr in {$tovar} }

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

{end}

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

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

синт шабл 1

Пример

 

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

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

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

Пример

{for fr in {$appListField} }

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

{end}

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

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

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

Пример

{for fr in {$appListField} }

{$fr}

{$fr.__name}

{$fr.money}

{end}

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

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

В отличие от цикла for для типа данных Таблица, при работе с приложениями в шаблоне не следует указывать .data.

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

For для таблиц

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

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

Настраивая шаблон, используйте цикл for и укажите переменную процесса, в которой хранятся данные таблицы. Далее вам нужно указать в шаблоне коды соответствующих полей приложения. Например, для колонки, в которой будет отображаться стоимость, мы укажем {$row.data.item_price}, где item_price это код поля «Стоимость». row.data обращается к элементу в цикле и позволяет заполнить в документе столько строк, сколько заполнено в таблице в  ELMA365.

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

1.PNG

Нашли опечатку? Выделите текст, нажмите ctrl + enter и оповестите нас