Дерево страниц
Skip to end of metadata
Go to start of metadata

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 3 Следующий »

Автоматическое формирование файла по настроенному шаблону (DOCX)

Структура

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

Легенда

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

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

Шаблон отчета должен распологаться по путитчеты\шаблоны печатных форм"

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

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

MERGEFIELD "Новое поле"

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

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

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

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

пример.docx

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

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

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

    ВыражениеОписание
    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 - идентификатор приложения, получается через запрос. Не обязательное.

    Пример. Запрос, который находит именное приложение организации "ИсхД" в пустом комплекте и возвращает его 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 - название организации, если используется мульти СО. Не обязательное.

ss_labels_settings.csv
TYPE_NAME=ss_labels_settings;KEYS=title,moduletype;
title;expression;moduleorg;moduletype;organization
{label};getAddressFromBeard(getDocumentFieldValue('{field name}'), true);;"alias=""{module}""";

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

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

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/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>

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

report_template.csv
TYPE_NAME=report_template;KEYS=name;;
name;description;constructor;type
{name};{description};docx;printform

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

qr_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

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

qr_report_keyword.csv
TYPE_NAME=QR_ReportKeyword;KEYS=Report,Keyword
Report;Keyword
"name=""{description}""";{keyword}

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

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}"""
  • Нет меток