diff --git a/docs/Admin manuals/Настройка архива/media/CustomFTSFiltersForm.png b/docs/Admin manuals/Настройка архива/media/CustomFTSFiltersForm.png new file mode 100644 index 0000000..dd6b6c0 Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/CustomFTSFiltersForm.png differ diff --git a/docs/Admin manuals/Настройка архива/media/CustomFTSFiltersMenu.png b/docs/Admin manuals/Настройка архива/media/CustomFTSFiltersMenu.png new file mode 100644 index 0000000..a0165f3 Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/CustomFTSFiltersMenu.png differ diff --git a/docs/Admin manuals/Настройка архива/media/DocflowDocumentForm.png b/docs/Admin manuals/Настройка архива/media/DocflowDocumentForm.png new file mode 100644 index 0000000..c72dfb8 Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/DocflowDocumentForm.png differ diff --git a/docs/Admin manuals/Настройка архива/media/Downloads.png b/docs/Admin manuals/Настройка архива/media/Downloads.png new file mode 100644 index 0000000..ce9d67e Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/Downloads.png differ diff --git a/docs/Admin manuals/Настройка архива/media/ResultFTSForm.png b/docs/Admin manuals/Настройка архива/media/ResultFTSForm.png new file mode 100644 index 0000000..59912d3 Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/ResultFTSForm.png differ diff --git a/docs/Admin manuals/Настройка архива/media/ResultFTSHeader.png b/docs/Admin manuals/Настройка архива/media/ResultFTSHeader.png new file mode 100644 index 0000000..627a60e Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/ResultFTSHeader.png differ diff --git a/docs/Admin manuals/Настройка архива/media/ResultFTSMenu.png b/docs/Admin manuals/Настройка архива/media/ResultFTSMenu.png new file mode 100644 index 0000000..7d49848 Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/ResultFTSMenu.png differ diff --git a/docs/Admin manuals/Настройка архива/media/ResultFTSRegistry.png b/docs/Admin manuals/Настройка архива/media/ResultFTSRegistry.png new file mode 100644 index 0000000..7f09ff3 Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/ResultFTSRegistry.png differ diff --git a/docs/Admin manuals/Настройка архива/media/arhiv.png b/docs/Admin manuals/Настройка архива/media/arhiv.png new file mode 100644 index 0000000..cc4dec6 Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/arhiv.png differ diff --git a/docs/Admin manuals/Настройка архива/media/attachments.png b/docs/Admin manuals/Настройка архива/media/attachments.png new file mode 100644 index 0000000..dd3d1b6 Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/attachments.png differ diff --git a/docs/Admin manuals/Настройка архива/media/constant.png b/docs/Admin manuals/Настройка архива/media/constant.png new file mode 100644 index 0000000..283770f Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/constant.png differ diff --git a/docs/Admin manuals/Настройка архива/media/constant2.png b/docs/Admin manuals/Настройка архива/media/constant2.png new file mode 100644 index 0000000..cea75fd Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/constant2.png differ diff --git a/docs/Admin manuals/Настройка архива/media/create.png b/docs/Admin manuals/Настройка архива/media/create.png new file mode 100644 index 0000000..c983ec2 Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/create.png differ diff --git a/docs/Admin manuals/Настройка архива/media/docExample.png b/docs/Admin manuals/Настройка архива/media/docExample.png new file mode 100644 index 0000000..359abbe Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/docExample.png differ diff --git a/docs/Admin manuals/Настройка архива/media/skipped.png b/docs/Admin manuals/Настройка архива/media/skipped.png new file mode 100644 index 0000000..dd6f7af Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/skipped.png differ diff --git a/docs/Admin manuals/Настройка архива/media/skippedPrint.png b/docs/Admin manuals/Настройка архива/media/skippedPrint.png new file mode 100644 index 0000000..7c18b2e Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/skippedPrint.png differ diff --git a/docs/Admin manuals/Настройка архива/media/stages.png b/docs/Admin manuals/Настройка архива/media/stages.png new file mode 100644 index 0000000..16a5d0f Binary files /dev/null and b/docs/Admin manuals/Настройка архива/media/stages.png differ diff --git a/docs/Admin manuals/Настройка архива/Настройка архива вложенных документов.md b/docs/Admin manuals/Настройка архива/Настройка архива вложенных документов.md new file mode 100644 index 0000000..90949c2 --- /dev/null +++ b/docs/Admin manuals/Настройка архива/Настройка архива вложенных документов.md @@ -0,0 +1,317 @@ +# Настройка архива вложенных документов + +## Общее описание + +Настройка архива вложенных документов необходима для работы аналитической формы [Архив вложенных документов](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/%D0%A1%D0%AD%D0%94/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0 %D1%81%D0%BE %D0%B2%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0 %D1%81%D0%BE %D0%B2%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8/#%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D1%8B%D0%B9_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82) и происходит в несколько этапов: + +* В документ «Справочники поисковой системы» заносятся поля для фильтра, по которым будут собираться вложения. +* В справочник «Итоговые выборки поисковой системы» добавить документ с выборкой из некоторой таблицы для документа или группы документов, если их сущности извлекаются одинаково. +* В документе "Настройка документа" на вкладке "Контекстный поиск" заполнить несколько полей. +* Обновить страницу (клавиша F5), чтобы изменения вступили в силу. + +## Справочники поисковой системы + +Чтобы открыть документ «Справочники поисковой системы», необходимо в меню в папке "Администрирование", подпапке "Документооборот", подпапке "Поисковая система" выбрать пункт «Справочники поисковой системы». + +![Меню](./media/CustomFTSFiltersMenu.png) + +Откроется документ "Справочники FTS". В нём необходимо заполнить таблицу "Фильтры". + +![Справочники FTS](./media/CustomFTSFiltersForm.png){: .zoom} + +Id | Name | Description +---|------|------------ +Contractor | Контрагент | +Contract | Договор | +SignatoryUser | Работник | +Project | Проект | +Initiator | Инициатор | +CUser | Создатель документа | +Curator | Куратор | +StageUser | Участник маршрута | +EmpowermentSubject | Полномочия | + + +Существует строго определённый набор значений поля "Id", приведённый в [таблице ниже](#таблица). Соответствующее им поле "Name" заполняется произвольно. В справочнике «Итоговые выборки поисковой системы» этим значениям будут поставлены в соответствие поля в таблицах, по которым будет осуществляться поиск и фильтрация документов с вложениями. + +## Итоговые выборки поисковой системы + +Чтобы открыть справочник «Итоговые выборки поисковой системы», необходимо в меню в папке "Администрирование", подпапке "Документооборот", подпапке "Поисковая система" выбрать пункт «Итоговые выборки поисковой системы». + +![Меню](./media/ResultFTSMenu.png) + +Откроется реестр "Итоги FTS". + +![Итоги FTS](./media/ResultFTSRegistry.png){: .zoom} + +Значения этого справочника будут предлагаться для выбора в документе ["Настройка документа"](../Настройка документов/Настройка документов.md). Для создания нового документа необходимо нажать на кнопку "Создать" на верхней панели инструментов. + +![Кнопка "Создать"](./media/create.png) + +В поле "Выборка" необходимо ввести обозначение для документа или группы документов, если их сущности извлекаются одинаково, которое будет использоваться в качестве одного из значений в настройках документов. В поле "Примечание" можно внести пояснения, например, к каким именно документам относится выборка. + +![Пример заполнения полей "Выборка" и "Примечание"](./media/ResultFTSHeader.png) + +Под полем "Выборка" необходимо прописать результирующий селект, который в процессе расчета будет выполнять система. Структура селекта для всех выборок должна быть одинаковой, они будут объединяться с помощью оператора ```UNION```. Выборка состоит из следующих полей: + +* ```DocCode``` - уникальный код документа, используемый в системе; как правило ```VCode```. +* ```DocType``` - тип документа; как правило ```TypeName```. +* ```DocDate``` - дата документа; свойство, которое указывается в *Настройке документа* и передаётся в качестве параметра; указывается ```:DateProperty```. +* ```DocNumber``` - номер документа; свойство, которое указывается в *Настройке документа* и передаётся в качестве параметра; указывается ```:NumberProperty```. +* ```ContractorId``` - уникальный код контрагента, используемый в системе. +* ```ContractId``` - уникальный код договора, используемый в системе. +* ```AddContractId``` - уникальный код дополнительного документа к договору, используемый в системе. +* ```ProjectId``` - уникальный код проекта, используемый в системе. + +В зависимости от подключаемых документов будут меняться таблица, стоящая после оператора ```FROM```, и присваиваемые значения установленных в селекте полей. Если для них есть соответствующие им поля в таблице, их необходимо присвоить. Например, полю ```ContractId``` должен соответствовать код договора, который есть в таблице ```dbo.DocflowDocument``` под названием ```Contract```. Если такого поля в таблице нет, необходимо присвоить значение ```null```. Например, в таблице ```dbo.DocflowDocument``` не указывается код дополнительного документа к договору, поэтому значению ```AddContractId``` присваивется ```null```. + +**В левую часть указывается скрипт:** + +```sql +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 contract."Contract" as t +WHERE t."COrg" = _orgidparam + +``` + +**В правую часть:** + +```sql +SELECT t."VCode" AS "DocCode" + , t."TypeName" AS "DocType" + , :DateProperty AS "DocDate" + , :NumberProperty AS "DocNumber" + , NULL::text AS "DocName" + , t."SubjectOfContract" AS "DocTheme" + , NULL::text AS "DocDefinition" +:ItemSelect +FROM contract."Contract" as t +:ItemFrom +WHERE (t."COrg" = _orgidparam) +:ItemWhere +``` + +В таблицу справа "Фильтры" необходимо занести значения из *Справочника поисковой системы*, по которым будет осуществляться фильтр, и SQL-скрипт – кусок кода, который будет подставлен в предложение WHERE результирующего селекта. Значение, сравниваемое с ```an.Value```, будет совпадать со значением в столбце ```ID``` таблицы "Фильтр". Значение, сравниваемое с ```an.Value```, будет совпадать с полем таблицы, которое присваивается одному из полей селекта. + + + + +| Код | Наименование | 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."VCode" as character varying)) | +| Project | Проект | and exists(
select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'Project' and an."value" = cast(t."Project" as character varying)) | +| Curator | Куратор | and(
exists(
select 1
from "tmp_anFilters_for_documentSearch" as an
join rp."RP_Worker" w ON t."Manager" = w."VCode"
JOIN rp."RP_Person" AS p ON w."IdPerson" = p."VCode"
JOIN rp."RP_PersonContact" AS pc on p."VCode" = pc."Pcode"
where an."id" = 'Curator'
and pc."IdTypeContact" = 6
and pc."Code" = 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"
) | +| 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")) | + +## Настройка документов + +После заполнения справочника «Итоговые выборки поисковой системы» необходимо перейти в реестр "Настройка документов". В документе необходимо заполнить поля typeNameProperty, dateProperty и numberProperty соответствующими им наименованиями полей таблицы: типа документа, даты документа и номера документа. Также необходимо в поле "Итоги" выбрать одно из значений справочника «Итоговые выборки поисковой системы». После заполнения этих полей необходимо поставить галочку в поле FTS2 и обновить страницу, чтобы изменения вступили в силу. + +![Настройка](media/DocflowDocumentForm.png) + +## Примеры настраиваемых выборок + +### Настраиваемая выборка для кадрового электронного документооборота + +| Код | Наименование | 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(
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"
)) | +| EmpowermentSubject | Полномочия | and
exists(
select 1
from "tmp_anFilters_for_documentSearch" as an
join dfd."EmpowermentSubjectDetail" as esd on esd."PCode" = t."VCode"
JOIN dfd."EmpowermentSubject" AS s ON esd."Subject" = s."VCode"
where an."id" = 'EmpowermentSubject'
and t."TypeName" = 'EmpowermentConstructor'
and s."VCode" = an."value"::bigint
)
| + +**В левую часть указывается скрипт:** + +```sql +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 t."COrg" = _orgidparam +``` + +**В правую часть:** + +```sql +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."UniversalDocument" as t +WHERE t."COrg" = _orgidparam +``` + +### Настраиваемая выборка "Приложение" + +| Код | Наименование | 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"
) | + +**В левую часть указывается скрипт:** + +```sql +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 +``` + +**В правую часть:** + +```sql +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))" + +**В левую часть указывается скрипт:** + +```sql +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 +``` + +**В правую часть:** + +```sql +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"
) | + +**В левую часть указывается скрипт:** + +```sql +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 +``` + +**В правую часть:** + +```sql +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 + +![Константа](media/constant.png){: .zoom} + +По завершению маршрута в окно вложений заявления добавится печатная форма с ЭП. Архив с ЭП можно будет скачать по кнопке "Скачать архив с ЭП". + +![Вложения](media/attachments.png){: .zoom} + +Скачать архив с ЭП можно только когда в маршруте пройдены все этапы с действием "Подписан ЭП" и текущий этап +не требует подписания документа. + +![Этапы](media/stages.png){: .zoom} + +Архив скачается в папку "Загрузки" (Downloads). + +![Загрузки](media/Downloads.png){: .zoom} + +В архиве будут находиться: оригинал заявления, отчет по подписанию и файл с информацией о подписании данного документа по каждому сотруднику. + +![Архив ЭП](media/arhiv.png){: .zoom} + +## Настройка отчета без включения пропущенных этапов подписания + +В проекте есть возможность не добавлять в отчет тех сотрудников, кто включен в маршрут через **ИЛИ** и **НЕ ПРОШЕЛ** этап подписания. + +![Статус пропущен](media/skipped.png){: .zoom} + +Для этого в документе "Настройка учетной политики предприятия" нужно настроить константу **Скрывать участников маршрута без действий** со значением 1. + +![Константа2](media/constant2.png){: .zoom} + +Результат сформированного отчета: + +![Отчет маршрута](media/skippedPrint.png){: .zoom} \ No newline at end of file