убрал примеры sql

This commit is contained in:
2025-06-16 15:18:37 +05:00
parent dd52414350
commit 178a2d4267
6 changed files with 27 additions and 66 deletions

View File

@ -133,9 +133,9 @@ CN=service ldap lexema,OU=Technical Accounts,OU=ЦифроваяПомощь,OU=
## Привязка КЭП
!!! question
При привязке УКЭП к пользователю ошибка: ` /#/view/ECPCertificateApplicationForm/1474:1 Access to XMLHttpRequest at 'http://localhost:9421/' from origin 'http://ecm-demo.dev.lan' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.`
При привязке УКЭП к пользователю ошибка: ` /#/view/1474:1 Access to XMLHttpRequest at 'http://localhost:9421/' from origin '' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.`
В конфигурационном файле (файл CSPServer.exe с расширением .config) в секции AvailableDomains должен быть прописан адрес сайта, например: https://demo-ecm.lexema.ru/. Подробнее про привязку токенов по КЭП можно ознакомиться в соответствующем [разделе](../Настройка для токенов КЭП/index.md)
В конфигурационном файле (файл CSPServer.exe с расширением .config) в секции AvailableDomains должен быть прописан адрес сайтаы. Подробнее про привязку токенов по КЭП можно ознакомиться в соответствующем [разделе](../Настройка для токенов КЭП/index.md)
## Использование Crontab для сервиса sheduler

View File

