Compare commits

..

6 Commits

31 changed files with 128 additions and 18 deletions

View File

@ -47,7 +47,6 @@ theme:
- navigation.tracking
- toc.follow
- toc.integrate
- navigation.tabs.sticky
- search.suggest
- header.autohide
- navigation.path

View File

@ -1,3 +1,7 @@
---
search:
boost: 2
---
# Конструктор документов
## Общее описание назначения документа
@ -67,7 +71,7 @@
Новый созданный документ, выглядит следующим образом:
![Рисунок 5 Документ "Конструктор документов"](./media/docInit.png)
![Alt text](media/image-8.png)
Обязательными полями для заполнения являются:
@ -95,9 +99,9 @@
При выключенной опции, генерация номера документа будет автоматическая.
**Не требовать дату перехода КЭДО** - при включенной опции данный подтип документа может создавать [сотрудник](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/Сотрудники/), у которого отсутствует дата перехода на КЭДО. Если опция отключена, то создание документа с данным подтипом невозможно без указания даты перехода на КЭДО. По умолчанию для создания любого документа необходимо указывать дату перехода на КЭДО у сотрудника.
**Не требовать дату перехода КЭДО** - при включенной опции данный подтип документа может создавать [сотрудник](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Сотрудники/), у которого отсутствует дата перехода на КЭДО. Если опция отключена, то создание документа с данным подтипом невозможно без указания даты перехода на КЭДО. По умолчанию для создания любого документа необходимо указывать дату перехода на КЭДО у сотрудника.
**Показывать инфо о графике отпусков** - при включенной опции в панели инструментов в [заявлении от сотрудника](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/Заявления%20от%20сотрудников/) появляется кнопка "График отпусков", при нажатии на которую во всплывающем окне отображается данные по графику отпусков сотрудника инициатора.
**Показывать инфо о графике отпусков** - при включенной опции в панели инструментов в [заявлении от сотрудника](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Заявления от сотрудников/) появляется кнопка "График отпусков", при нажатии на которую во всплывающем окне отображается данные по графику отпусков сотрудника инициатора.
**Номер п/п** - с помощью данного поля можно упорядочить подтипы в рамках одного типа документа в выпадающем списке. Например, заявления на разные вида отпуска
@ -110,7 +114,7 @@
![Уведомление](media/uvedomlenie.png) -->
**Запретить создавать под замещением** - при включенной опции выбранный подтип документа нельзя создавать под [замещением](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/Функция%20замещения/).
**Запретить создавать под замещением** - при включенной опции выбранный подтип документа нельзя создавать под [замещением](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Функция замещения/).
**Напоминать об отправке по маршруту** - при включенной опции выводит информационное сообщение об отправке заявления по маршруту. Работает при условиях, что автоматически формируется маршрут и на данный подтип настроен [один шаблон маршрута](../Настройка шаблонов маршрутов/index.md)
@ -141,13 +145,13 @@
Для выбора необходимого типа в документе "Конструктор документов" необходимо раскрыть справочник "Тип документа" и выбрать тип карточки.
![Рисунок 7 Выбор типа документа](./media/docTypeChoose.png)
![Alt text](media/image-9.png)
После выбора типа документа необходимо выбрать подтип документа.
![Выбор подтипа документа](./media/subTypeChoose.png)
![Alt text](media/image-10.png)
Если требуемый подтип отсутствует в выпадающем списке, можно добавить новый подтип через [реестр "Подтип документа"](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/Подтипы%20документов/) или при помощи вложенной формы.
Если требуемый подтип отсутствует в выпадающем списке, можно добавить новый подтип через [реестр "Подтип документа"](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Подтипы документов/) или при помощи вложенной формы.
![Рисунок 8 Реестр "Подтип документа"](./media/image7.png)
@ -401,17 +405,22 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
При нажатии на данную кнопку автоматически создается форма шаблона маршрута с выбранными типом и подтипом документа из вкладки "Основная". Подробнее о работе с данной формой можно ознакомиться в статье ["Настройка шаблонов маршрутов"](../Настройка шаблонов маршрутов/index.md).
## Перейти в документ
При нажатии на данную кнопку возможно перейти в настройка выбранного [подтипа](../Подтипы документов/index.md) либо в [настройки](../Настройка документов/index.md) документа
## Закрытие шаблона { #закрытие-шаблона}
В случае, если уже существует другой шаблон с таким же подтипом документа, необходимо, чтобы только один из шаблонов был действующим. Для этого необходимо открыть старую версию шаблона и поставить галочку в поле "Шаблон закрыт/не используется", расположенную в верхней части формы, а затем нажать на кнопку "Сохранить".
Аналогичные действия производятся в том случае, если есть документ с неактуальным подтипом.
![Рисунок 14 Расположение поля "Шаблон закрыт/не используется"](./media/templateClosed.png)
![Alt text](media/image-4.png)
## Копирование шаблона
При копировании шаблона отступ текста может выглядеть следующим образом:
![Рисунок 29 Копирование шаблона отступ](./media/Конструктор копирование в столбик.png)
Необходимо уменьшить отступ, чтобы скопированный текст умещался в строчку:
@ -457,7 +466,7 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
**Проверка сработает, если [служебное наименование](#служебноеаименование) в Конструкторе указано `"CheckDates"` или "`CheckCalendarDates"`**
![Служебное наименование](media/checkDates.png)
![Alt text](media/image-11.png)
Чтобы установить одно ограничение создания на любое количество дней, необходимо указать 1 в столбце «Мин. кол-во дней» и оставить столбец «Макс. кол-во дней» пустым. В этом случае ограничение будет применяться вне зависимости от указанного количества дней.
@ -512,7 +521,7 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
Данный блок заполняется в случае если для документов-копий (тиражированных заявлений) необходимо указать текст предупреждения.
![Текст копия](media/textCopy.jpg)
![Текст копия](media/textCopy.png)
![Копия](media/copi.png)
@ -530,7 +539,7 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
### Краткое содержание
Заполненное краткое содержание автоматически заполнится в соответствующем поле в [служебной записке](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/Служебная%20записка/).
Заполненное краткое содержание автоматически заполнится в соответствующем поле в [служебной записке](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Служебная записка/).
![Содержание](media/soderzhanie.png)
@ -604,6 +613,7 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
* Скрыть кнопку **<Операции> в заявлениях** - скрывается кнопка "Операции" в панели инструментов в **заявлениях**;
![Операции](media/noOperachii.png)
![Операции](media/noOperachii1.png)
* Скрыть кнопку **<Копировать>** - скрывается кнопка "Операции" в панели инструментов в **универсальных документах** и **доверенностях на конструкторе**;
@ -615,6 +625,7 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
* Скрыть кнопку **<Рассылка>** - скрывается кнопка "Рассылка" в панели инструментов в **заявлениях**;
![Рассылка](media/noRassylka.png)
![Рассылка](media/noRassylka1.png)
* Скрыть кнопку **<На контроль>** - скрывается кнопка "На контроль" в панели инструментов в документах;
@ -867,7 +878,7 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
#worker# | #prof# | (select p."IdPost" from comdoc."WorkersListOnDate"(now()::date, 1, 1) p where p."IdWorker" = #worker#)
#worker# | #podr# | (select p."IdDepartment" from comdoc."WorkersListOnDate"(now()::date, 1, 1) p where p."IdWorker" = #worker#)
![Alt text](media/image-4.png)
![Alt text](media/image-12.png)
![Атрибуты](media/naimenova.png)
![Заявление](media/zayavlen.png)
@ -900,7 +911,7 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
![Заявление](media/messageEmployee.png)
## Пример
<!-- ## Пример
Так как документы, созданные по этому шаблону, не будут относиться к блокам "Заявление от сотрудника", "Локально-нормативные акты" и "Документы на подписание", то шаблон будет для подтипа, относящегося к типу документа "Универсальный документ".
@ -972,13 +983,13 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
![Рисунок 26 Шаблон "Обращение на имя Петрова"](./media/exampleTemplateFinal.png)
Перейдем к созданию универсального документа по созданному шаблону. Нажмем на кнопку "Создать" в реестре универсальных документов и выберем подтип "Обращение". Загрузятся реквизиты документа, соответствующие созданным нами дополнительным атрибутам, и основной текст. Более подробно о работе в универсальном документе можно прочесть в соответствующей [статье](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/Универсальный%20документ/).
Перейдем к созданию универсального документа по созданному шаблону. Нажмем на кнопку "Создать" в реестре универсальных документов и выберем подтип "Обращение". Загрузятся реквизиты документа, соответствующие созданным нами дополнительным атрибутам, и основной текст. Более подробно о работе в универсальном документе можно прочесть в соответствующей [статье](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Универсальный документ/).
![Рисунок 27 Универсальный документ шаблон загружен](./media/exampleUniDocInit.png)
Заполним реквизиты документа и нажмем на кнопку "Заполнить шаблон".
![Рисунок 28 Универсальный документ шаблон заполнен](./media/exampleUniDocFilled.png)
![Рисунок 28 Универсальный документ шаблон заполнен](./media/exampleUniDocFilled.png) -->
## FAQ

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 KiB

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 KiB

After

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 KiB

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -1,3 +1,7 @@
---
search:
boost: 2
---
# Конструктор уведомлений
## Описание

View File

@ -126,6 +126,7 @@
**usercompanies_access_staffrequirement** | Отображение вкладки «Подбор персонала» в документе **«Настройка пользователей»** | | 1
**акт_аннулирования_сопированием_1_итерации_маршрутаокумента** | Маршрут документа ["Акт аннулирования"](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/Акт%20аннулирования/) сформируется как первая итерация аннулируемого документа. Если константа не используется, то первый этап маршрута содержит инициатора аннулирования документа, второй всех подписавшимися участников маршрута документа, действие которого аннулируется актом. | | 1
**АрхивЭП_ФИОормировать_иэ_сертификата_ЭП** | В [zip архив](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/Работа%20со%20вложениями/#архив_документов) файлы .sig будут выгружаться ФИО пользователя из маршрута, а не замещающего | | 1
**Доверенности_Автоматически_заполнять_доверителя** | В электронной доверенности автоматически заполняется [доверитель](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/Доверенность/#доверитель_и_доверенные_лица) из вкладки ["Доверенность"](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/Контрагенты/#вкладкаоверенность)| | 1
**включать_должность_в_сертификат** | Отображает должность сотрудника в [сертификате ЭП](../Выпуск ОНЭП/#Заявки-на-выпуск-ЭП) | | 1
**ВыпускНЭП_Контур** | Отображает кнопки для создания сертификата усиленной неквалифицированной электронной подписи во вкладке "Электронные сертификаты" в [развернутой форме документооборота](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/Стартовая%20страница/#развернутая_формаокументооборота). Заполняется "Значение (текст) | | 1
**Доверенность: уведомлять за (кол-во) дней об окончании** | Уведомления об окончании срока доверенности придет инициатору и всем поверенным за указанное кол-во дней. Необходима настройка задачи ["Уведомления об окончании срока доверенностей"](../Функции планировщика задач/index.md) в [планировщике](../Планировщик задач/index.md) | | кол-во календарных дней (число)

View File

@ -69,6 +69,30 @@
![Дополнительная колонка](media/dopColonka.png)
В данном блоке могут быть указаны колонки, значения которых можно вычислить на основании реквизитов документов и их маршрутов.
## Примеры настроек колонок
В колонке **"Статус общий"** указан статус маршрута. Если он "Текущий", то будет заполнена и колонка "На ком документ" пользователями, у которых не выполнено действие на текущем этапе маршрута. Колонка "Согласовавшие участники", напротив, заполняется теми пользователями, у которых уже выполнены действия по маршруту. Эти колонки как правило не нуждаются в донастройке Журнала состояния документов (ЖСД) или конструкторов.
Колонка **"Реквизиты документа"** в запросах обычно заполняется стандартным значением t."AnyColumnA", в котором перечисляются номер, дата документа и ФИО его создателя.
Колонки **"Период с", "Период по" и "Кол-во"** заполняются значениями дополнительных атрибутов (реквизитов) с хэштегами '#bdate#', '#edate#', '#kolvo#' соответственно, если документ на конструкторе (Заявления от сотрудника, универсальные документы и т.д.), а также заполняются датами и продолжительностью командировки, указанными в теле документа "СЗ на командировку".
Если уже есть конструкторы, поля которых хотелось бы сопоставить с этими колонками, то можно либо скорректировать запрос в поле **"Итоговая выборка"**, заменив bd.`"ColumnName" = '#bdate#'` на `bd."ColumnName" = '#another_bdate_name#'` (аналогично с другими доп. атрибутами), либо заменить в конструкторе документов старое служебное наименование на новое, не забывая как про основную вкладку с мемо-полем, так и остальные: Ограничения, Сформировать наименование документа из реквизитов, Настройка интерфейса, Настройка проверок, Настройка вычислений.
В колонке **"Прочее"** перечисляются все остальные доп. атрибуты документа и их значения, т.е. со служебными наименованиями, отличными от #bdate#, #edate#, #kolvo#.
Вычисления для колонок **Сотрудник** и **Таб.номер** немного сложнее. Для СЗ на командировку они берутся из таблицы с командированными сотрудниками в документе.
Для универсальных документов и документов на подписание (ДНП) в первую очередь ищется доп.атрибут типа Работник со служебным наименованием, сформированному по правилу #worker%# это значит, что могут подобраться `#worker#`, `#worker1#` и т.д., т.к. % означает, что после слова worker может идти любой набор симоволов любой длины (даже нулевой). Если такие доп. атрибуты отсутствуют или не заполнены, проверяется, заполнено ли в документе поле IdWorker, которое может быть заполнено кодом сотрудника при загрузке документа из сторонней системы (базы). Для остальных типов документов по умолчанию ищется значение IdWorker.
В заявлениях, актах аннулирования оно заполняется, для ЛНА, доверенностей и прочих документов оно скорее всего не заполняется. Для них можно либо скорректировать запрос в поле **"Итоговая выборка"**, добавив внутрь coalesce вычисление сотрудника по создателю документа или какое-то другое правило, либо определить правило заполнения `IdWorker` в представлении `comdoc."DocflowExists"` (задаётся в базе).
Для вычисления родительского подразделения тоже необходимо определить сотрудника, чьё родительское подразделение (а также Инициатор документа, Подразделение, Должность) будет показано в результирующей таблице ЖСД.
Для универсальных документов и ДНП в первую очередь ищется доп.атрибут со служебным наименованием `#worker#` (или `#Worker#`). Если такой отсутствует или не заполнен, проверяется, заполнено ли в документе поле `IdWorker`, которое может быть заполнено при загрузке документа из сторонней системы (базы). Во всех остальных случаях как для универсальных документов с ДНП, так и остальных типов, берётся пользователь, создавший документ. Если пользователь не заведён как сотрудник, Родительское подразделение не заполнится.
## Вкладка "Запрос"
В данном блоке указывается часть с динамическим запросом, содержащим непосредственно запроса для отображения документов.
@ -80,7 +104,7 @@
!!! note
Для того чтобы запрос фильтровался по заданному количеству документов, которое указывается в поле **Кол-во строк/Период (с/по):** необзодимо в конце запроса добавить строку `_topcount` , например: ```left join "tmp_workers_for_documentStatusJournalProc" w2 on w2."VCode" = t."IdWorker" _topcount;```
### Примеры запросов:
### Примеры запросов
**Просроченные документы** - в реестре отображаются документы, по которым были нарушены сроки обработки:

View File

@ -476,4 +476,75 @@ where (t."TypeName" = 'EmployeeStatement' and t."CUser" = t."StageUser") or
from "#tmp_preresult" t
left join dfd."DocumentSubtype" ds on ds."VCode" = t."DocumentSubtype"
LEFT JOIN LATERAL comdoc."getDocRouteCurrentStatus"(t."VCode", t."TypeName") AS rst ON true ;
```
## Расчетные листки
```sql
insert into "#tmp_finresult"( "VCode", "TypeName", "RDate", "DocumentNumber","DocumentSubtype","routeId", "attr", "Operation")
select t."VCode", t."TypeName", t."RDate", t."DocumentNumber",t."DocumentSubtype",t."routeId",
(case when not exists (select 1 from comdoc."Route" AS r where r."DocCode" = t."VCode" AND r."DocType" = t."TypeName")
then 'Маршрут не создан'
when t."RouteStatus" = 2 then 'Идет согласование. Текущие участники: ' || rst."CurrentDocflowUser"
when t."RouteStatus" = 3 then 'Согласование завершено'
when exists (select 1 from comdoc."Route" AS r where r."DocCode" = t."VCode" AND r."DocType" = t."TypeName" and r."RouteStatus" = 4)
and not exists (select 1 from comdoc."Route" AS r where r."DocCode" = t."VCode" AND r."DocType" = t."TypeName" and r."RouteStatus" in(2,3)) then 'Маршрут согласования отменен'
end::text ) ||' '||
(select string_agg(dca."Name" || ':' || (case
when coalesce(dca."AttributeType",'') = 'string' and coalesce(atr."Value",'') <> '' then atr."Value"
when coalesce(dca."AttributeType",'') = 'string' and coalesce(atr."Value",'') = '' then ' '
when coalesce(dca."AttributeType",'') = 'bigint' and atr."BigIntValue" is not null then cast(atr."BigIntValue" as varchar(255))
when coalesce(dca."AttributeType",'') = 'bigint' and atr."BigIntValue" is null then ' '
when coalesce(dca."AttributeType",'') = 'string' and atr."BigIntValue" is not null then cast(atr."BigIntValue" as varchar(255))
when coalesce(dca."AttributeType",'') = 'string' and atr."BigIntValue" is null then ' '
when coalesce(dca."AttributeType",'') = 'Base.Unispr' and atr."BigIntValue" is null and coalesce(atr."Value",'') = '' then ' '
when coalesce(dca."AttributeType",'') = 'Base.Unispr' and atr."BigIntValue" is not null and coalesce(atr."Value",'') <> '' then coalesce(atr."Value",' ')
when coalesce(dca."AttributeType",'') = 'Base.Post' and atr."BigIntValue" is null and coalesce(atr."Value",'') = '' then ' '
when coalesce(dca."AttributeType",'') = 'Base.Post' and atr."BigIntValue" is not null and coalesce(atr."Value",'') <> '' then coalesce(atr."Value",' ')
when coalesce(dca."AttributeType",'') = 'Base.RP_Worker' and atr."BigIntValue" is null and coalesce(atr."Value",'') = '' then ' '
when coalesce(dca."AttributeType",'') = 'Base.RP_Worker' and atr."BigIntValue" is not null and coalesce(atr."Value",'') <> '' then coalesce(atr."Value",' ')
when coalesce(dca."AttributeType",'') = 'Base.Contract' and atr."BigIntValue" is null and coalesce(atr."Value",'') = '' then ' '
when coalesce(dca."AttributeType",'') = 'Base.Contract' and atr."BigIntValue" is not null and coalesce(atr."Value",'') <> '' then coalesce(atr."Value",' ')
when coalesce(dca."AttributeType",'') = 'Base.Contractor' and atr."BigIntValue" is null and coalesce(atr."Value",'') = '' then ' '
when coalesce(dca."AttributeType",'') = 'Base.Contractor' and atr."BigIntValue" is not null and coalesce(atr."Value",'') <> '' then coalesce(atr."Value",' ')
when coalesce(dca."AttributeType",'') = 'Base.Department' and atr."BigIntValue" is null and coalesce(atr."Value",'') = '' then ' '
when coalesce(dca."AttributeType",'') = 'Base.Department' and atr."BigIntValue" is not null and coalesce(atr."Value",'') <> '' then coalesce(atr."Value",' ')
when coalesce(dca."AttributeType",'') = 'money' and atr."MoneyValue" is not null then cast(atr."MoneyValue" as varchar(255))
when coalesce(dca."AttributeType",'') = 'money' and atr."MoneyValue" is null then ' '
when coalesce(dca."AttributeType",'') = 'Date' and atr."DateValue" is not null then to_char(atr."DateValue", 'DD.MM.YYYY')
when coalesce(dca."AttributeType",'') = 'Date' and atr."DateValue" is null then ' '
when coalesce(dca."AttributeType",'') = 'DateTime' and atr."DateTimeValue" is not null then to_char(atr."DateValue", 'DD.MM.YYYY')
when coalesce(dca."AttributeType",'') = 'DateTime' and atr."DateTimeValue" is null then ' '
when coalesce(dca."AttributeType",'') = 'double' and atr."DoubleValue" is not null then cast(atr."DoubleValue" as varchar(255))
when coalesce(dca."AttributeType",'') = 'double' and atr."DoubleValue" is null then ' '
when coalesce(dca."AttributeType",'') = 'ServiceWord' and coalesce(atr."Value",'') <> '' then coalesce(atr."Value",' ')
when coalesce(dca."AttributeType",'') = 'ServiceWord' and coalesce(atr."Value",'') = '' then ' '
when coalesce(dca."AttributeType",'') = 'bool' and coalesce("BigIntValue"::integer,0) = 0 then substring(coalesce("Value",'|'), position('|' in coalesce("Value",'|'))+1,char_length(coalesce("Value",'|')))
when coalesce(dca."AttributeType",'') = 'bool' and coalesce("BigIntValue"::integer,0) = 1 then substring(coalesce("Value",'|'),0, position('|' in coalesce("Value",'|')))
end), '; ') AS "x"
from dfd."DocumentAdditionalAttribute" atr
join dfd."DocumentCategoryAttributeType" dca on atr."CategoryAttributeType" = dca."VCode"
where t."VCode" = atr."PCode" ) ,
('Расчетный лист')
from "#tmp_preresult" t
LEFT JOIN LATERAL comdoc."getDocRouteCurrentStatus"(t."VCode", t."TypeName") AS rst ON true
left join dfd."DocumentSubtype" ds on ds."VCode" = t."DocumentSubtype"
where ds."InternalName" = 'PaySlip';
```

View File

@ -55,7 +55,7 @@ QueryAnalyzer | | super,queryanalyzerform_write |
[Группы рассылки](../Группы рассылки/) | readlistgroup_read | docflowAdmin,readlistgroup_admin,readlistgroup_write |
Группы учета (запас) | rpdictionaries_read | super,administrator_reg_personnel,rpdictionaries_write |
[Действие обученности при смене работодателя](../Действие обученности при смене работодателя/) | activityoftraining_read, StaffTraining_Admin | activityoftraining_write, StaffTraining_Admin |
Доверенности | empowerment_read | empowerment_write |
Доверенности | empowerment_read | empowerment_write | create_origin_pdf_empowerment - роль для формирования финальной части в формат PDF, empovermentvisibleremove, showallnotremovedempowerment - отображение кнопки "Удалить" (перевод в статус "Удаленно") внутри доверенности
[Договоры](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/%D0%94%D0%BE%D0%B3%D0%BE%D0%B2%D0%BE%D1%80/) | contract_read | super,jurist,contract_write | **master_jurist** - позволяет редактировать полный, внутренний, входящий номера в договоре на любом этапе маршрута. **projects_write** предоставляет возможность создания формы «Новый проект» из документа "Договор". Открывает доступ к кнопке «Создать проект». Данная роль предоставляется пользователю, который в системе заполняет справочник проектов. видеть_конфиденциальныеоговора позволяет видеть договора с признаком "Конфиденциальность". **contract_editor** - предоставляет возможность редактировать договор в процессе согласования |
[Документы на подписание](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B%20%D0%BD%D0%B0%20%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5/) | documentforsigning_read | documentforsigning_write |
Документы, имеющие силу договора | validcontractdocument_read | super,jurist,validcontractdocument_write |