Описание формата разметки в шаблоне печатных форм¶
Маркером шаблонов является текст внутри документа, заключенный в двойные скобки:
- фигурные {{внутренний_маркер}};
- квадратные [[внешний_маркер]].
Значения для внутреннего маркера формируются сервисом печатных форм, значения внешних маркеров передаются извне в метод печати.
Внутренние маркеры:
- [] – опциональный элемент;
- ... – повторение;
- | – разделитель альтернативных значений;
- \ – "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}}