Для создания шаблонов документов необходимо было создать подстановки, которые можно использовать внутри шаблона. Для шаблонного языка был выбран язык
Table of Contents |
---|
Подстановки
Вид шаблона | Стартовая подстановка | Пример использования |
---|---|---|
Шаблон документа | doc — Документ | {{doc.vc_doc_no}} в Договоре на оказание услуг |
Шаблон субъекта учёта (абонента) | user — Субъект типа Абонент | {{user.documents_list}} в Карточке абонента |
Шаблон объекта учёта | obj — Объект типа Оборудование | {{obj.vc_serial}} в Акте приёма-передачи оборудования |
Краткое описание
Note |
---|
В качестве шаблонного языка шаблонов используется Liquid, документация по синтаксису доступна по |
...
адресам: |
...
...
...
...
Краткое описание:
Использование подстановок
Code Block |
---|
Hello {{name}} |
Циклы
Code Block |
---|
{% for item in array %} {{ item }} {% endfor %} |
Условия
Code Block |
---|
{% if user.age > 18 %}
Login here
{% else %}
Sorry, you are too young
{% endif %}
|
Подстановки
Если в описании подстановки упоминается слово "список", то под ним понимается строка, состоящая из элементов, разделённых запятой (,).
Плюсом помечены подстановки, реализованные в текущей версии.
Выделением помечены подстановки возвращающие массив объектов, свойства которых описаны в таблице
Подстановки для документов
Объект в шаблоне: 'doc'
Code Block |
---|
Номер документа: {{doc.vc_doc_no}}
|
VC_DOC_NO | Номер документа | |
D_DOC_FULL_MONTH | Дата создания, полный месяц | |
D_DOC_YEAR | Дата создания, год | |
D_DOC_MONTH | Дата создания, месяц | |
D_DOC_DAY | Дата создания, день | |
CLIENT_TARIFS | Список тарифов, на которые подписан абонент | |
CLIENT_DOC_NO | Номер документа | |
CLIENT_DOC_SERIAL | Серия документа | |
CLIENT_DOCUMENT | Кем выдан документ | |
CLIENT_ADDRESS | Адрес получателя | |
CLIENT_PHONE | Контактный телефон абонента | |
CLIENT_BIRTH_PLACE | Место рождения | |
CLIENT_BIRTHDAY | Дата рождения | |
CLIENT_DOC_DATE | Дата получения документа | |
CLIENT_CODE | Код получателя | |
CLIENT_NAME | Имя получателя | |
BILL_COMPOSITION | Состав счёта
| |
BILL_TOTALS | Итого счета
|
Подстановки для абонентов
Объект в шаблоне: 'user'
Code Block |
---|
Имя пользователя: {{user.full_name}}
|
ADDRESS | Адрес | |
ACCOUNTS_LIST | Список счетов | |
FULL_NAME | Полное имя | |
DOCUMENTS_LIST | Список документов | |
PARENT_TYPE_ID | Тип родителя | |
SERVICES | Службы и сервисы
| |
DEVICES | Оборудование
|
Подстановки для Объектов
Подстановки для Констант
Для использования констант есть специальный объект CONST:
Code Block |
---|
{% if service.n_service_id == CONST.NETSERV_ARM_Private_Office %}
Личный кабинет находится по адресу <a href="https://my.domen.ru/">https://my.domen.ru</a>.
{% endif %}
|
Дополнительные функции
Числовые
Применимы ко всем числам, и числовым подстановкам
- number_in_words
Выведет: сто двадцать три{{123 | number_in_words }}
- number_in_words_rubles
Выведет текущую сумму: Одна тысяча шестьсот девяносто четыре рубля 92 копейки{{doc.bill_totals.n_sum_wo_tax_sum | number_in_words_rubles }}
К документу приложен пример файла, использующий текущие возможности шаблонов.
...
Фильтры
Пример преобразования к верхнему регистру
Code Block |
---|
Hello {{ 'tobi' | upcase }} => Hello TOBI
|
(в версиях 5.0, 5.1.2, 6.0 при работе со строками в кодировке unicode можно
Пример взятия первых нескольких символов строки (первый параметром передаётся количество символов, вторым — подстрока, обозначающая факт обрезания входной строки):
Code Block |
---|
{%assign vc_code = 'АБ-27'%}
{{vc_code|truncate:2,''}} => АБ
{{vc_code|truncate:4,'...'}} => А... |
Константы
Для использования констант есть специальный объект CONST
Code Block |
---|
{% 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
. В качестве входного параметра фильтра можно указывать как код, так и наименование дополнительного параметра:
Code Block |
---|
{{doc.recipient.parent | additional_param:'Регистрационный код плательщика НДС'}} |
Code Block |
---|
БИК банка, в котором находится расчетный счет получателя {{doc.recipient.parent.account_settlement.bank | ap: 'SUBJ_VAL_BIK'}}
|
Значения доп. параметров не выводятся в предварительном просмотре. Для множественных доп. параметров фильтр возвращает массив значений.
Числовые
Применимы ко всем числам и числовым подстановкам
number_in_words
Code Block {{123 | number_in_words}}
Выведет: сто двадцать три
number_in_words_rubles
Code Block {{doc.total.n_sum_wo_tax_sum | number_in_words_rubles}}
Выведет общую сумму без налогов в рублях и копейках: одна тысяча шестьсот девяносто четыре рубля 92 копейки
number_in_words_money с двумя опциональными параметрами:
Первый — код валюты в формате ISO (например RUB, AZN). По умолчанию используется Российский рубль (RUB).
Второй — двухбуквенный код языка в формате ISO (например ru, en, az, es). По умолчанию используется язык, задаваемый в Офисе оператора связи через меню Администрирование → Параметры.Code Block {{doc.total.n_sum_wo_tax_sum | number_in_words_money: 'RUB', 'en'}}
Выведет общую сумму без налогов в рублях на английском языке: one thousand six hundred ninety-four rubles 92 kopecks
l:'f_solid' — выводит число двумя знаками после запятой
Code Block {{-123.45 | l:'f_solid'}}
Выведет: -123,45
Note начиная с версии ООС 3.3 в дополнении к f_solid можно использовать более читаемое название формата fin_solid. l:'f_simple' — выводит число, группы цифр разделяются пробелом
Code Block {{-1234.56 | l:'f_simple'}}
Выведет: -1 234,56
Note начиная с версии ООС 3.3 в дополнении к f_simple можно использовать более читаемое название формата fin_simple.
to_i — преобразует к целому числу
Code Block {{-123.45 | to_i}}
Выведет: -123
abs — абсолютное значение числа
Code Block {{-123.45 | abs}}
Выведет: 123.45
lt, lte, gt, gte — сравнение (соответственно "меньше", "меньше либо равно", "больше", "больше либо равно")
Code Block {% assign res = 1 | lt: 2 %} {% if res == true %} 1 lower than 2 {% endif %}
round — округляет до переданного количества знаков математическим способом;
ceil — округление до целых вверх;
floor — округление до целых вниз:Code Block {{doc.total.n_sum_wo_tax_sum | round: 3 | number_in_words_rubles }} {{doc.total.n_sum_wo_tax_sum | floor | number_in_words_rubles }} {{doc.total.n_sum_wo_tax_sum | ceil | number_in_words_rubles }}
Работа с датами
now — подстановка, вовращающая текущую дату и время
Применимы ко всем датам
- day - день
- month - месяц
- month_inflected - месяц со склонением
- year - год
- simple_date - дата вида "01.02.2009"
- full_date - дата вида "01 Января 2008 г."
- full_date_quoted - дата вида "«01» Января 2008 г."
strftime - первым параметром передается формат, вторым локаль. Например:
Code Block {{now | strftime: '%d %B','ru' | downcase_utf8}}
plus - к объекту даты добавляет указанное количество в днях, для объекта даты с временем - в секундах. Например:
Code Block {{doc.d_doc | plus : 10}}
Пример:
Code Block |
---|
{{doc.d_time | simple_date}}
{{doc.d_doc | full_date_quoted | downcase_utf8}}
|
Время дня
Время дня используется в составе приказа по временным интервалам, в объекте временного интервала есть поля from
и to
, их значение — время дня. Для форматирования такого поля сделан специальный фильтр
- format_time
Фильтр принимает опциональные параметры:
- seconds: true | false
- meridiem: true | false
По умолчанию параметры имеют значения false
.
Примеры:
Code Block |
---|
{{ 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" |
Массивы
join_by_comma(column) - возможность производить склейку массива запятой. Если элемент массива объект, то можно указать по какому полю производить склейку
Code Block Счета поставщика через запятую {{ doc.provider.accounts_personal | join_by_comma:'vc_code' }}
uniq - возможность извлечь уникальные элементы. Может работать со сложными структурами, для этого в аргументе нужно передать ключ, значения которого должны быть уникальными:
Code Block Пример работы со строками состава фактуры: {{doc.content | uniq: "vc_good_name" | map: "vc_good_name" }} => "Меркурий" {{doc.content | map: "vc_good_name" | uniq }} => "Меркурий"
sort – сортирует элементы в массиве по возрастанию. Может работать со сложными структурами, для этого в аргументе нужно передать ключ, по значениям которого будет произведена сортировка:
Code Block {{ [6, 3, 7, 1, 9] | sort | join_by_comma }} => "1, 3, 6, 7, 9" Пример сортировки по строкам из фактуры: {% assign sorted_documents = doc.content | sort: "n_sum" %} {%for content in sorted_documents %} {{content.n_sum}} {% endfor %} => "755.2 9204"
Штрихкоды
Из любой подстановки можно сделать штрихкод. Для этого после подстановки нужно добавить фильтр с параметрами:
1. Тип штрихкода. Поддерживаются:
- BARCODE_128B
- BARCODE_128
- BARCODE_39
- BARCODE_I25
- BARCODE_CBR
- BARCODE_MSI
- BARCODE_PLS
- BARCODE_93
- BARCODE_ANY
2. Ширина, см (px)
3. Высота, см (px)
4. Флаг BARCODE_NO_CHECKSUM:
- true;
- false (по умолчанию).
Для конкатенации подстановок или строк можно использовать фильтр append.
Пример с использованием BARCODE_NO_CHECKSUM:
Code Block |
---|
{{doc.n_doc_id | append: doc.n_doc_type_id | barcode: 'BARCODE_PLS', 8, 3, true}} |
Шаблоны для массовой генерации печатных форм
Для создания шаблона, предназначенного для массовой генерации печатных форм необходимо в шаблон добавить специальные параметризуемые элементы:
Code Block |
---|
...
##-- begin document item (group by N, per page M) --##
...
##-- end document item --##
... |
Параметры
- group by — ограничивает количество печатных форм, объединенных в один документ. Если их количество превышает значение параметра group by, будет создан архив с несколькими объединенными печатными формами.
- per page — ограничивает количество печатных форм на одной странице. После указанного количества печатных форм вставляется разрыв страницы.
Code Block | ||
---|---|---|
| ||
Текст в начале документа, выводится только 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.
Code Block | ||
---|---|---|
| ||
Текст в начале документа, выводится только 1 раз. ##-- begin document item --## Код абонента {{user.vc_code}} (выводится для всех сущностей, по которым выполняется массовая печать) ##-- end document item --## Текст в конце документа, выводится только 1 раз. |