@ -33,7 +33,7 @@
Существует строго определённый набор значений поля "Id", приведённый в [таблице ниже](#таблица). Соответствующее им поле "Name" заполняется произвольно. В справочнике «Итоговые выборки поисковой системы» этим значениям будут поставлены в соответствие поля в таблицах, по которым будет осуществляться поиск и фильтрация документов с вложениями.
### Примеры поисковых запросов
<!-- ### Примеры поисковых запросов
<table>
<thead>
@ -255,9 +255,9 @@ SELECT t."VCode" AS "DocCode", t."TypeName" AS "DocType" FROM rp."RP_WorkContrac
<td>NumDoc, DateDoc</td>
</tr>
</tbody>
</table>
</table> -->
## Итоговые выборки поисковой системы
<!-- ## Итоговые выборки поисковой системы
Чтобы открыть справочник «Итоговые выборки поисковой системы», необходимо в меню в папке "Администрирование", подпапке "Документооборот", подпапке "Поисковая система" выбрать пункт «Итоговые выборки поисковой системы».
@ -322,7 +322,7 @@ WHERE 1 = 1
<!-- ![Пример документа "Итог FTS"](./media/ResultFTSForm.png) -->
В табличную часть "Фильтры" указывается следующее:
<!-- В табличную часть "Фильтры" указывается следующее:
**CUser - Создатель документа**
```sql
@ -437,7 +437,7 @@ and
where an."id" = 'Subtype'
and t."DocumentSubtype"::text = an."value"::text
)
```
``` -->
## Настройка документов
@ -445,7 +445,7 @@ and
![Настройка](media/DocflowDocumentForm.png)
## Примеры настраиваемых выборок
<!-- ## Примеры настраиваемых выборок
### Настраиваемая выборка "Приложение"
@ -453,11 +453,11 @@ and
| ------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Contractor | Контрагент | and exists(<br> select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'Contractor' and an."value" = cast(t."Contractor" as character varying)<br>) |
| Contract | Договор | and exists(<br> select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'Contract' and an."value" = cast(t."Contract" as character varying)<br>) |
| CUser | Создатель документа | and exists(<br> select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'CUser' and an."value" = cast(t."CUser" as character varying)<br>) |
| Initiator | Инициатор | and(<br> exists(<br> select 1<br> from "tmp_anFilters_for_documentSearch" as an<br> join comdoc."Route" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName"<br> where an."id" = 'Initiator'<br> and r."Initiator" = an."value"<br> )) |
| CUser | Создатель документа | and exists(<br> select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'CUser' and an."value" = cast(t."CUser" as character varying)<br>) | -->
<!-- | Initiator | Инициатор | and(<br> exists(<br> select 1<br> from "tmp_anFilters_for_documentSearch" as an<br> join comdoc."Route" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName"<br> where an."id" = 'Initiator'<br> and r."Initiator" = an."value"<br> )) |
| StageUser | Участник маршрута | and <br> exists(<br> select 1<br> from "tmp_anFilters_for_documentSearch" as an<br> join comdoc."Route" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName"<br> join comdoc."RouteStage" as s on s."PCode" = r."VCode"<br> join comdoc."StageItem" as i on i."PCode" = s."VCode"<br> where an."id" = 'StageUser'<br> and r."RouteStatus" NOT IN (4)<br> and i."StageUser" = an."value"<br> ) |
| 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" ) ) |
| 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" ) ) | -->
<!--
**В левую часть указывается скрипт:**
```sql
@ -526,9 +526,9 @@ FROM comdoc."ECPCertificateApplication" as t
:ItemFrom
WHERE t."COrg" = _orgidparam
:ItemWhere
```
``` -->
### Настраиваемая выборка "Канцелярия"
<!-- ### Настраиваемая выборка "Канцелярия"
| Код | Наименование | SQLScript |
| ---------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -536,8 +536,8 @@ WHERE t."COrg" = _orgidparam
| Contract | Договор | and exists(<br> select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'Contract' and an."value" = cast(t."Contract" as character varying)<br>) |
| CUser | Создатель документа | and exists(<br> select 1 from "tmp_anFilters_for_documentSearch" as an where an."id" = 'CUser' and an."value" = cast(t."CUser" as character varying)<br>) |
| Initiator | Инициатор | and(<br> exists(<br> select 1<br> from "tmp_anFilters_for_documentSearch" as an<br> join comdoc."Route" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName"<br> where an."id" = 'Initiator'<br> and r."Initiator" = an."value"<br> )) |
| StageUser | Участник маршрута | and <br> exists(<br> select 1<br> from "tmp_anFilters_for_documentSearch" as an<br> join comdoc."Route" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName"<br> join comdoc."RouteStage" as s on s."PCode" = r."VCode"<br> join comdoc."StageItem" as i on i."PCode" = s."VCode"<br> where an."id" = 'StageUser'<br> and r."RouteStatus" NOT IN (4)<br> and i."StageUser" = an."value"<br> ) |
| StageUser | Участник маршрута | and <br> exists(<br> select 1<br> from "tmp_anFilters_for_documentSearch" as an<br> join comdoc."Route" as r on r."DocCode" = t."VCode" and r."DocType" = t."TypeName"<br> join comdoc."RouteStage" as s on s."PCode" = r."VCode"<br> join comdoc."StageItem" as i on i."PCode" = s."VCode"<br> where an."id" = 'StageUser'<br> and r."RouteStatus" NOT IN (4)<br> and i."StageUser" = an."value"<br> ) | -->
<!--
**В левую часть указывается скрипт:**
```sql
@ -565,7 +565,7 @@ SELECT t."VCode" AS "DocCode"
, NULL::text AS "DocDefinition"
FROM dfd."DocflowDocument" as t
WHERE t."COrg" = _orgidparam
```
``` -->
## Автоматическое формирование отчета заявления с ЭП

View File

@ -86,7 +86,7 @@
В поле указывается часть с динамическим запросом, содержащим непосредственно текст для генерации документа.
Пример:
<!-- Пример:
```SQL
insert into "#forInsNotification" ("DocflowUser", "txt", "Link", "DocType", "DocName", "DocSubject", "IdWorker", "DateBeg", "Days", "TypeVacation", "Vacation", "DateEnd", "CopyTo", "txtSMS", "txtTelegram")
@ -151,7 +151,7 @@ where r."DocCode" = "ud"."VCode" and
!!! warning
Важным условием является наличие `null as "txt",` в динамическом запросе. В процессе запроса `null as "txt",` заменяется на текст из конструктора уведомлений. Если в запросе отсутствует `null as "txt",` , то система не сможет корректно обработать запрос и уведомление не будет отправлено пользователю.
![Текст](../Конструктор уведомлений/media/null.png)
![Текст](../Конструктор уведомлений/media/null.png) -->
В динамическом запросе прописывается вычисление, т.е. правило, по которому рассчитываются получатели уведомления, документы и другая необходимая информация. Данное вычисление на выходе имеет определенную структуру - перечень колонок (столбцов) для дальнейших настроек.
@ -171,9 +171,9 @@ where r."DocCode" = "ud"."VCode" and
Для дополнении новых служебных наименований необходимо обратиться в техническую поддержку.
В примере заполненной вкладки предоставлен ниже:
<!-- В примере заполненной вкладки предоставлен ниже:
![Задача](media/task.png)
![Задача](media/task.png) -->
После заполнения всех полей нажмите Сохранить и закрыть.
@ -229,7 +229,7 @@ where r."DocCode" = "ud"."VCode" and
![Руководители](media/rukovoditeli.png)
## Примеры рассылок
<!-- ## Примеры рассылок
### Уведомления об отпуске на основании Графика отпусков по внешним совместителям
@ -828,4 +828,4 @@ d."MiddleName" | Отчество | #query_Father#
```sql
call dfd."CreateCheckContractor"()
```-->
```-->

View File

@ -33,46 +33,7 @@
## Шаг 2. Установка дополнительного ПО на рабочем месте пользователя, который будет подписывать документы КЭП
Для настройки КЭП на рабочем месте пользователя нужно установить [драйверы Рутокен](https://www.rutoken.ru/support/download/windows) и [приложение CSPServer](https://www.lexema.ru/files/nodus_items/0001/0877/attaches/CSPSERVERL8.zip).
В конфигурационном файле (файл **CSPServer.exe** с расширением .config) в секции AvailableDomains должны быть прописаны адреса:
* адрес приложения (например, ```https://demo-ecm.lexema.ru```)
* ```http://localhost:9421```
Пример файла конфигурации:
```xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="CSPServer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<userSettings>
<CSPServer.Properties.Settings>
<setting name="AvailableDomains" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>http://localhost:9421</string>
<string>https://demo-ecm.lexema.ru</string>
</ArrayOfString>
</value>
</setting>
</CSPServer.Properties.Settings>
</userSettings>
</configuration>
```
Кроме указанных настроек на каждом автоматизированном рабочем месте, где предполагается использование квалифицированной электронной подписи, также необходимо установить компоненты [КриптоПро.net и КриптоПро CSP](https://install.kontur.ru/kekep). Подробную информацию по установке необходимого программного обеспечения, можно почитать в [шаге 1](аг_1_установкаополнительного_поа_сервере_приложения).
### Использование браузерного расширения КриптоПро ЭЦП
**КриптоПро ЭЦП Browser plug-in** предназначен для создания и проверки электронной подписи (ЭП) на веб-страницах и поддерживает работу с широким набором алгоритмов, как встроенных в операционную систему, так и доустановленных дополнительно.
Для настройки КЭП на рабочем месте пользователя нужно установить [драйверы Рутокен](https://www.rutoken.ru/support/download/windows) и браузерное расширение **КриптоПро ЭЦП Browser plug-in**, который предназначен для создания и проверки электронной подписи (ЭП) на веб-страницах и поддерживает работу с широким набором алгоритмов, как встроенных в операционную систему, так и доустановленных дополнительно.
!!! note
Для стабильной работы браузерного расширения рекомендуется обновить браузер до последней версии (104+).

View File

@ -68,7 +68,7 @@
[**Анкета_соискателя_Проверкааполнения_адресов**](#анкета_соискателя_проверкааполнения_адресов) | В [анкете соискателя](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F %D1%87%D0%B5%D1%80%D0%B5%D0%B7 %D1%81%D0%B0%D0%B9%D1%82 %D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8/) проверка на заполнение блока "Адреса"| | | 1 (предупреждение), 2 (обязательно к заполнению)
[**Анкета_соискателя_Проверкааполнения_семейного_положения**](#анкета_соискателя_проверкааполнения_семейного_положения) | В [анкете соискателя](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F %D1%87%D0%B5%D1%80%D0%B5%D0%B7 %D1%81%D0%B0%D0%B9%D1%82 %D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8/) проверка на заполнение блока "Семейное положение"| | | 1 (предупреждение), 2 (обязательно к заполнению)
[**Дата_принятия_положения_КЭДО**](ата_принятия_положения_кэдо) | Пользователям, которые приняты на работу позже даты принятия положения, автоматически проставляется дата КЭДО равная дате приема | 01.01.2023 | |
**почта по умолчанию** | Если не заполнена почта у физического лица, то по умолчанию при [создании пользователя](../Автоматическое создание пользователей/) берется заданное текстовое значение | no_reply@lexema.ru |
**почта по умолчанию** | Если не заполнена почта у физического лица, то по умолчанию при [создании пользователя](../Автоматическое создание пользователей/) берется заданное текстовое значение | |
[**ПереходНаКЭДО_НапоминаниеОбОригинале**](#переходнакэдоапоминаниеоборигинале) | Направляется рассылка тем, кто еще не активирован в системе, и согласен на КЭДО | | 1 |
[**Поддерживается ЭЦП**](#поддерживается_эцп) | В тело письмо о регистрации в системе добавляется информационное сообщение о сертификатах ЭП, а также в форме "Архив документов" отображается кнопка для скачивания архива с ЭП | | 1 |
[**пользователи_из_домена**](#пользователи_из_домена) | При создании доменных пользователей происходит сопоставление из Active Directory, также в форме управлении пользователями отображается кнопка "Пользователи AD" | | 1 |

View File

@ -253,7 +253,7 @@ search:
Также для планировщика возможно настроить иные задания с помощью справочника ["настройки заданий"](../Настройка%20внутрисистемных%20уведомлений/#настройкааданий_для_планировщика), где во вкладке "Задача" указывается часть содержащая динамический запрос для выполнения задачи. Текст для таких задач возможно назначить с помощью ["Конструктора уведомлений"](../Конструктор%20уведомлений/#вид_уведомления_настройкааданий_для_планировщика) Данные задачи отрабатывают при запуске задачи **"Уведомления Lexema"**. Далее представлены примеры запросов.
### Документы, не пришедшие из 1с
<!-- ### Документы, не пришедшие из 1с
??? Задача
@ -580,4 +580,4 @@ d."list" | Список | #query_list#
select null as "txt", null as "txtSMS", null as "txtTelegram", 'Уведомление HR о просрочке уведомлений об отпуске'
from dfd."SendingNotificationsExpiredNotificationVacation"( 1, 10) d
--
```
``` -->