Создание шаблона docx
В новый документ docx добавить поля-метки. Метки добавляются следующим методом "Вставка" => "Экспресс-блоки" => "Поле: "Категория" = "Слияние" => "MERGEFIELD" => "Коды поля". Далее в кавычках добавляется название нового поля, например:
Без форматирования |
---|
MERGEFIELD "Новое поле" |
При создании поля важно проверять галку "Сохранять формат при обновлении", иначе потеряется форматирование при вставке текста в поле, если до этого туда вставляли HTML. Остальные чекбоксы при создании поля должны быть выключены.
Имя метки в настройках и вводимое имя поля должны совпадать.

Поддерживается как чистый HTML, так и HTML + CSS (передаётся единой строкой в СЭД сервис).
Поле для вставки HTML должно находиться на новой строке, отдельно от остального текста, вне таблиц и списков.
пример.docx
Описание шаблона
Создать файла tempate.xml, в котором:
- name - название шаблона, которое должно соотвествовать названию файла docx
- description - описание шаблона
- constructor - docx
- format - DOCX
Блок кода |
---|
language | xml |
---|
title | template.xml |
---|
|
<?xml version="1.1" encoding="UTF-8" standalone="yes"?>
<ReportMetadataConfig name="{name}" description="{description}" constructor="docx">
<formats>
<format>DOCX</format>
</formats>
</ReportMetadataConfig> |
Описание новых меток
Описание меток происходит в файле ss_labels_settings.csv по пути "отчеты\описание меток", где:
title - название метки в docх шаблоне. Обязательное.expression - SpEL-выражение, с подключённым функционалом LabelPrint для вычисления значения, которое подставится вместо метки. Обязательное.
moduleorg - идентификатор приложения, получается через запрос. Не обязательное.
Блок кода |
---|
language | sql |
---|
title | Пример. Запрос, который находит именное приложение организации "ИсхД" в пустом комплекте и возвращает его id |
---|
|
select mo.id from ss_moduleorg mo
inner join ss_module m on m.id = mo.module
inner join ss_moduletype mt on mt.id = m.type
join SO_OrgSystem os on os.id = mo.organization
join SO_StructureUnit su ON su.id = os.id
where mt.alias = '{module}' AND m.complect='' AND m.isNamed=1 AND su.shortname = '{short name organization}' |
moduletype - тип модуля. Обязательное.organization - название организации, если используется мульти СО. Не обязательное. Блок кода |
---|
title | ss_labels_settings.csv |
---|
|
TYPE_NAME=ss_labels_settings;KEYS=title,moduletype;
title;expression;moduleorg;moduletype;organization
{label};getDocumentFieldValue('{field name}');;"alias=""{module}"""; |
Подключение отчета к формированию пакета для загрузки
Конфигурация иморта отчетов
Блок кода |
---|
language | xml |
---|
title | report-import-config.xml |
---|
|
<?xml version="1.0" encoding="UTF-8"?>
<report-import-config>
<!-- Путь к конфигурационным файлам к описанию отчетов -->
<csv>
<!-- Описание шаблона -->
<file-path>reports/descriptions/cp1251/report_template.csv</file-path>
<!-- Описание отчета -->
<file-path>reports/descriptions/cp1251/qr_report.csv</file-path>
<!-- Указание ключевого слова -->
<file-path>reports/descriptions/cp1251/qr_report_keyword.csv</file-path>
<!-- Указание модуля -->
<file-path>reports/descriptions/cp1251/qr_report_supported_type.csv</file-path>
<!-- Указание дескриптора -->
<file-path>reports/descriptions/cp1251/qr_reportviewdescription.csv</file-path>
<!-- Метки шаблона -->
<file-path>reports/descriptions/cp1251/ss_labels_settings.csv</file-path>
</csv>
<!-- Шаблоны отчетов -->
<templates>
<!-- Путь к шаблону -->
<template>
<file-path>reports/{path}/template.xml</file-path>
<file-path>reports/{path}/{name}.docx</file-path>
</template>
</templates>
</report-import-config> |
Описание шаблона
Блок кода |
---|
|
TYPE_NAME=report_template;KEYS=name;;
name;description;constructor;type
{name};{description};docx;printform |
Описание отчета
Блок кода |
---|
|
TYPE_NAME=QR_Report;KEYS=Name,Template;;;;;;;
Name;Comment;Module;IsSelectionBased;Template;PredefinedParameters;DefaultParamFormula;DialogSchema;IsAvailableInAnalytics;notavailableinrepcoll;isprintimmediately;issendchlog;order
{description};;select m.id from ss_module m inner join ss_moduletype mt on mt.id = m.type where mt.alias = 'QRCentre-AF5';true;"name=""{name}""";;;;false;false;false;false;60 |
Указание ключевого слова
Блок кода |
---|
title | qr_report_keyword.csv |
---|
|
TYPE_NAME=QR_ReportKeyword;KEYS=Report,Keyword
Report;Keyword
"name=""{description}""";{keyword} |
Указание модуля
Блок кода |
---|
title | qr_report_supported_type.csv |
---|
|
TYPE_NAME=QR_ReportSupportedType;KEYS=Report,ModuleType
Report;ModuleType
SELECT r.id FROM QR_Report r JOIN report_template rt on rt.id = r.template WHERE rt.name = '{name}';"alias=""{module}""" |
Указание дескрипторов
Блок кода |
---|
title | qr_reportviewdescription.csv |
---|
|
TYPE_NAME=QR_ReportViewDescription;KEYS=Report,ViewDescription
Report;ViewDescription
SELECT r.id FROM QR_Report r JOIN report_template rt on rt.id = r.template WHERE rt.name = '{name}';{descriptor name}Новые метки добавляются в файл ss_labels_settings.csv