Описание формата разметки в шаблоне печатных форм

Маркером шаблонов является текст внутри документа, заключенный в двойные скобки:

  • фигурные {{внутренний_маркер}};
  • квадратные [[внешний_маркер]].

Значения для внутреннего маркера формируются сервисом печатных форм, значения внешних маркеров передаются извне в метод печати.

Внутренние маркеры:

  • [] – опциональный элемент;
  • ... – повторение;
  • | – разделитель альтернативных значений;
  • \ – "escape", следующий символ должен восприниматься как символ, а не как специальное значение.

Формат внутреннего маркера:

[имя_объекта|макрос.]код_свойства|макро_функция[....][\:формат]

  • имя объекта – это наименование одного из идентификаторов, переданных в параметрах запроса. По умолчанию, если у текущего объекта найдено свойство с таким же именем, что и у объекта, то свойство имеет преимущество. Преимущество свойству отдано, чтобы внешние аргументы не меняли радикально содержимое формы.

  • макрос – специально выделенное выражение. На данный момент поддерживаются:

  • %User% – ссылка на пользователя, вызвавшего метод. Если далее не будет наименований свойств, то значение соответствует полю *name* в «UserResponseDTO» сервиса «Информация об объектах» (dh-user-info-service). Если свойства указаны, то они относятся к свойствам структуры.

    • Если пользователь не указан (это возможно в ASYNC API), то возвращается значение «null».

    • Если указано отсутствующее свойство, то возвращается значение «null».

  • $(имя_объекта) – форсирует использование наименования переданного идентификатора, несмотря на совпадение с именем свойства. Рекомендуется использовать, если форма рассчитана на передачу именованных объектов.

  • $ – ссылка на идентификатор текущего объекта. Последующая часть выражения будет искаться в свойствах текущего объекта. Функционал противоположен макросу «$(имя_объекта)».

  • код_свойства – код свойства в доменной модели. Коды свойств ищутся без учета регистра.

  • макро_функция – специальная функция.

имя_функции([параметры[\,...]])

На данный момент поддерживаются макрофункции:

  • Rel( [Direction,] relationClassName ) – получить все объекты, связанные по данному классу связи.
  • Direction – значения из API сервиса «Связи» (dh-relations-service): ANY, SOURCE, TARGET. По умолчанию, обрабатываемый объект является SOURCE.

  • формат – строка форматирования, состоящая из двух компонент: имя_типа\,строка_формата.

  • Имя типа: DATETIME, DOUBLE, INTEGER, к которому должно приводиться входное значение.

  • строка формата: спецификация строки соответствует C#, но среди них есть универсальные подмножества, понятные разработчикам на других языках:

    • https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings

    • https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

  • пример формата: DATETIME,yyyy-MM-dd

Внешние маркеры

Формат внешних маркеров в рамках Системы не специфицируется, но внешние маркеры не должны содержать двоеточие, которое отсекает строку формата.

Его можно представить как: выражение[\:формат].

Если формат указан, то переданные значения обрабатываются так же, как и для внутренних маркеров.

Пример простой формы:

                        Директору ООО «Моя компания»

​                        [[GRK_SIGNER_LIST_NAME]]

​                        от {{%User%}} ({{%User%.email}})



{{DocumentType}} ({{RegistrationNumber:0000}})



  {{Annotation}}.

Дата регистрации: {{RegistrationDate:DD-MM-YYYY}}



Подпись заявителя (ФИО) {{%User%}}

Подпись директора (ФИО) [[GRK_SIGNER_LIST_NAME]]



Штамп: {{RegStamp}}