Подстановки

Вид шаблонаСтартовая подстановкаПример использования
Шаблон документаdocДокумент{{doc.vc_doc_no}} в Договоре на оказание услуг
Шаблон субъекта учёта (абонента)userСубъект типа Абонент{{user.documents_list}} в Карточке абонента
Шаблон объекта учётаobjОбъект типа Оборудование{{obj.vc_serial}} в Акте приёма-передачи оборудования

Краткое описание

В качестве шаблонного языка шаблонов используется Liquid, документация по синтаксису доступна по адресам:

Использование подстановок

Hello {{name}}

Циклы

{% for item in array %}
  {{ item }}
{% endfor %}

Условия

{% if user.age > 18 %}
   Login here
{% else %}
   Sorry, you are too young
{% endif %}

Фильтры

Пример преобразования к верхнему регистру

Hello {{ 'tobi' | upcase }} => Hello TOBI

(в версиях 5.0, 5.1.2, 6.0 при работе со строками в кодировке unicode можно

Пример взятия первых нескольких символов строки (первый параметром передаётся количество символов, вторым — подстрока, обозначающая факт обрезания входной строки):

{%assign vc_code = 'АБ-27'%}
{{vc_code|truncate:2,''}} => АБ
{{vc_code|truncate:4,'...'}} => А...

Константы

Для использования констант есть специальный объект CONST

{% if service.n_service_id == CONST.NETSERV_ARM_Private_Office %}
  Личный кабинет находится по адресу <a href="https://my.domen.ru/">https://my.domen.ru</a>.
{% endif %}

Дополнительные функции

Дополнительные параметры

Для получения значения дополнительного параметра той или иной сущности к ней необходимо применить фильтр additional_param или ap. В качестве входного параметра фильтра можно указывать как код, так и наименование дополнительного параметра:

{{doc.recipient.parent | additional_param:'Регистрационный код плательщика НДС'}}


БИК банка, в котором находится расчетный счет получателя {{doc.recipient.parent.account_settlement.bank | ap: 'SUBJ_VAL_BIK'}}

Значения доп. параметров не выводятся в предварительном просмотре. Для множественных доп. параметров фильтр возвращает массив значений.

Числовые

Применимы ко всем числам и числовым подстановкам

Работа с датами

Применимы ко всем датам

Пример:

{{doc.d_time | simple_date}}
{{doc.d_doc | full_date_quoted | downcase_utf8}}

Время дня

Время дня используется в составе приказа по временным интервалам, в объекте временного интервала есть поля from и to, их значение — время дня. Для форматирования такого поля сделан специальный фильтр

Фильтр принимает опциональные параметры:

По умолчанию параметры имеют значения false.

Примеры:

{{ time_interval.from | format_time }} => "22:30"
{{ time_interval.from | format_time: seconds: true }} => "22:30:00"
{{ time_interval.from | format_time: seconds: true, meridiem: true }} => "10:30:00 PM"

Массивы

Штрихкоды

Из любой подстановки можно сделать штрихкод. Для этого после подстановки нужно добавить фильтр с параметрами:
1. Тип штрихкода. Поддерживаются:

2. Ширина, см (px)
3. Высота, см (px)
4. Флаг BARCODE_NO_CHECKSUM:

Для конкатенации подстановок или строк можно использовать фильтр append.
Пример с использованием BARCODE_NO_CHECKSUM:

{{doc.n_doc_id | append: doc.n_doc_type_id | barcode: 'BARCODE_PLS', 8, 3, true}}

Шаблоны для массовой генерации печатных форм

Для создания шаблона, предназначенного для массовой генерации печатных форм необходимо в шаблон добавить специальные параметризуемые элементы:

...
##-- begin document item (group by N, per page M) --##
...
##-- end document item --##
...

Параметры

Текст в начале документа, выводится только 1 раз.
##-- begin document item (group by 5, per page 2) --##
Код абонента {{user.vc_code}} (выводится для всех сущностей, по которым выполняется массовая печать)
##-- end document item --##
Текст в конце документа, выводится только 1 раз.

Параметры group by и per page можно не указывать. В этом случае будут использоваться настройки из файла конфигурации приложения «Офис оператора связи»: print.items_in_file и print.items_per_page.

Текст в начале документа, выводится только 1 раз.
##-- begin document item --##
Код абонента {{user.vc_code}} (выводится для всех сущностей, по которым выполняется массовая печать)
##-- end document item --##
Текст в конце документа, выводится только 1 раз.