32 KiB
Настройка архива вложенных документов
Общее описание
Настройка архива вложенных документов необходима для работы аналитической формы Архив вложенных документов и происходит в несколько этапов:
- В документ «Справочники поисковой системы» заносятся поля для фильтра, по которым будут собираться вложения.
- В справочник «Итоговые выборки поисковой системы» добавить документ с выборкой из некоторой таблицы для документа или группы документов, если их сущности извлекаются одинаково.
- В документе "Настройка документа" на вкладке "Контекстный поиск" заполнить несколько полей.
- Обновить страницу (клавиша F5), чтобы изменения вступили в силу.
Справочники поисковой системы
Чтобы открыть документ «Справочники поисковой системы», необходимо в Меню в поисковой строке ввести - «Справочники поисковой системы».
Откроется документ "Справочники FTS". В нём необходимо заполнить таблицу "Фильтры".
Id | Name | Description |
---|---|---|
Contractor | Контрагент | |
Contract | Договор | |
SignatoryUser | Работник | |
Project | Проект | |
Initiator | Инициатор | |
CUser | Создатель документа | |
Curator | Куратор | |
StageUser | Участник маршрута | |
EmpowermentSubject | Полномочия |
Существует строго определённый набор значений поля "Id", приведённый в таблице ниже. Соответствующее им поле "Name" заполняется произвольно. В справочнике «Итоговые выборки поисковой системы» этим значениям будут поставлены в соответствие поля в таблицах, по которым будет осуществляться поиск и фильтрация документов с вложениями.
Итоговые выборки поисковой системы
Чтобы открыть справочник «Итоговые выборки поисковой системы», необходимо в меню в папке "Администрирование", подпапке "Документооборот", подпапке "Поисковая система" выбрать пункт «Итоговые выборки поисковой системы».
Откроется реестр "Итоги FTS".
Значения этого справочника будут предлагаться для выбора в документе ["Настройка документа"](../Настройка документов/index.md). Для создания нового документа необходимо нажать на кнопку "Создать" на верхней панели инструментов.
В поле "Выборка" необходимо ввести обозначение для документа или группы документов, если их сущности извлекаются одинаково, которое будет использоваться в качестве одного из значений в настройках документов. В поле "Примечание" можно внести пояснения, например, к каким именно документам относится выборка.
Под полем "Выборка" необходимо прописать результирующий селект, который в процессе расчета будет выполнять система. Структура селекта для всех выборок должна быть одинаковой, они будут объединяться с помощью оператора UNION
. Выборка состоит из следующих полей:
DocCode
- уникальный код документа, используемый в системе; как правилоVCode
.DocType
- тип документа; как правилоTypeName
.DocDate
- дата документа; свойство, которое указывается в Настройке документа и передаётся в качестве параметра; указывается:DateProperty
.DocNumber
- номер документа; свойство, которое указывается в Настройке документа и передаётся в качестве параметра; указывается:NumberProperty
.ContractorId
- уникальный код контрагента, используемый в системе.ContractId
- уникальный код договора, используемый в системе.AddContractId
- уникальный код дополнительного документа к договору, используемый в системе.ProjectId
- уникальный код проекта, используемый в системе.
В зависимости от подключаемых документов будут меняться таблица, стоящая после оператора FROM
, и присваиваемые значения установленных в селекте полей. Если для них есть соответствующие им поля в таблице, их необходимо присвоить. Например, полю ContractId
должен соответствовать код договора, который есть в таблице dbo.DocflowDocument
под названием Contract
. Если такого поля в таблице нет, необходимо присвоить значение null
. Например, в таблице dbo.DocflowDocument
не указывается код дополнительного документа к договору, поэтому значению AddContractId
присваивется null
.
В левую часть указывается скрипт:
SELECT t."VCode" AS "DocCode"
, t."TypeName" AS "DocType"
, :DateProperty AS "DocDate"
, :NumberProperty AS "DocNumber"
, NULL::bigint AS "ContractorId"
, NULL::bigint AS "ContractId"
, NULL::bigint AS "AddContractId"
, NULL::bigint AS "ProjectId"
FROM dfd."UniversalDocument" as t
WHERE 1 = 1
В правую часть:
SELECT t."VCode" AS "DocCode"
, t."TypeName" AS "DocType"
, :DateProperty AS "DocDate"
, :NumberProperty AS "DocNumber"
, NULL AS "DocName"
, NULL AS "DocTheme"
, NULL AS "DocDefinition"
FROM dfd."UniversalDocument" as t
WHERE 1 = 1
В таблицу справа "Фильтры" необходимо занести значения из Справочника поисковой системы, по которым будет осуществляться фильтр, и SQL-скрипт – кусок кода, который будет подставлен в предложение WHERE результирующего селекта. Значение, сравниваемое с an.Value
, будет совпадать со значением в столбце ID
таблицы "Фильтр". Значение, сравниваемое с an.Value
, будет совпадать с полем таблицы, которое присваивается одному из полей селекта.
Примеры настраиваемых выборок
Настраиваемая выборка для кадрового электронного документооборота
Код | Наименование | SQLScript |
---|---|---|
CUser | Создатель документа | and exists( select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'CUser' and an."value" = cast(t."CUser" as character varying) ) |
Initiator | Инициатор |
and(
|
StageUser | Участник маршрута |
and
|
SignatoryUser | Работник |
and(
|
EmpowermentSubject | Полномочия |
and
|
Filial | Организация |
and exists(
|
Настройка документов
После заполнения справочника «Итоговые выборки поисковой системы» необходимо перейти в реестр "Настройка документов". В документе необходимо заполнить поля typeNameProperty, dateProperty и numberProperty соответствующими им наименованиями полей таблицы: типа документа, даты документа и номера документа. Также необходимо в поле "Итоги" выбрать одно из значений справочника «Итоговые выборки поисковой системы». После заполнения этих полей необходимо поставить галочку в поле FTS2 и обновить страницу, чтобы изменения вступили в силу.
Примеры настраиваемых выборок
Настраиваемая выборка "Приложение"
Код | Наименование | SQLScript |
---|---|---|
Contractor | Контрагент | and exists( select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'Contractor' and an."value" = cast(t."Contractor" as character varying) ) |
Contract | Договор | and exists( select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'Contract' and an."value" = cast(t."Contract" as character varying) ) |
CUser | Создатель документа | and exists( select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'CUser' and an."value" = cast(t."CUser" as character varying) ) |
Initiator | Инициатор | and( exists( select 1 from "tmp_anFilters_for_documentSearch" as an join comdoc."Route" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName" where an."id" = 'Initiator' and r."Initiator" = an."value" )) |
StageUser | Участник маршрута | and exists( select 1 from "tmp_anFilters_for_documentSearch" as an join comdoc."Route" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName" join comdoc."RouteStage" as s on s."PCode" = r."VCode" join comdoc."StageItem" as i on i."PCode" = s."VCode" where an."id" = 'StageUser' and r."RouteStatus" NOT IN (4) and i."StageUser" = an."value" ) |
SignatoryUser | Работник | and(exists( select 1 from "tmp_anFilters_for_documentSearch" as an join comdoc."Route" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName" where an."id" = 'SignatoryUser' and r."DocType" = 'EmployeeStatement' and r."Initiator" = an."value" ) or exists( select 1 from "tmp_anFilters_for_documentSearch" as an join comdoc."Route" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName" join comdoc."RouteStage" as s on s."PCode" = r."VCode" join comdoc."StageItem" as i on i."PCode" = s."VCode" where an."id" = 'SignatoryUser' and r."DocType" = 'LND' AND r."RouteStatus" NOT IN(4) AND s."IsMarked" IS NOT true AND COALESCE(i."DocumentAction", 0) IN (20, 30) and i."StageUser" = an."value" ) or exists( select 1 from "tmp_anFilters_for_documentSearch" as an join comdoc."ReadListItem" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName" where an."id" = 'SignatoryUser' and r."DocType" = 'LND' |
and r."DocflowUser" = an."value" ) or exists( select 1 from "tmp_anFilters_for_documentSearch" as an join dfd."EmpowermentWorkerDetail" as ewd on ewd."PCode" = t."VCode" JOIN rp."RP_Person" AS p ON ewd."PersonId" = p."VCode" JOIN rp."RP_PersonContact" AS pc on p."VCode" = pc."Pcode" where an."id" = 'SignatoryUser' and t."TypeName" = 'EmpowermentConstructor' and pc."IdTypeContact" = 6 and pc."Code" = an."value" ) ) |
В левую часть указывается скрипт:
SELECT t."VCode" AS "DocCode"
, t."TypeName" AS "DocType"
, :DateProperty AS "DocDate"
, :NumberProperty AS "DocNumber"
, t."Contractor" AS "ContractorId"
, t."Contract" AS "ContractId"
, t."VCode" AS "AddContractId"
, t."Projects" AS "ProjectId"
FROM contract."AdditionalContract" as t
WHERE t."COrg" = _orgidparam
В правую часть:
SELECT t."VCode" AS "DocCode"
, t."TypeName" AS "DocType"
, :DateProperty AS "DocDate"
, :NumberProperty AS "DocNumber"
, NULL::text AS "DocName"
, t."SubjectOfContract" AS "DocTheme"
, 'Содержание' AS "DocDefinition"
:ItemSelect
FROM contract."AdditionalContract" as t
:ItemFrom
WHERE t."COrg" = _orgidparam
:ItemWhere
Настраиваемая выборка "Заявка на выпуск сертификата ЭП"
Код | Наименование | SQLScript |
---|---|---|
SignatoryUser | Работник | "and exists( select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'SignatoryUser' and an."value" = cast(t."DocflowUser" as character varying))" |
В левую часть указывается скрипт:
SELECT t."VCode" AS "DocCode"
, t."TypeName" AS "DocType"
, :DateProperty AS "DocDate"
, :NumberProperty AS "DocNumber"
, NULL::bigint AS "ContractorId"
, NULL::bigint AS "ContractId"
, NULL::bigint AS "AddContractId"
, NULL::bigint AS "ProjectId"
FROM comdoc."ECPCertificateApplication" as t
WHERE t."COrg" = _orgidparam
В правую часть:
SELECT t."VCode" AS "DocCode"
, t."TypeName" AS "DocType"
, :DateProperty AS "DocDate"
, :NumberProperty AS "DocNumber"
, NULL::text AS "DocName"
, NULL::text AS "DocTheme"
, NULL::text AS "DocDefinition"
:ItemSelect
FROM comdoc."ECPCertificateApplication" as t
:ItemFrom
WHERE t."COrg" = _orgidparam
:ItemWhere
Настраиваемая выборка "Канцелярия"
Код | Наименование | SQLScript |
---|---|---|
Contractor | Контрагент | and exists( select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'Contractor' and an."value" = cast(t."Contractor" as character varying) ) |
Contract | Договор | and exists( select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'Contract' and an."value" = cast(t."Contract" as character varying) ) |
CUser | Создатель документа | and exists( select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'CUser' and an."value" = cast(t."CUser" as character varying) ) |
Initiator | Инициатор | and( exists( select 1 from "tmp_anFilters_for_documentSearch" as an join comdoc."Route" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName" where an."id" = 'Initiator' and r."Initiator" = an."value" )) |
StageUser | Участник маршрута | and exists( select 1 from "tmp_anFilters_for_documentSearch" as an join comdoc."Route" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName" join comdoc."RouteStage" as s on s."PCode" = r."VCode" join comdoc."StageItem" as i on i."PCode" = s."VCode" where an."id" = 'StageUser' and r."RouteStatus" NOT IN (4) and i."StageUser" = an."value" ) |
В левую часть указывается скрипт:
SELECT t."VCode" AS "DocCode"
, t."TypeName" AS "DocType"
, :DateProperty AS "DocDate"
, :NumberProperty AS "DocNumber"
, t."Contractor" AS "ContractorId"
, t."VCode" AS "ContractId"
, NULL::bigint AS "AddContractId"
, t."Projects" AS "ProjectId"
FROM dfd."DocflowDocument" as t
WHERE t."COrg" = _orgidparam
В правую часть:
SELECT t."VCode" AS "DocCode"
, t."TypeName" AS "DocType"
, :DateProperty AS "DocDate"
, :NumberProperty AS "DocNumber"
, NULL::text AS "DocName"
, NULL::text AS "DocTheme"
, NULL::text AS "DocDefinition"
FROM dfd."DocflowDocument" as t
WHERE t."COrg" = _orgidparam
Автоматическое формирование отчета заявления с ЭП
На проекте возможно настроить автоматическое формирование отчета заявления с электронными подписями по завершению маршрута. Для этого в документе "Настройка учетной политики предприятия" нужно настроить константу Интеграция с 1С с помощью сервиса ODATA со значением 1
По завершению маршрута в окно вложений заявления добавится печатная форма с ЭП. Архив с ЭП можно будет скачать по кнопке "Скачать архив с ЭП".
Скачать архив с ЭП можно только когда в маршруте пройдены все этапы с действием "Подписан ЭП" и текущий этап не требует подписания документа.
Архив скачается в папку "Загрузки" (Downloads).
В архиве будут находиться: оригинал заявления, отчет по подписанию и файл с информацией о подписании данного документа по каждому сотруднику.
Настройка отчета без включения пропущенных этапов подписания
В проекте есть возможность не добавлять в отчет тех сотрудников, кто включен в маршрут через ИЛИ и НЕ ПРОШЕЛ этап подписания.
Для этого в документе "Настройка учетной политики предприятия" нужно настроить константу Скрывать участников маршрута без действий со значением 1.
Результат сформированного отчета: