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

Фильтры

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

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

...

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

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

Для получения значения дополнительного параметра той или иной сущности к ней необходимо применить фильтр 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.bill_totalstotal.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,0045

    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 - дата вида "1 01 Января 2008 г."
  • full_date_quoted - дата вида "«1» «01» Января 2008 г."
  • strftime - первым параметорм параметром передается формат, вторым локаль. Например:

    Code Block
    {{doc.d_docnow | strftime : '%d %B', 'ru' | downcase_utf8}}


  • plus - к объекту даты добавляет указанное количество в днях, для объекта даты с временем - в секундах. Например:

    Code Block
    {{doc.d_doc | plus : 10}}


Пример:

Code Block
{{ doc.d_datetime | simple_date }}
{{ doc.d_datedoc | 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' }}
    

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

Для доп. параметров нужно использовать фильтр additional_param и указывать 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
  • BARCODE_NO_CHECKSUM

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 раз.