Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Шаблон отчета должен распологаться по путитчеты\шаблоны печатных форм"
Подсказка
Автоматическое формирование файла по настроенному шаблону (DOCX)
панель

Структура

Отображение дочерних

панель

Описание инструмента

Оглавление

Примечание
iconfalse
titleЛегенда
  • label - название метки
  • field name - название поля объекта
  • module - тип модуля
  • path - путь к шаблону
  • name - название шаблона латиницей
  • description - русскоязычное название шаблона
  • keyword - ключ шаблона. Ключ состоит из названия формы объекта и постфикса printform. Пример: outputprintform
  • short name organization - краткое название организации

Создание папки с шаблоном отчета

Структура шаблона
  • {folder name} - название папки
    • {file name}.docx - шаблон с метками
    • template.xml - описание конфигурации
панель

Описание инструмента

Оглавление




Создание шаблона docx

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

Без форматирования
MERGEFIELD "Новое поле"

При создании поля важно проверять галку "Сохранять формат при обновлении", иначе потеряется форматирование при вставке текста в поле, если до этого туда вставляли HTML. Остальные чекбоксы при создании поля должны быть выключены.

Имя метки в настройках и вводимое имя поля должны совпадать.

Поддерживается как чистый HTML, так и HTML + CSS (передаётся единой строкой в СЭД сервис).

Поле для вставки HTML должно находиться на новой строке, отдельно от остального текста, вне таблиц и списков.

пример.docx

Описание шаблона 

Создать файла tempate.xml, в котором:

  • name - название шаблона, которое должно соотвествовать названию файла docx 
  • description - описание шаблона
  • constructor - docx
  • format - DOCX
Блок кода
languagexml
titletemplate.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 - выражение для вычисления значения, которое подставится вместо метки. Обязательное.

    ВыражениеОписаниеgetDocumentFieldValue('Subject')

    извлекает значение заданного поля из документа. Если поле множественное, можно задавать значение разделителя через запятую для вывода значений в нужном формате (getDocumentFieldValue('Subject', ', ')). По умолчанию разделитель запятая с пробелом, если разделитель явно не задан, а в поле множественное.

    getDateDocumentFieldValue('OutDate', 'dd.mm.yyyy')

    используется для извлечения полей типа дата/дата-время. В качестве первого параметра принимает имя поля, в качестве второго - формат вывода даты.

    getBeardNamesFromDocumentField('S', ';')

    извлекает имена субъектов из заданного поля (S - имя поля в качестве примера) и заданным разделителем для множественного поля (т.е. краткие имена будут объединены заданным разделителем).

    getBeardNamesFromDocumentFields('S', 'S2', 'S3', ...)извлекает имена субъектов из заданного набора полеgetBeardNamesFromDocumentField('S')извлекает имена субъектов из заданного поля (S - имя поля в качестве примера). В случае множественного поля значения будут объединены запятой и пробелом.getContext() редоставляет доступ к контекстному документу, над которым можно использовать любые функции, специфичные лотусовому документу (getItemValue(..)getItemValueString(..) и т.д.). Со всем списком методов можно ознакомиться по ссылкеgetFieldValueFromLinkedDocument(getDocumentFieldValue('RkkDocId'), 'DogType')получает значение поля из некоторого "связанного" документа (под "связанностью" понимается любой документ, который можно получить из данного). Например, getFieldValueFromLinkedDocument(getDocumentFieldValue('RkkDocId'), 'DogType') извлечет поле DogType из документа, идентификатор которого является результатом вычисления getDocumentFieldValue('RkkDocId') на объектом текущего документа, иными словами идентификатор связанного документа извлекается из поля текущего документа, далее сам документ извлекается из хранилища по переданному идентификатору и из него берется указанное поле.

    getDateFieldValueFromLinkedDocument(getDocumentFieldValue('RkkDocId'), 'RDate', 'dd.MM.yyyy') 

    извлечет поле DogType из документа, идентификатор которого является результатом вычисления getDocumentFieldValue('RkkDocId') на объектом текущего документа, иными словами идентификатор связанного документа извлекается из поля текущего документа, далее сам документ извлекается из хранилища по переданному идентификатору и из него берется указанное поле.

    getDateFieldValueFromLinkedDocument(getDocumentFieldValue('RkkDocId'), 'RDate', 'dd.MM.yyyy') 

    получает значение поля типа "дата" или "дата-время" из некоторого "связанного" документа (под "связанностью" понимается любой документ, который можно получить из данного).
    Например, getDateFieldValueFromLinkedDocument(getDocumentFieldValue('RkkDocId'), 'RDate', 'dd.MM.yyyy') извлечет поле RDate из документа в заданном формате (dd.MM.yyyy), идентификатор которого является результатом вычисления getDocumentFieldValue('RkkDocId') на объектом текущего документа, иными словами идентификатор связанного документа извлекается из поля текущего документа, далее сам документ извлекается из хранилища по переданному идентификатору и из него берется указанное поле.

    getBeardNamesByBeardUNIDsField('SecondPersonID')

    извлечет краткие имена бород из поля, хранящего только идентификаторы бород.

  • moduleorg - идентификатор приложения, получается через запрос. Не обязательное.

    Блок кода
    languagesql
    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 - название организации, если используется мульти СО. Не обязательное.
    Блок кода
    titless_labels_settings.csv
    TYPE_NAME=ss_labels_settings;KEYS=title,moduletype;
    title;expression;moduleorg;moduletype;organization
    {label};getAddressFromBeard(getDocumentFieldValue('{field name}'), true);;"alias=""{module}""";

    Подключение отчета к формированию пакета для загрузки

    Конфигурация иморта отчетов

    Блок кода
    languagexml
    titlereport-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/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>

    Описание шаблона

    Блок кода
    titlereport_template.csv
    TYPE_NAME=report_template;KEYS=name;;
    name;description;constructor;type
    {name};{description};docx;printform

    Описание отчета

    Блок кода
    titleqr_report.csv
    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

    Подключение к форме с помощью ключевых слов

    Блок кода
    titleqr_report_keyword.csv
    TYPE_NAME=QR_ReportKeyword;KEYS=Report,Keyword
    Report;Keyword
    "name=""{description}""";{keyword}

    Подключение к модулю

    Блок кода
    titleqr_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}"""

    Новые метки добавляются в файл ss_labels_settings.csv