Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 87 Next »

Подстановки

Вид шаблонаСтартовая подстановкаПример использования
Шаблон документа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'}}

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

Числовые

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

  • number_in_words

    {{123 | number_in_words }}
    

    Выведет: сто двадцать три

  • number_in_words_rubles

    {{doc.total.n_sum_wo_tax_sum | number_in_words_rubles }}
    

    Выведет текущую сумму: Одна тысяча шестьсот девяносто четыре рубля 92 копейки

  • l:'f_solid' — выводит число двумя знаками после запятой

    {{123 | l:'f_solid' }}
    

    Выведет: 123,00
    Примечание: начиная с версии ООС 3.3 в дополнении к f_solid можно использовать более читаемое название формата fin_solid.

  • l:'f_simple' — выводит число, группы цифр разделяются пробелом

    {{1234 | l:'f_simple' }}
    

    Выведет: 1 234,00
    Примечание: начиная с версии ООС 3.3 в дополнении к f_simple можно использовать более читаемое название формата fin_simple.

  • to_i — преобразует к целому числу
  • abs — абсолютное значение числа
  • lt, lte, gt, gte — сравнение (соответственно "меньше", "меньше либо равно", "больше", "больше либо равно")

    {% assign res = 1 | lt: 2 %}
    {% if res == true %}
      1 lower than 2
    {% endif %}
  • round — округляет до переданного количества знаков математическим способом;
    ceil — округление до целых вверх;
    floor — округление до целых вниз:

    {{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 - первым параметорм передается формат, вторым локаль. Например:

    {{now | strftime: '%d %B','ru' | downcase_utf8}}
  • plus - к объекту даты добавляет указанное количество в днях, для объекта даты с временем - в секундах. Например:

    {{doc.d_doc | plus : 10}}

Пример:

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

Время дня

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

  • format_time

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

  • seconds: true | false
  • meridiem: true | false

По умолчанию параметры имеют значения 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"

Массивы

  • join_by_comma(column) - возможность производить склейку массива запятой. Если элемент массива объект, то можно указать по какому полю производить склейку

    Счета поставщика через запятую {{ doc.provider.accounts_personal | join_by_comma:'vc_code' }}
    
  • uniq - возможность извлечь уникальные элементы. Может работать со сложными структурами, для этого в аргументе нужно передать ключ, значения которого должны быть уникальными:

    Пример работы со строками состава фактуры:
    {{doc.content | uniq: "vc_good_name" | map: "vc_good_name" }} => "Меркурий"
    {{doc.content | map: "vc_good_name" | uniq }} => "Меркурий" 
  • sort – сортирует элементы в массиве по возрастанию. Может работать со сложными структурами, для этого в аргументе нужно передать ключ, по значениям которого будет произведена сортировка:

    {{ [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:

{{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 --##
...

Параметры

  • group by — ограничивает количество печатных форм, объединенных в один документ. Если их количество превышает значение параметра group by, будет создан архив с несколькими объединенными печатными формами.
  • per page — ограничивает количество печатных форм на одной странице. После указанного количества печатных форм вставляется разрыв страницы.
Пример шаблона для массовой генерации печатной формы карточки абонента
Текст в начале документа, выводится только 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 раз.
  • No labels