Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

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 %}

Подстановки

Если в описании подстановки упоминается слово "список", то под ним понимается строка, состоящая из элементов, разделённых запятой (,).
Плюсом (plus) помечены подстановки, реализованные в текущей версии.
Выделением помечены подстановки возвращающие массив объектов, свойства которых описаны в таблице

Подстановки для документов

Объект в шаблоне: 'doc'

Code Block

  Номер документа: {{doc.vc_doc_no}}

(plus)

VC_DOC_NO

Номер документа

(plus)

D_DOC_FULL_MONTH

Дата создания, полный месяц

(plus)

D_DOC_YEAR

Дата создания, год

(plus)

D_DOC_MONTH

Дата создания, месяц

(plus)

D_DOC_DAY

Дата создания, день

(plus)

CLIENT_TARIFS

Список тарифов, на которые подписан абонент

(plus)

CLIENT_DOC_NO

Номер документа

(plus)

CLIENT_DOC_SERIAL

Серия документа

(plus)

CLIENT_DOCUMENT

Кем выдан документ

(plus)

CLIENT_ADDRESS

Адрес получателя

(plus)

CLIENT_PHONE

Контактный телефон абонента

(plus)

CLIENT_BIRTH_PLACE

Место рождения

(plus)

CLIENT_BIRTHDAY

Дата рождения

(plus)

CLIENT_DOC_DATE

Дата получения документа

(plus)

CLIENT_CODE

Код получателя

(plus)

CLIENT_NAME

Имя получателя

 

TBL_BILLS

Табличная часть документа Счёт

Подстановки для абонентов

Объект в шаблоне: 'user'

Code Block

  Имя пользователя: {{user.full_name}}

(plus)

ADDRESS

Адрес

(plus)

ACCOUNTS_LIST

Список счетов

(plus)

FULL_NAME

Полное имя

(plus)

DOCUMENTS_LIST

Список документов

(plus)

PARENT_TYPE_ID

Тип родителя

(plus)

SERVICES

Службы и сервисы

  • n_service_id - идентификатор службы
  • vc_service - название службы
  • vc_login - Логин
  • vc_pass - Пароль (заполняется только при смене паролей)

(plus)

DEVICES

Оборудование

  • vc_device_code - код устройства
  • vc_addr_code - адрес подключения
  • n_good_type_id - тип оборудования
  • vc_ip_code - IP-адрес
  • vc_subnet_mask - Маска подсети
  • vc_default_gw - Шлюз по умолчанию

Подстановки для Объектов

Подстановки для Констант

Для использования констант есть специальный объект 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 %}

...

Фильтры

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

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
titleПример шаблона для массовой генерации печатной формы карточки абонента
Текст в начале документа, выводится только 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
titleПример шаблона для массовой генерации печатной формы карточки абонента (без параметров)
Текст в начале документа, выводится только 1 раз.
##-- begin document item --##
Код абонента {{user.vc_code}} (выводится для всех сущностей, по которым выполняется массовая печать)
##-- end document item --##
Текст в конце документа, выводится только 1 раз.