Compare commits
10 Commits
eb6c76af1e
...
65e07e3e74
Author | SHA1 | Date | |
---|---|---|---|
65e07e3e74 | |||
ab04defd07 | |||
0553305050 | |||
526d676d23 | |||
7624c54b4f | |||
12ba11fb18 | |||
7d89d72b32 | |||
cc02f2d144 | |||
97b9328bee | |||
64607e1760 |
2
dev.yml
@ -16,6 +16,8 @@ markdown_extensions:
|
||||
- pymdownx.details
|
||||
- pymdownx.tasklist:
|
||||
custom_checkbox: true
|
||||
- pymdownx.tabbed:
|
||||
alternate_style: true
|
||||
|
||||
|
||||
extra_css:
|
||||
|
@ -93,7 +93,7 @@ search:
|
||||
|
||||
**Если опция включена**, то автоматическая генерация pdf- файла не происходит. В некоторых бизнес-процессах данная опция будет лишней - например, в Локальных нормативных актах, где оригиналы документов поставляются из хранилища организации.
|
||||
|
||||
**Откл. содержимое (мемо и предпросмотр)** - отключается отображание текстового рабочего поля и окна предварительного просмотра в документах, расположенные в правой стороне.
|
||||
**Откл. содержимое (мемо и предпросмотр)** - отключается отображение текстового рабочего поля и окна предварительного просмотра в документах, расположенные в правой стороне.
|
||||
|
||||
**Не требовать дату перехода КЭДО** - при включенной опции данный подтип документа может создавать [сотрудник](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Сотрудники/), у которого отсутствует дата перехода на КЭДО. Если опция отключена, то создание документа с данным подтипом невозможно без указания даты перехода на КЭДО. По умолчанию для создания любого документа необходимо указывать дату перехода на КЭДО у сотрудника.
|
||||
|
||||
@ -259,6 +259,9 @@ Name | Должность работника (атрибута) в именит
|
||||
NameDative | Должность работника (атрибута) в дательном падеже |
|
||||
NameGenitive | Должность работника (атрибута) в винительном падеже |
|
||||
NSNT | Отображение ФИО пользователя-создателя документа и табельного номера
|
||||
NSNTDative | Отображение ФИО пользователя-создателя документа и табельного номера в дательном падеже |
|
||||
NSNTGenitive | Отображение ФИО пользователя-создателя документа и табельного номера в родительном падеже |
|
||||
NSNTAccusative | Отображение ФИО пользователя-создателя документа и табельного номера в винительном падеже |
|
||||
|
||||
- **"Маска для ввода"** - позволяет установить строгий формат ввода данных пользователем и представлять из себя строку состоящую из обычных и специальных символов. При вводе обычные символы пользователь не может их удалить или заменить, специальные символы задают ограничения на вводимые данные.
|
||||
|
||||
@ -295,7 +298,7 @@ NSNT | Отображение ФИО пользователя-создателя
|
||||
|
||||
- **Высота таблицы** - используется для типа атрибута **"Табличная часть"**. Высота задается в пикселях.
|
||||
- **Показывать разрядность в числах** - используется для типа атрибута **"Число"**. Если она включена то число будет отображаться - 2 022. Если выключена - то 2022 (без пробелов)
|
||||
- **"Примечание/Комментарии"** - используется при необходимости для внесения информации по дополнительным атрибутам. Если тип атрибута "Логическое", то нужно задавать значения да/нет в формате Значение1| Значение 2. Если тип атрибута "Пользовательское" можно указывать дополнительную информацию по наименованию, например для автоматической проставки суммы вычета на детей при создании заявления. Подробнее можно почитать в разделе [Дополнение к наименованию в пользовательском типе атрибута](../Пользовательские типы атрибутов документов/index.md#поля_дополнение_к_наименованию).
|
||||
- **"Примечание/Комментарии"** - используется при необходимости для внесения информации по дополнительным атрибутам. Если тип атрибута **"Логическое"**, то нужно задавать любые текстовые значения, например, да/нет в формате Значение 1| Значение 2. Если тип атрибута "Пользовательское" можно указывать дополнительную информацию по наименованию, например для автоматической проставки суммы вычета на детей при создании заявления. Подробнее можно почитать в разделе [Дополнение к наименованию в пользовательском типе атрибута](../Пользовательские типы атрибутов документов/index.md#поля_дополнение_к_наименованию).
|
||||
|
||||
- Группа столбцов **"Значение по умолчанию"** используется в случае, если при создании документа реквизит должен быть заполнен неким условленным значением. Для разных типов атрибутов используются разные колонки. Для типов атрибута **"Строка"** требуется заполнить поле в столбце **"Текст"**. Для типов атрибута **"Логическое"** требуется поставить галочку в столбце **"Флаг"**.
|
||||
|
||||
@ -311,6 +314,17 @@ NSNT | Отображение ФИО пользователя-создателя
|
||||
|
||||
- **Видимость для ролей** - используется при необходимости настройки отображения и редактирования данного атрибута при наличии определенной роли на текущем этапе у пользователя. Возможно задать как одну роль, так и несколько указанных через запятую. У пользователя имеющего указанную роль атрибут в документе будет отображен, в то время как у пользователя у которого отсутствует одна либо все указанные в данном столбце роли, данный атрибут не будет отображен.
|
||||
|
||||
### Разметка страницы / поля, см
|
||||
|
||||
Позволяет вручную задать отступы текста в печатной форме документа. Если поля не заполнены, то по умолчанию значения следующие:
|
||||
|
||||
* Вверхнее - 1
|
||||
* Нижнее 2
|
||||
* Левое - 2,8
|
||||
* Правое - 1,8
|
||||
|
||||

|
||||
|
||||
### Дополнительные группы
|
||||
|
||||
- **Доп. группа** - указывается номер дополнительной группы.
|
||||
@ -321,6 +335,8 @@ NSNT | Отображение ФИО пользователя-создателя
|
||||
|
||||
- **Рамка** - при включении у дополнительной группы будет отображаться рамка.
|
||||
|
||||

|
||||
|
||||
### Вычисляемые атрибуты
|
||||
|
||||
<!-- Чтобы прописать вычисление полей, значения которых должны зависеть от остальных полей (т.е. сделать их вычисляемыми), необходимо в Microsoft SQL Server Management Studio внести изменения в код процедуры dbo.callAfterSetSQL (в которой прописывается непосредственно вычисление значение атрибута) и в код процедуры dbo.callCheckSQL (для проверки корректности внесённых в поля атрибутов значений).
|
||||
|
BIN
docs/Admin manuals/Конструктор документов/media/image-26.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
docs/Admin manuals/Конструктор документов/media/image-27.png
Normal file
After Width: | Height: | Size: 18 KiB |
@ -10,7 +10,11 @@
|
||||
|
||||
Откроется форма с пустой таблицей:
|
||||
|
||||

|
||||

|
||||
|
||||
### Вкладка "Логи"
|
||||
|
||||
На данной вкладке отображается логирование системы.
|
||||
|
||||
Заполнить таблицу можно несколькими способами:
|
||||
|
||||
@ -26,15 +30,15 @@
|
||||
|
||||
* выбрать все кроме 1C: `"Service" not in ('odata')`
|
||||
|
||||

|
||||

|
||||
|
||||
В столбце "Уровень" приводится тип сообщения о событии.
|
||||
|
||||
- error – сообщение об ошибке;
|
||||
- debug – отладочное сообщение;
|
||||
- info – информационное техническое сообщение;
|
||||
- MailInfo – информационное сообщение от компоненты БД DBMail;
|
||||
- MailError – сообщение об ошибке от компоненты БД DBMail.
|
||||
- `error` – сообщение об ошибке;
|
||||
- `debug` – отладочное сообщение;
|
||||
- `info` – информационное техническое сообщение;
|
||||
- `MailInfo` – информационное сообщение от компоненты БД DBMail;
|
||||
- `MailError` – сообщение об ошибке от компоненты БД DBMail.
|
||||
|
||||
В столбце "Дата" указываются дата и время возникновения сообщения.
|
||||
|
||||
@ -42,7 +46,7 @@
|
||||
|
||||
В столбце "Сообщение" приводится краткая информация о событии. Если нажать на ссылку-текст сообщения, то откроется окно для более удобного просмотра длинного текста. То же происходит и при нажатии на ссылки в других столбцах.
|
||||
|
||||

|
||||

|
||||
|
||||
В столбце "Сообщение пользователю" содержится сообщение, возникшее в момент события на экране вызвавшего его пользователя под кнопкой "Инфо".
|
||||
|
||||
@ -52,19 +56,27 @@
|
||||
|
||||
В столбце "Сервис" указывается один из веб-сервисов, при выполнении которых возникло событие:
|
||||
|
||||
* entrypoint – точка входа для клиентов;
|
||||
* config – сервис конфигурации;
|
||||
* logic – сервис логики;
|
||||
* gate – сервис входа (авторизации);
|
||||
* radio – сервис взаимодействия реального времени;
|
||||
* lock – сервис пессимистического блокировщика;
|
||||
* data – сервис доступа к данным и процедурам, хранимым в БД;
|
||||
* RabbitMQ – сервер RabbitMQ служит шиной обмена данными между веб-сервисами. Сервисы используют его механизмы (сообщения и очереди сообщений) для оповещения друг друга;
|
||||
* Redis – используется для хранения различной системной информации;
|
||||
* post – сервис электронной почты и смс-сообщений;
|
||||
* jsreport – предназначен для работы с отчетами jsreport;
|
||||
* lexema-dss – для работы с ОЭП выпускаемыми клиентом;
|
||||
* preview – предназначен для конвертации файлов в файлы в формате pdf, которые можно просматривать в элементе управления ```FilePreview```.
|
||||
* `entrypoint` – точка входа для клиентов;
|
||||
* `config` – сервис конфигурации;
|
||||
* `logic` – сервис логики;
|
||||
* `gate` – сервис входа (авторизации);
|
||||
* `radio` – сервис взаимодействия реального времени;
|
||||
* `lock` – сервис пессимистического блокировщика;
|
||||
* `data` – сервис доступа к данным и процедурам, хранимым в БД;
|
||||
* `RabbitMQ` – сервер RabbitMQ служит шиной обмена данными между веб-сервисами. Сервисы используют его механизмы (сообщения и очереди сообщений) для оповещения друг друга;
|
||||
* `Redis` – используется для хранения различной системной информации;
|
||||
* `post` – сервис электронной почты и смс-сообщений;
|
||||
* `jsreport` – предназначен для работы с отчетами jsreport;
|
||||
* `lexema-dss` – для работы с ОЭП выпускаемыми клиентом;
|
||||
* `preview` – предназначен для конвертации файлов в файлы в формате pdf, которые можно просматривать в элементе управления ```FilePreview```.
|
||||
|
||||
### Вкладка "Коллектор"
|
||||
|
||||
На данной вкладке история событий приложения.
|
||||
|
||||
Заполнить таблицу можно аналогично вкладке [логов](#вкладка_логи).
|
||||
|
||||

|
||||
|
||||
### Настройки выборок для логов приложения
|
||||
|
||||
@ -74,7 +86,10 @@
|
||||
|
||||
* **Наименование выборки** - наименование выборки в выпадающем списке;
|
||||
|
||||
* **Скрипт для вычисления** - заполняется условие для вычисления. Для настройки выборки можно использователь следующие параметры из логов:
|
||||
* **Форма** - указывается для какой формы
|
||||
|
||||
* **Скрипт для вычисления** - указывается служебное наименование формы, в которой необходимо отображать данную настройку, например, в [логах](#вкладка_логи). Если поле незаполнено то данная настройка отображается во всех формах.
|
||||
|
||||
|
||||
`"Level" (text)` - вид лога: ошибка (error), инф.сообщение (info), предупреждение (warn)
|
||||
|
||||
@ -88,7 +103,46 @@
|
||||
|
||||
`"Service" (text)` - название сервиса
|
||||
|
||||

|
||||

|
||||
|
||||
!!! example "Примеры"
|
||||
|
||||
=== "Все по 1с"
|
||||
``` sql
|
||||
"Service" IN ('odata')
|
||||
```
|
||||
=== "Все кроме 1с"
|
||||
``` sql
|
||||
"Service" NOT IN ('odata')
|
||||
```
|
||||
=== "Все по сервису подписания"
|
||||
``` sql
|
||||
"Service" ILIKE '%dss%'
|
||||
```
|
||||
=== "Логи шедулера"
|
||||
``` sql
|
||||
"CUser" = 'SchedulerUser'
|
||||
```
|
||||
=== "Всё по jsreport+file+preview"
|
||||
``` sql
|
||||
"Service" IN ('jsreport', 'file', 'preview')
|
||||
```
|
||||
=== "Все кроме коллектора"
|
||||
``` sql
|
||||
"Service" NOT IN ('collector')
|
||||
```
|
||||
=== "По тексту сообщения"
|
||||
``` sql
|
||||
"Message" ILIKE '%ошибка%1С%'
|
||||
```
|
||||
=== "По сервису odata только ошибки"
|
||||
``` sql
|
||||
"Service" = 'odata' AND "Level" = 'error'
|
||||
```
|
||||
=== "Логи по сертификатам"
|
||||
``` sql
|
||||
"Details" = 'Логирование операций с сертификатом'
|
||||
```
|
||||
|
||||
## Форма "Управление пользователями"
|
||||
|
||||
|
BIN
docs/Admin manuals/Логи приложения/media/image-5.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
docs/Admin manuals/Логи приложения/media/image-6.png
Normal file
After Width: | Height: | Size: 58 KiB |
BIN
docs/Admin manuals/Логи приложения/media/image-7.png
Normal file
After Width: | Height: | Size: 102 KiB |
BIN
docs/Admin manuals/Логи приложения/media/image-8.png
Normal file
After Width: | Height: | Size: 114 KiB |
BIN
docs/Admin manuals/Логи приложения/media/image-9.png
Normal file
After Width: | Height: | Size: 99 KiB |
@ -96,3 +96,75 @@
|
||||
Для всех выше указан сущностей в столбец **"Функция для обработки ответа от 1С"** указывается функция, которая заберет данные из указанной сущности:
|
||||
|
||||
`select * from odata."loadReadListExceptions" ("_body_")`
|
||||
|
||||
## Выгрузка остатков отпусков в личный кабинет сотрудника
|
||||
|
||||
Для загрузки остатков отпусков необходимо:
|
||||
|
||||
* Со стороны 1С необходимо опубликовать сущности `InformationRegister_ЗаработанныеПраваНаОтпуска` и `InformationRegister_ДанныеОтпусковКарточкиСотрудника`
|
||||
* В Настройке параметров 1С на закладке "Произвольные выборки из 1С" добавить строку с
|
||||
сущностью `InformationRegister_ЗаработанныеПраваНаОтпуска`
|
||||
* В параметры для запроса сущности указать
|
||||
`?$filter=Period le datetime'{{ToDay}}'&$select=Period,Сотрудник_Key,ВидЕжегодногоОтпуска_Key,КоличествоДней,ДатаНачала,ДатаОкончания`
|
||||
* В функцию для обработки указать
|
||||
```sql
|
||||
select * from odata."LoadUsingVacations"("_body_") as "resultText"
|
||||
```
|
||||
|
||||
## Примеры произвольных выгрузок
|
||||
|
||||
<table border="1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Наименование выборки</th>
|
||||
<th>Сущность в 1С</th>
|
||||
<th>Параметр для запроса сущности в 1С</th>
|
||||
<th>Функция для обработки ответа от 1С</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Выгрузка данных по образованию - формат Диалл Альянс</td>
|
||||
<td>Structure</td>
|
||||
<td>?Object=units</td>
|
||||
<td>select * from odata."LoadEducation"("_body_") as "resultText"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Выгрузка изменений оплаты - возврат до 1,5</td>
|
||||
<td>Document_ИзменениеУсловийОплатыОтпускаПоУходуЗаРебенком</td>
|
||||
<td>?$filter=Posted eq true and ДатаИзменения le datetime'{{ToDay}}' and ДатаОкончанияПособияДоПолутораЛет ge datetime'{{ToDay}}'&$select=Ref_Key,ДатаИзменения,Сотрудник_Key,ОсновнойСотрудник_Key,ПрименениеПлановыхНачислений/Ref_Key,ПрименениеПлановыхНачислений/РабочееМесто_Key,ПрименениеПлановыхНачислений/Применение</td>
|
||||
<td>select * from odata."loadReadListExceptions" ("_body_")</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Выгрузка Больничных по беременности и родам</td>
|
||||
<td>Document_БольничныйЛист</td>
|
||||
<td>?$filter=ПричинаНетрудоспособности eq 'ПоБеременностиИРодам' and ДатаНачала gt datetime'2022-09-01T00:00:00' and DeletionMark eq false and ДокументРассчитан eq true&$select=Ref_Key,Сотрудник_Key,ДатаНачала,ДатаОкончания</td>
|
||||
<td>select * from odata."loadReadListExceptions" ("_body_")</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Выгрузка Больничных по беременности и родам</td>
|
||||
<td>Document_БольничныйЛист_</td>
|
||||
<td>?$filter=ДатаНачала le datetime'{{ToDay}}' and ДатаОкончания ge datetime'{{ToDay}}' and ПричинаНетрудоспособности eq 'ПоБеременностиИРодам' and DeletionMark eq false and ДокументРассчитан eq true&$format=json&$select=Ref_Key,Сотрудник_Key,ДатаНачала,ДатаОкончания</td>
|
||||
<td>select * from odata."loadReadListExceptions" ("_body_")</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Выгрузка возврат из отпуска по уходу</td>
|
||||
<td>Document_ВозвратИзОтпускаПоУходуЗаРебенком</td>
|
||||
<td>?$select=Ref_Key,ДатаВозврата,Сотрудник_Key,ОсновнойСотрудник_Key,Начисления/Ref_Key,Начисления/РабочееМесто_Key_</td>
|
||||
<td>select * from odata."loadReadListExceptions" ("_body_")</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Выгрузка Отпусков по уходу</td>
|
||||
<td>Document_ОтпускПоУходуЗаРебенком</td>
|
||||
<td>?$filter=DeletionMark eq false&$select=Ref_Key,Сотрудник_Key,ДатаНачала,ДатаОкончания,ОсновнойСотрудник_Key,Начисления/Ref_Key,Начисления/РабочееМесто_Key</td>
|
||||
<td>select * from odata."loadReadListExceptions" ("_body_")</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Остатки дней отпуска сотрудников</td>
|
||||
<td>InformationRegister_ЗаработанныеПраваНаОтпуска</td>
|
||||
<td>?$filter=Period le datetime'{{ToDay}}'&$select=Period,Сотрудник_Key,ВидЕжегодногоОтпуска_Key,КоличествоДней,ДатаНачала,ДатаОкончания</td>
|
||||
<td>select * from odata."LoadUsingVacations"("_body_") as "resultText"</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
@ -81,6 +81,7 @@ search:
|
||||
3. **Документ вернется только инициатору** - документ направляется инициатору в случае не согласования документа по маршруту. Маршрут согласования в этом случае не повторяется.
|
||||
4. **Документ вернется инициатору и всем несогласным** - документ направляется инициатору и всем несогласным в случае не согласования документа по маршруту.
|
||||
5. **Ошибочно направлено. Документ вернется только инициатору** - документ направляется инициатору в случае не согласования документа по маршруту, по причине что документ был ошибочно направлен пользователю на согласование. Маршрут согласования в этом случае не повторяется.
|
||||
6. **Построить новую итерацию из шаблона маршрута** - документ направляется инициатору в случае не согласования. Маршрут согласования в этом случае повторяется из шаблона маршрута.
|
||||
|
||||
Ко всем типам документов действие должно быть выбрано "Далее".
|
||||
|
||||
|
@ -152,7 +152,8 @@
|
||||
**не_включать_почту_в_сертификат** | Убирает отображение электронной почты в [заявлении на выдачу и расписке в получении](../Выпуск ОНЭП/index.md#просмотр_заявки_на_выпуск_сертификатов) сертификата электронной подписи | | 1 |
|
||||
**Не_требовать_подписанта_в_ОРД** | Отключает проверку в [ОРД](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/ОРД/) на наличие этапа с подписанием | | 1
|
||||
**Отключить автоформирование маршрута** | Отключает автоматическое нажатие на кнопку "Создать маршрут" в модальном окне маршрута | | 1
|
||||
**Отчет_с_ВЗ_генерировать_после_последнего_этапа_подписания** | В документах [«Заявление от сотрудников»](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Заявления от сотрудников/) и «Документ на подписание» будет сформирован и прикреплен файл со штампом электронной подписи после крайнего этапа подписания электронным сертификатом | | 1
|
||||
**Отчет_с_ВЗ_генерировать_после_последнего_этапа_подписания** | В документах на констукторе будет сформирован и прикреплен файл со штампом электронной подписи после крайнего этапа подписания электронным сертификатом | | 1
|
||||
**Отчет_с_ВЗ_прочерк_вместо_ПЭП** | В документах на констукторе в файл со штампом электронной подписи вместо **"Просто электронная подпись"** проставляется прочерк. Заполняется **"Значение(текст)"**. | | 1
|
||||
**ПереходНаКЭДО_ЗапретСозданияИОбработкиДокументов** | При создании документов [«Заявление от сотрудников»](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Заявления от сотрудников/), [Универсальный документ](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Универсальный документ/) будет осуществляться проверка на наличие даты **"Переход на КЭДО"** в документе Сотрудники. | | 1
|
||||
**Полные кадры** | В документе [«Заявление от сотрудников»](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Заявления от сотрудников/) добавляется операция "Создать приказ по подтипу документа". Если числовая константа выставлена в «0», то в документе ["Физические лица"](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Физические лица/) отключаются проверки на адрес. | | 1
|
||||
**поручение инициатор=контролер** | В документе "Поручение" поле контролер автоматически заполняется значением из поля "Составитель" | | 1
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
Откроется новая форма.
|
||||
|
||||

|
||||

|
||||
|
||||
При нажатии на кнопку **"Показать подсказки"** в верхней части раскрываются рекомендации по работе с данной формой:
|
||||
|
||||
@ -19,19 +19,19 @@
|
||||
|
||||
* **Не используется** - при включенной функции данная настройка не будет отображаться в журнале состояния документов.
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||
|
||||
* **№ / Пользовательское наименование** - указывается порядковый номер и наименование настройки для отображения в журнале состояния документов.
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||
|
||||
* **Служебное наименование** - указывается служебное наименование по которому фильтруется реестр документов. Служебное наименование должно быть **уникальным** в системе.
|
||||
|
||||

|
||||

|
||||
|
||||
* **Показывать в форме** - указывается служебное наименование формы, в которой необходимо отображать данную настройку, например, в личном кабинете HR. Если поле незаполнено то данная настройка отображается во всех формах.
|
||||
|
||||
@ -43,6 +43,8 @@
|
||||
|
||||
* **рассчитывать просрочку в документах** - рассчитывает количество дней по нарушением сроков обработки в столбце "Просрочено (дней)"
|
||||
|
||||
* **Работа России** - отображает кнопку ["Отправить в РР"](https://ecm-user-manuals.readthedocs.io/ru/latest/User%20manuals/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%20%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8/) в журнале.
|
||||
|
||||
### Скрыть столбцы
|
||||
|
||||
* **Подразделение инициатора** - скрывает колонку "Подразделение инициатора";
|
||||
@ -65,7 +67,9 @@
|
||||
|
||||
* **Решение** - скрывает колонку "Решение";
|
||||
|
||||
* **Вложения** - скрывает колонку "Вложения".
|
||||
* **Вложения** - скрывает колонку "Вложения";
|
||||
|
||||
* **Документ** - скрывает колонку "Документ".
|
||||
|
||||
### Добавить группировку
|
||||
|
||||
@ -109,20 +113,40 @@
|
||||
|
||||
В данном блоке указывается часть с динамическим запросом, содержащим непосредственно запроса для отображения документов.
|
||||
|
||||
!!! note
|
||||
В запросе возможно настроить цветовое отображение полей документов в зависимости от условий. Для этого в запросе необходимо указать поле "Colors" и заполнить его одним из следующих значений: `1 - colors.gray 2 - colors.orange 3 - colors.yellow 4 - colors.green 5 - colors.blue 6 - colors.indigo 7 -colors.violet`. Например в запросе: **Все документы** данное значение указано в конце запроса: `(select top 1 wr."VCode" from "RP_Worker" wr join "RP_PersonContact" pc on wr."IdPerson"= pc."Pcode" and pc."IdTypeContact" = 6 and pc."Code" = t."StageUser" where wr."COrg" = 4 order by wr."DateBeg" ) as "AnyColumnO"
|
||||
, 2`, где цифра 2 цвет
|
||||
В запросе возможно настроить цветовое отображение полей документов в зависимости от условий. Для этого в запросе необходимо указать поле "Colors" и заполнить его одним из следующих значений: `1 - colors.gray 2 - colors.orange 3 - colors.yellow 4 - colors.green 5 - colors.blue 6 - colors.indigo 7 -colors.violet`.
|
||||
|
||||
!!! note
|
||||
Для того чтобы запрос фильтровался по заданному количеству документов, которое указывается в поле **Кол-во строк/Период (с/по):** необзодимо в конце запроса добавить строку `_topcount` , например: ```left join "tmp_workers_for_documentStatusJournalProc" w2 on w2."VCode" = t."IdWorker" _topcount;```
|
||||
!!! example "Пример:"
|
||||
|
||||
В запросе: **Все документы** данное значение указано в конце запроса:
|
||||
|
||||
```sql
|
||||
(select top 1 wr."VCode" from "RP_Worker" wr join "RP_PersonContact" pc on wr."IdPerson"= pc."Pcode"
|
||||
and pc."IdTypeContact" = 6 and pc."Code" = t."StageUser"
|
||||
where wr."COrg" = 4 order by wr."DateBeg" ) as "AnyColumnO"
|
||||
, 2
|
||||
```
|
||||
где цифра 2 цвет
|
||||
|
||||
|
||||
Для того чтобы запрос фильтровался по заданному количеству документов, которое указывается в поле **Кол-во строк/Период (с/по):** необходимо в конце запроса добавить строку `_topcount`
|
||||
|
||||
!!! example "Пример:"
|
||||
```sql
|
||||
left join "tmp_workers_for_documentStatusJournalProc" w2 on w2."VCode" = t."IdWorker" _topcount;
|
||||
```
|
||||
|
||||
### Примеры запросов
|
||||
|
||||
**Просроченные документы** - в реестре отображаются документы, по которым были нарушены сроки обработки:
|
||||
#### Просроченные документы
|
||||
|
||||
В реестре отображаются документы, по которым были нарушены сроки обработки
|
||||
|
||||
??? note "Запрос"
|
||||
|
||||
Основной запрос:
|
||||
|
||||
Итоговая выборка:
|
||||
|
||||
```sql
|
||||
insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeName" , "SettingsId"
|
||||
, "orgId" , "DocumentDate" , "DocumentNumber" , "VirtualCUser" , "DateOfExecution"
|
||||
@ -156,11 +180,16 @@ where
|
||||
coalesce(dd."expired", 0) <> 0 ;
|
||||
```
|
||||
|
||||
**Зависшие документы у инициатора** - в реестре отображаются документы, которые были инициированы сотрудником, но не запущены далее по маршруту согласования.
|
||||
#### Зависшие документы у инициатора
|
||||
|
||||
В реестре отображаются документы, которые были инициированы сотрудником, но не запущены далее по маршруту согласования.
|
||||
|
||||
??? note "Запрос"
|
||||
|
||||
Основной запрос:
|
||||
|
||||
Итоговая выборка:
|
||||
|
||||
```sql
|
||||
insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeName" , "SettingsId"
|
||||
, "orgId" , "DocumentDate" , "DocumentNumber" , "VirtualCUser" , "DateOfExecution"
|
||||
@ -183,11 +212,16 @@ insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeNa
|
||||
) ;
|
||||
```
|
||||
|
||||
**Поступят к hr в ближайшее время** - в реестре отображаются документы, которые в данный момент находятся на стадии согласования у руководителя сотрудника, и после этого поступят в HR службу.
|
||||
#### Поступят к hr в ближайшее время
|
||||
|
||||
В реестре отображаются документы, которые в данный момент находятся на стадии согласования у руководителя сотрудника, и после этого поступят в HR службу.
|
||||
|
||||
??? note "Запрос"
|
||||
|
||||
Основной запрос:
|
||||
|
||||
Итоговая выборка:
|
||||
|
||||
```sql
|
||||
insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeName" , "SettingsId"
|
||||
, "orgId" , "DocumentDate" , "DocumentNumber" , "VirtualCUser" , "DateOfExecution"
|
||||
@ -219,11 +253,16 @@ insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeNa
|
||||
) ;
|
||||
```
|
||||
|
||||
**Сейчас в работе у hr** - в реестре отображаются документы, которые в данный момент находятся в HR службе в работе
|
||||
#### Сейчас в работе у hr
|
||||
|
||||
В реестре отображаются документы, которые в данный момент находятся в HR службе в работе
|
||||
|
||||
??? note "Запрос"
|
||||
|
||||
Основной запрос:
|
||||
|
||||
Итоговая выборка:
|
||||
|
||||
```sql
|
||||
insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeName" , "SettingsId"
|
||||
, "orgId" , "DocumentDate" , "DocumentNumber" , "VirtualCUser" , "DateOfExecution"
|
||||
@ -248,11 +287,16 @@ insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeNa
|
||||
) ;
|
||||
```
|
||||
|
||||
**Обработано службой HR сегодня** - в реестре отображаются документы, которые были обработаны сегодня службой HR сегодня.
|
||||
#### Обработано службой HR сегодня
|
||||
|
||||
В реестре отображаются документы, которые были обработаны сегодня службой HR сегодня.
|
||||
|
||||
??? note "Запрос"
|
||||
|
||||
Основной запрос:
|
||||
|
||||
Итоговая выборка:
|
||||
|
||||
```sql
|
||||
insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeName" , "SettingsId"
|
||||
, "orgId" , "DocumentDate" , "DocumentNumber" , "VirtualCUser" , "DateOfExecution"
|
||||
@ -278,9 +322,12 @@ insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeNa
|
||||
) ;
|
||||
```
|
||||
|
||||
**Все документы**
|
||||
#### Все документы
|
||||
|
||||
??? note "Запрос"
|
||||
|
||||
Основной запрос:
|
||||
|
||||
```sql
|
||||
do $myQ$
|
||||
declare _str text;
|
||||
@ -314,7 +361,9 @@ end;
|
||||
$myQ$;
|
||||
```
|
||||
|
||||
|
||||
Итоговая выборка:
|
||||
|
||||
```sql
|
||||
IF NOT comdoc."isTableExists"('tmp_addAtribute_for_documentStatusJournalProc', 'temp') THEN
|
||||
CREATE TEMP TABLE "tmp_addAtribute_for_documentStatusJournalProc"(
|
||||
@ -471,11 +520,14 @@ drop table "tmp_addAtribute_for_documentStatusJournalProc";
|
||||
drop table "tmp_workers_for_documentStatusJournalProc";
|
||||
```
|
||||
|
||||
**Документы на подписание, просроченные работниками**
|
||||
#### Документы на подписание, просроченные работниками
|
||||
|
||||
??? note "Запрос"
|
||||
|
||||
Основной запрос:
|
||||
|
||||
Итоговая выборка:
|
||||
|
||||
```sql
|
||||
insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeName" , "SettingsId"
|
||||
, "orgId" , "DocumentDate" , "DocumentNumber" , "VirtualCUser" , "DateOfExecution"
|
||||
@ -507,9 +559,12 @@ where coalesce(t."RouteStatusId",0) in (2) and t."StageItemStatus"= 2 and t."IsM
|
||||
;
|
||||
```
|
||||
|
||||
**Договоры и доп. соглашения**
|
||||
#### Договоры и доп. соглашения
|
||||
|
||||
??? note "Запрос"
|
||||
|
||||
Основной запрос:
|
||||
|
||||
```sql
|
||||
do $newQ$
|
||||
declare _str text;
|
||||
@ -550,12 +605,11 @@ $newQ$;
|
||||
```
|
||||
|
||||
Итоговая выборка:
|
||||
```sql
|
||||
|
||||
```sql
|
||||
do
|
||||
$$
|
||||
begin
|
||||
|
||||
--CREATE INDEX IF NOT EXISTS "idx_tr1_tmp_CategoryAttributeType" ON "tmp_CategoryAttributeType"("PCode" );
|
||||
|
||||
if not comdoc."isTableExists"('tmp_UserRole','temp') then
|
||||
@ -612,12 +666,9 @@ round(comdoc."dfwcGetDuration"(t."eDate", COALESCE(t."ActionDate", _now::date),
|
||||
) a
|
||||
where coalesce(a."expired", 0) > 0
|
||||
group by a."DocCode", a."Role";
|
||||
|
||||
|
||||
end;
|
||||
$$;
|
||||
|
||||
|
||||
insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeName" , "SettingsId"
|
||||
, "orgId" , "DocumentDate" , "DocumentNumber" , "VirtualCUser" , "DateOfExecution"
|
||||
, "DateControl" , "RouteVCode" , "RouteStatusId" , "RouteStatusName" , "DocName"
|
||||
@ -754,7 +805,9 @@ inner join contract."VContractRegistry" c on t."DocCode" = c."VCode"
|
||||
FETCH FIRST 1 ROWS WITH TIES ) --as "workers"
|
||||
AS wi ON wi."lexLogin" = t."VirtualCUser"
|
||||
LEFT JOIN LATERAL comdoc."getDocRouteCurrentStatus"(t."DocCode", t."DocType") AS rst ON true
|
||||
|
||||
--where c."DateContract" BETWEEN _bdate AND _edate
|
||||
|
||||
/*union all
|
||||
select distinct t."DocCode" , t."DocType" , t."DocForm" , t."DocTypeName" , t."SettingsId"
|
||||
, t."orgId" , t."DocumentDate" , t."DocumentNumber" , t."VirtualCUser" , t."DateOfExecution"
|
||||
@ -858,6 +911,259 @@ from "tmp_preresult" t
|
||||
AS wi ON wi."lexLogin" = t."VirtualCUser"
|
||||
LEFT JOIN LATERAL comdoc."getDocRouteCurrentStatus"(t."DocCode", t."DocType") AS rst ON true
|
||||
-- where c."DateContract" BETWEEN _bdate AND _edate
|
||||
|
||||
*/
|
||||
```
|
||||
|
||||
#### Документы в работе у подчиненных
|
||||
|
||||
??? note "Запрос"
|
||||
|
||||
Основной запрос:
|
||||
|
||||
Итоговая выборка:
|
||||
|
||||
```sql
|
||||
insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeName" , "SettingsId"
|
||||
, "orgId" , "DocumentDate" , "DocumentNumber" , "VirtualCUser" , "DateOfExecution"
|
||||
, "DateControl" , "RouteVCode" , "RouteStatusId" , "RouteStatusName" , "DocName"
|
||||
, "DocSubject" , "expired" , "StageNumber" , "BeginDate" , "ActionDate"
|
||||
, "DocumentAction" , "DocumentStatus" , "FromMessage" , "eDate"
|
||||
, "StageUser" , "StageItemStatus" , "StageStatus" , "StageItemAction" , "DocumentSubtype" ,
|
||||
"AnyColumnA" ,"AnyColumnB" , "AnyColumnC","AnyColumnD" ,
|
||||
"AnyColumnE" ,
|
||||
"AnyColumnF", "AnyColumnG" , "AnyColumnH" , "AnyColumnI", "AnyColumnJ","AnyColumnK")
|
||||
select t."DocCode" , t."DocType" , t."DocForm" , t."DocTypeName" , t."SettingsId"
|
||||
, t."orgId" , t."DocumentDate" , t."DocumentNumber" ,
|
||||
case when t."DocType" in ('UniversalDocument','DocumentForSigning') then (select pc."Code" from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#Worker#'
|
||||
join rp."RP_Worker" w on w."VCode" = daa1."BigIntValue"
|
||||
join rp."RP_PersonContact" AS pc ON pc."Pcode" = w."IdPerson" AND pc."IdTypeContact" = 6
|
||||
where t."DocumentCategory" = bd."PCode" limit 1)
|
||||
else t."VirtualCUser" end,
|
||||
|
||||
t."DateOfExecution"
|
||||
, t."DateControl" , t."RouteVCode" , t."RouteStatusId" , t."RouteStatusName" , t."DocName"
|
||||
, t."DocSubject" ,
|
||||
comdoc."dfwcGetDuration"(t."eDate", COALESCE(t."ActionDate", _now), false, t."orgId", 1, _dayoff1, _dayoff2, null) ,
|
||||
t."StageNumber" , t."BeginDate" , t."ActionDate"
|
||||
, t."DocumentAction" , t."DocumentStatus" , t."FromMessage" , t."eDate"
|
||||
, t."StageUser" , t."StageItemStatus" , t."StageStatus" , t."StageItemAction", t."DocumentSubtype", t."AnyColumnA" ,
|
||||
case when t."DocType" in ('DocumentForSigining','UniversalDocument') then (select coalesce(w."ID_RP",'') from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#Worker#'
|
||||
join rp."RP_WorkerMove" w on w."IdWorker" = daa1."BigIntValue"
|
||||
where t."DocumentCategory" = bd."PCode" limit 1)
|
||||
else (select coalesce(m."ID_RP",'') from rp."RP_WorkerMove" AS m where m."IdWorker" = t."IdWorker" limit 1) end as "AnyColumnB" ,
|
||||
case when t."DocType" in ('DocumentForSigining','UniversalDocument') then (select coalesce(w."RP_Txt",'') from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#Worker#'
|
||||
join rp."RP_WorkerMove" w on w."IdWorker" = daa1."BigIntValue"
|
||||
where t."DocumentCategory" = bd."PCode" limit 1) else (select coalesce(m."RP_Txt",'') from rp."RP_WorkerMove" AS m where m."IdWorker" = t."IdWorker" limit 1) end as "AnyColumnC",
|
||||
case when t."DocType" in ('DocumentForSigining','UniversalDocument') then (select coalesce(w."ID_ER",'') from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#Worker#'
|
||||
join rp."RP_WorkerMove" w on w."IdWorker" = daa1."BigIntValue"
|
||||
where t."DocumentCategory" = bd."PCode" limit 1) else (select coalesce(m."ID_ER",'') from rp."RP_WorkerMove" AS m where m."IdWorker" = t."IdWorker" limit 1) end as "AnyColumnD" ,
|
||||
t."AnyColumnE",
|
||||
(select to_char(daa1."DateValue", 'DD.MM.YYYY') from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#bdate#' where t."DocumentCategory" = bd."PCode" limit 1) as "AnyColumnF" ,
|
||||
(select to_char(daa1."DateValue", 'DD.MM.YYYY') from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#edate#' where t."DocumentCategory" = bd."PCode" limit 1) as "AnyColumnG" ,
|
||||
(select daa1."BigIntValue"::text from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" ='#kolvo#' where t."DocumentCategory" = bd."PCode" limit 1) as "AnyColumnH",
|
||||
(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."DocCode" = atr."PCode" and dca."ColumnName" not in ('#bdate#', '#edate#', '#kolvo#')) as "AnyColumnI",
|
||||
case when t."DocType" in ('UniversalDocument','DocumentForSigning') then (select w."NumTab" from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#Worker#'
|
||||
join rp."RP_Worker" w on w."VCode" = daa1."BigIntValue"
|
||||
where t."DocumentCategory" = bd."PCode" limit 1)
|
||||
else (select r."NumTab" from rp."RP_Worker" as r where r."VCode" = t."IdWorker") end ,
|
||||
case when t."DocType" in ('UniversalDocument','DocumentForSigning') then (select w."NameFull" from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#Worker#'
|
||||
join rp."RP_Worker" w on w."VCode" = daa1."BigIntValue"
|
||||
where t."DocumentCategory" = bd."PCode" limit 1)
|
||||
else (select r."NameFull" from rp."RP_Worker" as r where r."VCode" = t."IdWorker") end
|
||||
from "tmp_preresult" t
|
||||
where coalesce(t."RouteStatusId",0) = 2 and t."IsMarked" is not true
|
||||
and t."StageItemStatus"= 2 and
|
||||
exists (select 1
|
||||
from comdoc."getWorkerChiefStructure"(null::bigint,lex."getVirtualLogin"(),1) s
|
||||
join rp."RP_Worker" r on s."VCode" = r."VCode"
|
||||
join rp."RP_PersonContact" c on r."IdPerson" = c."Pcode" and c."IdTypeContact" = 6
|
||||
where c."Code" = coalesce(t."StageUser",'') )
|
||||
AND (
|
||||
t."DocumentDate" IS NULL OR t."DocumentDate" BETWEEN _bdate AND _edate
|
||||
) and t."DocType" not in ('ServiceDesk', 'CancellationAct') ;
|
||||
|
||||
```
|
||||
|
||||
#### Универсальные документы подчиненных
|
||||
|
||||
??? note "Запрос"
|
||||
|
||||
Основной запрос:
|
||||
|
||||
Итоговая выборка:
|
||||
|
||||
```sql
|
||||
insert into "tmp_finresult"( "DocCode" , "DocType" , "DocForm" , "DocTypeName" , "SettingsId"
|
||||
, "orgId" , "DocumentDate" , "DocumentNumber" , "VirtualCUser" , "DateOfExecution"
|
||||
, "DateControl" , "RouteVCode" , "RouteStatusId" , "RouteStatusName" , "DocName"
|
||||
, "DocSubject" , "expired" , "StageNumber" , "BeginDate" , "ActionDate"
|
||||
, "DocumentAction" , "DocumentStatus" , "FromMessage" , "eDate"
|
||||
, "StageUser" , "StageItemStatus" , "StageStatus" , "StageItemAction" , "DocumentSubtype" ,
|
||||
"AnyColumnA" ,"AnyColumnB" , "AnyColumnC","AnyColumnD" ,
|
||||
"AnyColumnE" ,
|
||||
"AnyColumnF", "AnyColumnG" , "AnyColumnH" , "AnyColumnI", "AnyColumnJ","AnyColumnK")
|
||||
select distinct t."DocCode" , t."DocType" , t."DocForm" , t."DocTypeName" , t."SettingsId"
|
||||
, t."orgId" , t."DocumentDate" , t."DocumentNumber" ,
|
||||
case when t."DocType" in ('UniversalDocument','DocumentForSigning') then (select pc."Code" from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#Worker#'
|
||||
join rp."RP_Worker" w on w."VCode" = daa1."BigIntValue"
|
||||
join rp."RP_PersonContact" AS pc ON pc."Pcode" = w."IdPerson" AND pc."IdTypeContact" = 6
|
||||
where t."DocumentCategory" = bd."PCode" limit 1)
|
||||
else t."VirtualCUser" end,
|
||||
|
||||
t."DateOfExecution"
|
||||
, t."DateControl" , t."RouteVCode" , t."RouteStatusId" , t."RouteStatusName" , t."DocName"
|
||||
, t."DocSubject" ,
|
||||
comdoc."dfwcGetDuration"(t."eDate", COALESCE(t."ActionDate", _now), false, t."orgId", 1, _dayoff1, _dayoff2, null) ,
|
||||
t."StageNumber" , t."BeginDate" , t."ActionDate"
|
||||
, t."DocumentAction" , t."DocumentStatus" , t."FromMessage" , t."eDate"
|
||||
, t."StageUser" , t."StageItemStatus" , t."StageStatus" , t."StageItemAction", t."DocumentSubtype", t."AnyColumnA" ,
|
||||
case when t."DocType" in ('DocumentForSigining','UniversalDocument') then (select coalesce(w."ID_RP",'') from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#Worker#'
|
||||
join rp."RP_WorkerMove" w on w."IdWorker" = daa1."BigIntValue"
|
||||
where t."DocumentCategory" = bd."PCode" limit 1)
|
||||
else (select coalesce(m."ID_RP",'') from rp."RP_WorkerMove" AS m where m."IdWorker" = t."IdWorker" limit 1) end as "AnyColumnB" ,
|
||||
case when t."DocType" in ('DocumentForSigining','UniversalDocument') then (select coalesce(w."RP_Txt",'') from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#Worker#'
|
||||
join rp."RP_WorkerMove" w on w."IdWorker" = daa1."BigIntValue"
|
||||
where t."DocumentCategory" = bd."PCode" limit 1) else (select coalesce(m."RP_Txt",'') from rp."RP_WorkerMove" AS m where m."IdWorker" = t."IdWorker" limit 1) end as "AnyColumnC",
|
||||
case when t."DocType" in ('DocumentForSigining','UniversalDocument') then (select coalesce(w."ID_ER",'') from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#Worker#'
|
||||
join rp."RP_WorkerMove" w on w."IdWorker" = daa1."BigIntValue"
|
||||
where t."DocumentCategory" = bd."PCode" limit 1) else (select coalesce(m."ID_ER",'') from rp."RP_WorkerMove" AS m where m."IdWorker" = t."IdWorker" limit 1) end as "AnyColumnD" ,
|
||||
t."AnyColumnE",
|
||||
(select to_char(daa1."DateValue", 'DD.MM.YYYY') from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#bdate#' where t."DocumentCategory" = bd."PCode" limit 1) as "AnyColumnF" ,
|
||||
(select to_char(daa1."DateValue", 'DD.MM.YYYY') from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#edate#' where t."DocumentCategory" = bd."PCode" limit 1) as "AnyColumnG" ,
|
||||
(select daa1."BigIntValue"::text from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" ='#kolvo#' where t."DocumentCategory" = bd."PCode" limit 1) as "AnyColumnH",
|
||||
(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."DocCode" = atr."PCode" and dca."ColumnName" not in ('#bdate#', '#edate#', '#kolvo#')) as "AnyColumnI",
|
||||
case when t."DocType" in ('UniversalDocument','DocumentForSigning') then (select w."NumTab" from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#Worker#'
|
||||
join rp."RP_Worker" w on w."VCode" = daa1."BigIntValue"
|
||||
where t."DocumentCategory" = bd."PCode" limit 1)
|
||||
else (select r."NumTab" from rp."RP_Worker" as r where r."VCode" = t."IdWorker") end ,
|
||||
case when t."DocType" in ('UniversalDocument','DocumentForSigning') then (select w."NameFull" from dfd."DocumentCategoryAttributeType" bd
|
||||
join dfd."DocumentAdditionalAttribute" daa1 on t."DocCode" = daa1."PCode" and daa1."CategoryAttributeType" = bd."VCode" and bd."ColumnName" = '#Worker#'
|
||||
join rp."RP_Worker" w on w."VCode" = daa1."BigIntValue"
|
||||
where t."DocumentCategory" = bd."PCode" limit 1)
|
||||
else (select r."NameFull" from rp."RP_Worker" as r where r."VCode" = t."IdWorker") end
|
||||
from "tmp_preresult" t
|
||||
where t."IsMarked" is not true and
|
||||
exists (select 1
|
||||
from comdoc."getWorkerChiefStructure"(null::bigint,lex."getVirtualLogin"(),1) s
|
||||
join rp."RP_Worker" r on s."VCode" = r."VCode"
|
||||
join rp."RP_PersonContact" c on r."IdPerson" = c."Pcode" and c."IdTypeContact" = 6
|
||||
where c."Code" = coalesce(t."StageUser",'') )
|
||||
AND (
|
||||
t."DocumentDate" IS NULL OR t."DocumentDate" BETWEEN _bdate AND _edate
|
||||
) and t."DocType" in ('UniversalDocument') ;
|
||||
```
|
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 105 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 30 KiB |
@ -56,7 +56,7 @@
|
||||
|
||||
Откроется форма для создания нового шаблона.
|
||||
|
||||

|
||||

|
||||
|
||||
В документе необходимо заполнить следующие поля:
|
||||
|
||||
@ -76,6 +76,8 @@
|
||||
|
||||
- **Подразделение:** – указывает на то, в каком подразделении действует шаблон, т.е. каждый пользователь прикреплен в системе к определенному подразделению, которое считывается автоматически при создании нового документа. По этой принадлежности фильтруются шаблоны. Если подразделение в шаблоне не задано, то шаблон действует по всей организации.
|
||||
|
||||
- **Время на обработку по умолчанию, дней / часов:** - устанавливается срок обработки документа в рабочих днях согласно производственному календарю при добавлении нового этапа согласования. В левом поле указываются дни, в правом - часы. **Заполняется только либо поле со днями либо с часами.** В случае если данные поля не заполнены, по умолчанию заполняется 2 рабочих дня.
|
||||
|
||||
- **Подтип документа** - указывает на то, для какого подтипа документа действует шаблон. Если подтип не указан, то шаблон маршрута действует для всех подтипов документа.
|
||||
|
||||
- **Роли приложения** – задает список ролей, хотя бы одной из которых должен обладать пользователь, чтобы создать такой шаблон маршрута в документе.
|
||||
@ -175,7 +177,7 @@
|
||||
|
||||
#### Столбец "Служебное наименование из конструктора"
|
||||
|
||||
Используется в случае, когда заранее неизвестно какой именно участник будет участвовать в маршруте, но его выбор зависит от реквизитов создаваемого документа. В этом случае в [конструкторе документов](../Конструктор документов/) в дополнительном атрибуте необходимо указать тип атрибута и служебное наименование. Например в подтипе "Документы о приеме на работу" заполняется атрибут "Работник" со служебным наименованием **#worker1#**.
|
||||
Используется в случае, когда заранее неизвестно какой именно участник будет участвовать в маршруте, но его выбор зависит от реквизитов создаваемого документа. В этом случае в [конструкторе документов](../Конструктор документов/) в дополнительном атрибуте либо в табличной части необходимо указать тип атрибута и служебное наименование. Например в подтипе "Документы о приеме на работу" заполняется атрибут "Работник" со служебным наименованием **#worker1#**.
|
||||
|
||||

|
||||
|
||||
|
After Width: | Height: | Size: 96 KiB |
@ -13,6 +13,8 @@ markdown_extensions:
|
||||
- pymdownx.highlight
|
||||
- pymdownx.superfences
|
||||
- def_list
|
||||
- pymdownx.tabbed:
|
||||
alternate_style: true
|
||||
|
||||
extra_css:
|
||||
- css/extra.css
|
||||
|