This commit is contained in:
khasipova_lr 2025-01-21 15:39:02 +05:00
commit d1f873881b
8 changed files with 415 additions and 399 deletions

View File

@ -71,7 +71,7 @@ search:
Новый созданный документ, выглядит следующим образом: Новый созданный документ, выглядит следующим образом:
![alt text](media/image-37.png) ![alt text](media/image-45.png)
Обязательными полями для заполнения являются: Обязательными полями для заполнения являются:
@ -144,7 +144,7 @@ search:
Для выбора необходимого типа в документе "Конструктор документов" необходимо раскрыть справочник "Тип документа" и выбрать необходимый их выпадающего списка. Для выбора необходимого типа в документе "Конструктор документов" необходимо раскрыть справочник "Тип документа" и выбрать необходимый их выпадающего списка.
![alt text](media/image-38.png) ![alt text](media/image-46.png)
После выбора типа документа необходимо выбрать подтип документа. После выбора типа документа необходимо выбрать подтип документа.
@ -181,13 +181,11 @@ search:
Для добавления новой строки в таблицу "Дополнительные атрибуты" необходимо нажать на кнопку "Добавить". Для добавления новой строки в таблицу "Дополнительные атрибуты" необходимо нажать на кнопку "Добавить".
![Рисунок 10 Расположение кнопки "Добавить"](./media/image8.png) ![alt text](media/image-47.png)
После нажатия на кнопку добавляется новая строка в таблице. После нажатия на кнопку добавляется новая строка в таблице.
![Рисунок 11 Новая строка в таблице "Дополнительные атрибуты"](./media/image10.png) #### Описание полей в таблице "Дополнительные атрибуты":
#### Описание полей в таблице "Дополнительные атрибуты": { #описание-полей }
- **"Порядок"** порядок сортировки, заполняется целыми числами, в зависимости от которых будут упорядочиваться атрибуты для заполнения в документе. Например, атрибут с порядком сортировки, равным 2, будет располагаться ниже атрибута с порядком, равным 1. - **"Порядок"** порядок сортировки, заполняется целыми числами, в зависимости от которых будут упорядочиваться атрибуты для заполнения в документе. Например, атрибут с порядком сортировки, равным 2, будет располагаться ниже атрибута с порядком, равным 1.
- **"Наименование"** необходимо заполнить наименованием дополнительного атрибута (строковое поле), исходя из которого пользователю должно быть понятно, какое значение должен принимать атрибут. Например: "Год", "Способ получения справки" и пр. Является обязательным для заполнения. - **"Наименование"** необходимо заполнить наименованием дополнительного атрибута (строковое поле), исходя из которого пользователю должно быть понятно, какое значение должен принимать атрибут. Например: "Год", "Способ получения справки" и пр. Является обязательным для заполнения.
@ -555,7 +553,7 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
Заполненная табличная часть выглядит следующим образом: Заполненная табличная часть выглядит следующим образом:
![Рисунок 12 Таблица "Дополнительные атрибуты"](./media/docTableFilled.png) ![alt text](media/image-48.png)
## Шаблон ## Шаблон
@ -623,6 +621,411 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
![Рисунок 30 Копирование исправление](./media/Конструктор копирование в столбик исправление.png) ![Рисунок 30 Копирование исправление](./media/Конструктор копирование в столбик исправление.png)
## Вкладка "Настройка интерфейса"
В данной вкладке настраивается интерфейс документа.
### Видимость данных
* Скрыть поле **<Номер документа>** - скрывается номер документа;
![Нет номера](media/noNumber1.png)
![Нет номера](media/noNumber.png)
* Скрыть поле **<Дата документа>** - скрывается дата документа;
![Дата](media/noDate.png)
![Дата](media/noDate1.png)
* Скрыть поле **<Автор/Работник>** - скрывается инициатор документа;
![Автор](media/noAvtor.png)
![Автор](media/noAvtor1.png)
* Скрыть поле **<Должность автора>** - скрывается должность инициатора документа;
![Должность](media/noDolnzhnost.png)
![Должность](media/noDolnzhnost1.png)
* Скрыть поле **<Подразделение автора>** - скрывается подразделение инициатора документа;
![Подразделение](media/noPodrazdelenie.png)
![Подразделение](media/noPodrazdelenie1.png)
* Скрыть поле **<Организация>**
![Организация](media/noOrg.png)
![Организация](media/noOrg1.png)
* Скрыть группу **<Регистрационные данные> полностью** - скрывается полностью группа регистрационных данных документа;
![Нет данных](media/noDannye.png)
![Нет данных](media/noDannye1.png)
* Скрыть кнопку **<Операции> в заявлениях** - скрывается кнопка "Операции" в панели инструментов в **заявлениях**;
![Операции](media/noOperachii.png)
![Операции](media/noOperachii1.png)
* Скрыть кнопку **<Копировать>** - скрывается кнопка "Копировать" в панели инструментов в **универсальных документах** и **доверенностях на конструкторе**;
![Копирование](media/noCopy1.png)
![Копирование](media/noCopy12.png)
* Скрыть кнопку **<Рассылка>** - скрывается кнопка "Рассылка" в панели инструментов в **заявлениях**;
![Рассылка](media/noRassylka.png)
![Рассылка](media/noRassylka1.png)
* Скрыть кнопку **<На контроль>** - скрывается кнопка "На контроль" в панели инструментов в документах;
![На контроль](media/noControl.png)
![На контроль](media/noControl1.png)
* Скрыть кнопку **<Аннулировать>** - скрывается кнопка "Аннулировать" в панели инструментов в документах;
![Аннулировать](media/anull.png)
![Аннулировать](media/anull2.png)
* Скрыть поле **<Кому:>** - скрывается поле "Кому" в служебной записке;
![alt text](media/image-31.png)
![alt text](media/image-32.png)
* Скрыть поле **<Копия:>** - скрывается поле "Копия" в служебной записке;
![alt text](media/image-33.png)
![alt text](media/image-34.png)
* Скрыть поле **<Доп.Согласование>** - скрывается поле "Доп.согласование" в служебной записке;
![alt text](media/image-35.png)
![alt text](media/image-36.png)
* Скрыть поле **<Договор>** - скрывается поле "Договор" во входящем документе;
![alt text](media/image-40.jpg)
![alt text](media/image124.png)
* Скрыть поле **<Вид доставки>** - скрывается поле "Вид доставки" во входящем документе;
![alt text](media/image120.png)
![alt text](media/image122.png)
* Скрыть поле **<Получатель>** - скрывается поле "Получатель" во входящем документе;
![alt text](media/image121.png)
![alt text](media/image123.png)
* Скрыть поле **<Примечание>** - скрывается поле "Примечание" в исходящем документе;
![alt text](media/image125.png)
![alt text](media/image126.png)
### Меню операций
В табличной части "Тип+подтип документов" задаются условия какие типы и подтипы документов будут отображаться по кнопке "Операции" внутри документа.
Данный пример представлен для конструктора группы ["Уведомления Lexema"](../Настройка внутрисистемных уведомлений/index.md) подтипа "Уведомления об отпуске".
![Меню](media/menuOperac.png)
* **Вкл.** - включение или отключение операции в выбранном документе;
* **Название** - задается название операции, например, Создать "Заявление на ежегодный отпуск";
* **Тип документа** - выбирается к какому типу документа необходимо добавить меню операций;
* **Подтип** - выбирается к какому типу документа необходимо добавить меню операций;
* **Условие фильтрации** - задается название типа вида отпуска указанный в [уведомлении](../Настройка внутрисистемных уведомлений/index.md)
* **Служебное наименование** - задается служебное наименование [дополнительного атрибута](ополнительные_атрибуты_документа), в данном случае **#typeVacation#**.
* **Условие для видимости операции** - указывается условие в зависимости от которого выбранная операция будет доступна для пользователя, например, `not exists (select 1 from comdoc."isAccessOfRoles"(lex."getLogin"(), comdoc."getFilial"(),'user') where "RoleName" ilike '%df_officeworker%')`, в данном условии сказано что операция не будет доступа пользователю имеющий роль **df_officeworker**.
![Атрибут](media/atribut.png)
!!! note
Если столбцы "Подтип", "Условие фильтрации" и "Служебное наименование" не заполнены, то созданная операция будет отображаться во всех подтипах документа. Кнопка "Операции" отображается только в документах "Заявление от сотрудника".
В данном примере указано, что при поступлении пользователю уведомления где вид отпуска "Основной", в меню операций у него будут доступны операции:
* Создать "Заявление на доп. отпуск"
* Создать "Заявление на ежегодный отпуск"
* Создать "Заявление на перенос отпуска"
* Создать "Универсальный документ"
![Операции](media/operacii.png)
### Статичные поля
В табличной части возможно настроить обязательность заполнения, видимости и указать значения по умолчанию для статичных полей в карточке документа.
![alt text](media/image-49.png)
Данные настройки работают по аналогии с [дополнительными атрибутами](ополнительные_атрибуты_документа).
* **Контрол** - выпадающий список с наименованием атрибута документа.
* **Id** - уникальный идентификатор атрибута в макете документа
* **Поле в БД** - наименование атрибута документа в базе данных.
* **Видимость** - отображение атрибута в документе.
* **Требовать заполнение** обязательность заполнения атрибута. Если в табличной части стоит галочка, документ не получится сохранить и отправить по маршруту, пока соответствующий атрибут не будет заполнен. Вкл. - требует заполнения атрибута.
* **Группа столбцов "Значение по умолчанию"** используется в случае, если при создании документа реквизит должен быть заполнен неким условленным значением. Для разных типов атрибутов используются разные колонки. Для типов атрибута **"Строка"** требуется заполнить поле в столбце **"Текст"**. Для типов атрибута **"Логическое"** требуется поставить галочку в столбце **"Флаг"**. Для типа атрибута **"Целое"** или типов атрибутов, которые позволяют в документе выбрать значение из списка, требуется заполнить поле в столбце "Код/число" числовым значением.
## Вкладка "Настройка проверок"
Данная вкладка предназначена для определения зависимостей атрибутов между собой.
### Зависимые атрибуты
В данном примере представлен конструктор подтипа "Заявление о предоставлении стандартного налогового вычета на ребенка". В блоке "Дополнительные атрибуты", например, по первому ребенку указаны такие атрибуты как **#first#, #firstfio#, #firstdr#, #firstvichet#** и **#firstapp#**.
![Конструктор](media/constucVychet.png)
В столбце **"Основной атрибут"** заполняется служебное наименование атрибута, который является основным, в данном случае **#first#**. В столбце **«Зависимые атрибуты»** указываются служебные наименования атрибутов, которые необходимо указать как зависимые от основного атрибута, в данном случае это **#firstfio#, #firstdr#, #firstvichet# и #firstapp#**.
Если в табличной части стоит галочка "Вкл.", документ не получится сохранить и отправить по маршруту, пока соответствующий атрибут не будет заполнен. **Вкл.** - требует заполнения атрибута. **"Действие"** - назначается при каком действии будет требоваться заполнения атрибута в процессе согласования по маршруту.Возможно выбрать как одно, так и несколько действий. Если в столбце **"Действие"** ничего не указано, то данная проверка будет срабатывать у инициатора документа.
![alt text](media/image-42.png)
В данном примере указано что при заполнении поля "Первый ребенок" у которого служебное наименование **#first#**, система будет проверять заполнение полей ФИО, Дата рождения, Размер вычета и свидетельство о рождении, так как служебные наименования указаны в вычислениях как зависимые от поля "Первый ребенок". В случае не заполнения зависимых полей, они будут подсвечены красным светом, а также будет выведен текст о необходимости заполнить данные.
![Заявление на вычет](media/zayavlenie2.png)
### Дополнительные проверки
#### Проверки для дополнительных атрибутов
При необходимости возможно настроить дополнительные проверки для атрибутов. В данном примере представлен конструктор подтипа "Заявление на перенос ежегодного оплачиваемого отпуска". В блоке "**Дополнительные атрибуты"** указаны атрибуты по датам переноса и количеству дней переноса. При необходимости возможно отключить какие-то проверки по отдельности, для этого необходимо выбрать необходимую проверку и в столбце **"Вкл."** проставить галочку. В столбце **"Колонка для выделения"** перечисляются атрибуты (если их несколько то через запятую), на которые необходимо задать проверки. В столбце **"Сообщение"** задается информационное сообщение, которое выводится в случае незаполнения либо некорректных данных. В столбце **"Правило для проверки"** указывается условие по которому вычисляется проверка по зависимым атрибутам. **"Действие"** - назначается при каком действии будет требоваться заполнения атрибута в процессе согласования по маршруту.Возможно выбрать как одно, так и несколько действий. Если в столбце **"Действие"** ничего не указано, то данная проверка будет срабатывать у инициатора документа.
![alt text](media/image-43.png)
В данном примере указано правило: в случае если атрибут **#bdate_new1#** (_Дата начала нового отпуска (период 1)_) меньше либо равна текущей дате, то будет информационное сообщение: **"Дата начала нового отпуска должна быть позже текущей даты"**.
![alt text](media/image-44.png)
![Предупреждение](media/warning2.png)
**Ниже представлены примеры проверок для расчета количества дней:**
<!DOCTYPE html>
<html>
<head>
<title>Правила для проверки</title>
</head>
<body>
<table border="1">
<tr>
<th>Колонка для выделения</th>
<th>Сообщение</th>
<th>Правило для проверки</th>
</tr>
<tr>
<td>#bdate_new1#</td>
<td>Дата начала нового отпуска должна быть позже текущей даты</td>
<td>#bdate_new1#::date <= now()::date</td>
</tr>
<tr>
<td>#bdate_new2#</td>
<td>Дата начала нового отпуска должна быть позже текущей даты</td>
<td>coalesce(#bdate_new2#,'19700101')<>'19700101' and #bdate_new2#::date <= now()::date</td>
</tr>
<tr>
<td>#bdate_new2#</td>
<td>Дата начала отпуска в следующем году. Скорректируйте #bdate_new1_name# #bdate_new1#</td>
<td>#year#::integer < date_part('year'::text,#bdate_new2#::date)::integer</td>
</tr>
<tr>
<td>#bdate_new1#</td>
<td>Дата начала отпуска в следующем году. Скорректируйте #bdate_new1_name# #bdate_new1#</td>
<td>#year#::integer < date_part('year'::text,#bdate_new1#::date)::integer</td>
</tr>
<tr>
<td>#bdate_new2#</td>
<td>Заявление подается минимум за 3 дня до даты отпуска</td>
<td>coalesce(#bdate_new2#,'19700101')<>'19700101' and #bdate_new2#::date < now()::date + interval '1 day' * 3</td>
</tr>
<tr>
<td>#bdate_new1#,#bdate_new2#</td>
<td>Заявление подается минимум за 3 дня до даты отпуска. Скорректируйте #bdate_new1_name# #bdate_new1#</td>
<td>#bdate_new1#::date < now()::date + interval '1 day' * 21</td>
</tr>
<tr>
<td>#kolvo_new2#</td>
<td>Количество переносов (часть 1 + часть 2) меньше чем в основном отпуске</td>
<td>#kolvo# > coalesce(#kolvo_new1#,0) + coalesce(#kolvo_new2#,0) and coalesce(#kolvo_new2#,0) <> 0</td>
</tr>
<tr>
<td>#kolvo_new2#</td>
<td>Количество переносов (часть 1 + часть2) больше чем в основном отпуске</td>
<td>#kolvo# < coalesce(#kolvo_new1#,0) + coalesce(#kolvo_new2#,0) and coalesce(#kolvo_new2#,0) <> 0</td>
</tr>
<tr>
<td>#kolvo_new1#</td>
<td>Количество переносов (часть 1) больше чем в основном отпуске</td>
<td>#kolvo# < coalesce(#kolvo_new1#,0)</td>
</tr>
<tr>
<td>#kolvo_new1#</td>
<td>Количество переносов (часть 1) меньше чем в основном отпуске</td>
<td>#kolvo# > coalesce(#kolvo_new1#,0) and coalesce(#kolvo_new2#,0) = 0</td>
</tr>
<tr>
<td>#bdate_new1#,#bdate_new2#</td>
<td>Непрерывный период хотя бы одного отпуска в год должен составлять не менее 14 дней.</td>
<td>"coalesce(dfd.""CheckWorkerPeriodVacations""(
#Master_IdWorker#::bigint,
comdoc.""getFilial""()::bigint,
#year#::bigint,
true::boolean,
now()::date,
#bdate_new1#::date,#edate_new1#::date,
#bdate_new2#::date, #edate_new2#::date,
#bdate_new3#::date, #edate_new3#::date,
#bdate#::date, doc_code::bigint),false) = false"</td>
</tr>
<tr>
<td>#bdate_new1#</td>
<td>Перенос отпуска оформлен только на выходные дни. Скорректируйте #bdate_new1_name# #bdate_new1#</td>
<td>"not exists(select 1 from comdoc.""VDocflowCalendar"" v where v.""RDate"" between #bdate_new1#::date and #edate_new1#::date
and ""isDayOff"" = false and ((v.""orgId"" = comdoc.""getFilial""() and coalesce (comdoc.""fnDefineRegion""(null::bigint, comdoc.""getFilial""()::bigint, now()::date),0) =0) or v.""Region"" = comdoc.""fnDefineRegion""(null::bigint, comdoc.""getFilial""()::bigint, now()::date) ))
"</td>
</tr>
<tr>
<td>#bdate_new2#</td>
<td>Перенос отпуска оформлен только на выходные дни. Скорректируйте #bdate_new2_name# #bdate_new2#</td>
<td>"not exists(select 1 from comdoc.""VDocflowCalendar"" v where v.""RDate"" between #bdate_new2#::date and #edate_new2#::date
and ""isDayOff"" = false and ((v.""orgId"" = comdoc.""getFilial""() and coalesce(comdoc.""fnDefineRegion""(null::bigint, comdoc.""getFilial""()::bigint, now()::date),0) =0) or v.""Region"" = comdoc.""fnDefineRegion""(null::bigint, comdoc.""getFilial""()::bigint, now()::date) )) and #bdate_new2# is not null
"</td>
</tr>
<tr>
<td>#bdate_new1#</td>
<td>Перенос создан с даты ранее разрешенной</td>
<td>#bdate_new1#::date < (#year# ||substring((select t.""valueText"" from comdoc.""getAccountingConstantValues""(null, 'создавать переносы отпусков, начиная с даты (день+месяц)'::text , null) t) ,4,2)
|| left((select t.""valueText"" from comdoc.""getAccountingConstantValues""(null, 'создавать переносы отпусков, начиная с даты (день+месяц)'::text , null) t) ,2))::date</td>
</tr>
<tr>
<td>#bdate_new2#</td>
<td>Перенос создан с даты ранее разрешенной</td>
<td>#bdate_new2#::date < (#year# ||substring((select t.""valueText"" from comdoc.""getAccountingConstantValues""(null, 'создавать переносы отпусков, начиная с даты (день+месяц)'::text , null) t) ,4,2)
|| left((select t.""valueText"" from comdoc.""getAccountingConstantValues""(null, 'создавать переносы отпусков, начиная с даты (день+месяц)'::text , null) t) ,2))::date</td>
</tr>
<tr>
<td>#bdate_new2#</td>
<td>Пересечение отпусков, скорректируйте период</td>
<td>coalesce(#bdate_new2#,'19700101')<>'19700101' and #bdate_new2# between #bdate_new1# and #edate_new1#</td>
</tr>
<tr>
<td>#bdate_new1#</td>
<td>Пересечение отпусков, скорректируйте период</td>
<td>coalesce(#bdate_new1#,'19700101')<>'19700101' and #bdate_new1# between #bdate_new2# and #edate_new2#</td>
</tr>
<tr>
<td>#edate_new1#</td>
<td>Пересечение отпусков, скорректируйте период</td>
<td>coalesce(#edate_new1#,'19700101')<>'19700101' and #edate_new1# between #bdate_new2# and #edate_new2#</td>
</tr>
<tr>
<td>#edate_new2#</td>
<td>Пересечение отпусков, скорректируйте период</td>
<td>coalesce(#edate_new2#,'19700101')<>'19700101' and #edate_new2# between #bdate_new1# and #edate_new1#</td>
</tr>
<tr>
<td>#bdate#</td>
<td>На текущий календарный год отпуск запланирован, для корректировки периода предоставления отпуска необходимо оформить перенесение отпуска</td>
<td>
exists(select 1 from aw."RP_DocVacation" p
inner join aw."RP_WorkerVacation" m on p."VCode" = m."Pcode"
where p."Year" = date_part('year'::varchar(255), #bdate#::date) and m."IdWorker" = #Master_IdWorker# and p."TypeName" = 'Base.RP_DocVacation'
limit 1)</td>
</tr>
<tr>
<td>#Master_DocumentDate#</td>
<td>Заявление на перенос отпуска будущего месяца создаются только в период с 10 по 17 число текущего месяца</td>
<td>
date_part('day',now()) not in (10,11,12,13,14,15,16,17)</td>
</tr>
</table>
</body>
</html>
!!! note
Для вычислений проверки **"Перенос создан с даты ранее разрешенной"** необходимо завести константу ```создавать переносы отпусков, начиная с даты (день+месяц)```, заполняется столбец **"Значение (текст)"** числом и месяцем ранее которой не разрешается создавать заявление на перенос ежегодного отпуска.
**Ниже представлен пример проверки на заполнение реквизита в документе для пользователя с определенной должностью**, на примере документа "Заявление на получение справки 2НДФЛ", где #year# является реквизитом документа
Колонка для выделения | Сообщение | Правило для проверки
----------------------|-----------|---------------------
#year# | Необходимо заполнить информацию | #Master_Position# ilike '%водитель%'
Также возможно использовать служебное слово **#Master_PositionName#**, например, при написании заявления на ежегодный отпуск руководителем, необходимо указать заместителя на период отсутствия.
Колонка для выделения | Сообщение | Правило для проверки
----------------------|-----------|---------------------
#zam# | Необходимо заполнить информацию | coalesce(#zam#,0)::bigint=0::bigint and '#Master_PositionName#'::text ilike '%глав%врач%'::text
#### Проверки для табличных атрибутов
В столбец **"Колонка для выделения"** указывается служебное наименование таблицы,например, **#Table1#**, а в столбце **"Правило для проверки"** указывается служебные наименования таблицы и атрибута, например, **#Table1_bigint#**.
![alt text](media/2024-06-14 15 40 11.png)
![alt text](media/2024-06-14 15 53 40.png)
## Вкладка "Настройка вычислений"
Данная вкладка предназначена для вычисления зависимостей атрибутов.
В столбце **"Основной атрибут"** заполняется служебное наименование атрибута, который является основным в конструкторе. В столбце **«Зависимые атрибуты»** указываются служебные наименования атрибутов, которые необходимо указать как зависимые от основного атрибута. В столбце **"Вычисление"** указывается условие по которому вычисляется проверка по зависимым атрибутам. В столбце **"Фильтрация"** указывается условие по которому выполняется фильтрация по зависимым атрибутам.
В качестве вычисления возможно также использовать [вычисляемые атрибуты](#вычисляемые_атрибуты):
Вычисляемый атрибут | Описание
--------------------|---------
#Master_BeginDate# | дата начала действия доверенности
#Master_DocumentDate# | дата создания документа
#Master_DocumentNumber# | номер создаваемого документа
#Master_EndDate# | дата окончания действия доверенности
#Master_IdWorker# | код работника из справочника "Сотрудники"
#Master_MyCompany# | компания пользователя создателя документа
#Master_Position# | должность пользователя создателя документа
В данном примере представлены вычисления для определения подразделения и должности при выборе сотрудника из выпадающего списка. В качестве основного атрибута для обоих вычислений выступает служебное наименование **#worker#**, для должности - **#prof#**, для подразделения - **#podr#**. При необходимости вычисления можно отключить, для этого нужно проставить галочку в столбце "Вкл.".
Основной атрибут | Зависимые атрибуты | Вычисления
-----------------|--------------------|-----------
#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-12.png)
![Атрибуты](media/naimenova.png)
![Заявление](media/zayavlen.png)
В примере указанном ниже указано условие фильтрации по которому в зависимости от выбранного подразделения будут фильтроваться сотрудники, которые работают в данном подразделении.
Основной атрибут | Зависимые атрибуты | Фильтрация
-----------------|--------------------|-----------
#podr# | #worker# | and (t."IdDepartment" = coalesce(#podr#,0) or #podr# is null)
![Alt text](media/image-6.png)
![Атрибуты](media/naimenova.png)
![Alt text](media/image-7.png)
!!! note
Фильтрация настроена для атрибутов с выпадающим списком: **Должность**, **Подразделение**, **Работник**, **Пользовательские типы атрибутов документов**, **Договор**, **Контрагент**, **Произвольная выборка**
Для зависимых атрибутов возможно настроить динамическое появление атрибута в документе. Для отображения атрибутов необходимо проставить галочка в столбце **"Видимость"**. должно быть **логическое**. Также данные атрибуты должны быть по умолчанию невидимыми в табличной части [дополнительные атрибуты](ополнительные_атрибуты_документа).
![Alt text](media/image-5.png)
![Alt text](media/image-2.png)
![Alt text](media/image-1.png)
## Вкладка "Ограничения" ## Вкладка "Ограничения"
### Правила для вложений ### Правила для вложений
@ -769,397 +1172,6 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
![По вопросу](media/vopros.png) ![По вопросу](media/vopros.png)
## Вкладка "Настройка интерфейса"
В данной вкладке настраивается интерфейс документа.
### Видимость данных
* Скрыть поле **<Номер документа>** - скрывается номер документа;
![Нет номера](media/noNumber1.png)
![Нет номера](media/noNumber.png)
* Скрыть поле **<Дата документа>** - скрывается дата документа;
![Дата](media/noDate.png)
![Дата](media/noDate1.png)
* Скрыть поле **<Автор/Работник>** - скрывается инициатор документа;
![Автор](media/noAvtor.png)
![Автор](media/noAvtor1.png)
* Скрыть поле **<Должность автора>** - скрывается должность инициатора документа;
![Должность](media/noDolnzhnost.png)
![Должность](media/noDolnzhnost1.png)
* Скрыть поле **<Подразделение автора>** - скрывается подразделение инициатора документа;
![Подразделение](media/noPodrazdelenie.png)
![Подразделение](media/noPodrazdelenie1.png)
* Скрыть поле **<Организация>**
![Организация](media/noOrg.png)
![Организация](media/noOrg1.png)
* Скрыть группу **<Регистрационные данные> полностью** - скрывается полностью группа регистрационных данных документа;
![Нет данных](media/noDannye.png)
![Нет данных](media/noDannye1.png)
* Скрыть кнопку **<Операции> в заявлениях** - скрывается кнопка "Операции" в панели инструментов в **заявлениях**;
![Операции](media/noOperachii.png)
![Операции](media/noOperachii1.png)
* Скрыть кнопку **<Копировать>** - скрывается кнопка "Копировать" в панели инструментов в **универсальных документах** и **доверенностях на конструкторе**;
![Копирование](media/noCopy1.png)
![Копирование](media/noCopy12.png)
* Скрыть кнопку **<Рассылка>** - скрывается кнопка "Рассылка" в панели инструментов в **заявлениях**;
![Рассылка](media/noRassylka.png)
![Рассылка](media/noRassylka1.png)
* Скрыть кнопку **<На контроль>** - скрывается кнопка "На контроль" в панели инструментов в документах;
![На контроль](media/noControl.png)
![На контроль](media/noControl1.png)
* Скрыть кнопку **<Аннулировать>** - скрывается кнопка "Аннулировать" в панели инструментов в документах;
![Аннулировать](media/anull.png)
![Аннулировать](media/anull2.png)
* Скрыть поле **<Кому:>** - скрывается поле "Кому" в служебной записке;
![alt text](media/image-31.png)
![alt text](media/image-32.png)
* Скрыть поле **<Копия:>** - скрывается поле "Копия" в служебной записке;
![alt text](media/image-33.png)
![alt text](media/image-34.png)
* Скрыть поле **<Доп.Согласование>** - скрывается поле "Доп.согласование" в служебной записке;
![alt text](media/image-35.png)
![alt text](media/image-36.png)
* Скрыть поле **<Договор>** - скрывается поле "Договор" во входящем документе;
![alt text](media/image-40.jpg)
![alt text](media/image124.png)
* Скрыть поле **<Вид доставки>** - скрывается поле "Вид доставки" во входящем документе;
![alt text](media/image120.png)
![alt text](media/image122.png)
* Скрыть поле **<Получатель>** - скрывается поле "Получатель" во входящем документе;
![alt text](media/image121.png)
![alt text](media/image123.png)
* Скрыть поле **<Примечание>** - скрывается поле "Примечание" в исходящем документе;
![alt text](media/image125.png)
![alt text](media/image126.png)
### Меню операций
В табличной части "Тип+подтип документов" задаются условия какие типы и подтипы документов будут отображаться по кнопке "Операции" внутри документа.
Данный пример представлен для конструктора группы ["Уведомления Lexema"](../Настройка внутрисистемных уведомлений/index.md) подтипа "Уведомления об отпуске".
![Меню](media/menuOperac.png)
* **Вкл.** - включение или отключение операции в выбранном документе;
* **Название** - задается название операции, например, Создать "Заявление на ежегодный отпуск";
* **Тип документа** - выбирается к какому типу документа необходимо добавить меню операций;
* **Подтип** - выбирается к какому типу документа необходимо добавить меню операций;
* **Условие фильтрации** - задается название типа вида отпуска указанный в [уведомлении](../Настройка внутрисистемных уведомлений/index.md)
* **Служебное наименование** - задается служебное наименование [дополнительного атрибута](ополнительные_атрибуты_документа), в данном случае **#typeVacation#**.
* **Условие для видимости операции** - указывается условие в зависимости от которого выбранная операция будет доступна для пользователя, например, `not exists (select 1 from comdoc."isAccessOfRoles"(lex."getLogin"(), comdoc."getFilial"(),'user') where "RoleName" ilike '%df_officeworker%')`, в данном условии сказано что операция не будет доступа пользователю имеющий роль **df_officeworker**.
![Атрибут](media/atribut.png)
!!! note
Если столбцы "Подтип", "Условие фильтрации" и "Служебное наименование" не заполнены, то созданная операция будет отображаться во всех подтипах документа. Кнопка "Операции" отображается только в документах "Заявление от сотрудника".
В данном примере указано, что при поступлении пользователю уведомления где вид отпуска "Основной", в меню операций у него будут доступны операции:
* Создать "Заявление на доп. отпуск"
* Создать "Заявление на ежегодный отпуск"
* Создать "Заявление на перенос отпуска"
* Создать "Универсальный документ"
![Операции](media/operacii.png)
## Вкладка "Настройка проверок"
Данная вкладка предназначена для определения зависимостей атрибутов между собой.
### Зависимые атрибуты
В данном примере представлен конструктор подтипа "Заявление о предоставлении стандартного налогового вычета на ребенка". В блоке "Дополнительные атрибуты", например, по первому ребенку указаны такие атрибуты как **#first#, #firstfio#, #firstdr#, #firstvichet#** и **#firstapp#**.
![Конструктор](media/constucVychet.png)
В столбце **"Основной атрибут"** заполняется служебное наименование атрибута, который является основным, в данном случае **#first#**. В столбце **«Зависимые атрибуты»** указываются служебные наименования атрибутов, которые необходимо указать как зависимые от основного атрибута, в данном случае это **#firstfio#, #firstdr#, #firstvichet# и #firstapp#**.
Если в табличной части стоит галочка "Вкл.", документ не получится сохранить и отправить по маршруту, пока соответствующий атрибут не будет заполнен. **Вкл.** - требует заполнения атрибута. **"Действие"** - назначается при каком действии будет требоваться заполнения атрибута в процессе согласования по маршруту.Возможно выбрать как одно, так и несколько действий. Если в столбце **"Действие"** ничего не указано, то данная проверка будет срабатывать у инициатора документа.
![alt text](media/image-42.png)
В данном примере указано что при заполнении поля "Первый ребенок" у которого служебное наименование **#first#**, система будет проверять заполнение полей ФИО, Дата рождения, Размер вычета и свидетельство о рождении, так как служебные наименования указаны в вычислениях как зависимые от поля "Первый ребенок". В случае не заполнения зависимых полей, они будут подсвечены красным светом, а также будет выведен текст о необходимости заполнить данные.
![Заявление на вычет](media/zayavlenie2.png)
### Дополнительные проверки
#### Проверки для дополнительных атрибутов
При необходимости возможно настроить дополнительные проверки для атрибутов. В данном примере представлен конструктор подтипа "Заявление на перенос ежегодного оплачиваемого отпуска". В блоке "**Дополнительные атрибуты"** указаны атрибуты по датам переноса и количеству дней переноса. При необходимости возможно отключить какие-то проверки по отдельности, для этого необходимо выбрать необходимую проверку и в столбце **"Вкл."** проставить галочку. В столбце **"Колонка для выделения"** перечисляются атрибуты (если их несколько то через запятую), на которые необходимо задать проверки. В столбце **"Сообщение"** задается информационное сообщение, которое выводится в случае незаполнения либо некорректных данных. В столбце **"Правило для проверки"** указывается условие по которому вычисляется проверка по зависимым атрибутам. **"Действие"** - назначается при каком действии будет требоваться заполнения атрибута в процессе согласования по маршруту.Возможно выбрать как одно, так и несколько действий. Если в столбце **"Действие"** ничего не указано, то данная проверка будет срабатывать у инициатора документа.
![alt text](media/image-43.png)
В данном примере указано правило: в случае если атрибут **#bdate_new1#** (_Дата начала нового отпуска (период 1)_) меньше либо равна текущей дате, то будет информационное сообщение: **"Дата начала нового отпуска должна быть позже текущей даты"**.
![alt text](media/image-44.png)
![Предупреждение](media/warning2.png)
**Ниже представлены примеры проверок для расчета количества дней:**
<!DOCTYPE html>
<html>
<head>
<title>Правила для проверки</title>
</head>
<body>
<table border="1">
<tr>
<th>Колонка для выделения</th>
<th>Сообщение</th>
<th>Правило для проверки</th>
</tr>
<tr>
<td>#bdate_new1#</td>
<td>Дата начала нового отпуска должна быть позже текущей даты</td>
<td>#bdate_new1#::date <= now()::date</td>
</tr>
<tr>
<td>#bdate_new2#</td>
<td>Дата начала нового отпуска должна быть позже текущей даты</td>
<td>coalesce(#bdate_new2#,'19700101')<>'19700101' and #bdate_new2#::date <= now()::date</td>
</tr>
<tr>
<td>#bdate_new2#</td>
<td>Дата начала отпуска в следующем году. Скорректируйте #bdate_new1_name# #bdate_new1#</td>
<td>#year#::integer < date_part('year'::text,#bdate_new2#::date)::integer</td>
</tr>
<tr>
<td>#bdate_new1#</td>
<td>Дата начала отпуска в следующем году. Скорректируйте #bdate_new1_name# #bdate_new1#</td>
<td>#year#::integer < date_part('year'::text,#bdate_new1#::date)::integer</td>
</tr>
<tr>
<td>#bdate_new2#</td>
<td>Заявление подается минимум за 3 дня до даты отпуска</td>
<td>coalesce(#bdate_new2#,'19700101')<>'19700101' and #bdate_new2#::date < now()::date + interval '1 day' * 3</td>
</tr>
<tr>
<td>#bdate_new1#,#bdate_new2#</td>
<td>Заявление подается минимум за 3 дня до даты отпуска. Скорректируйте #bdate_new1_name# #bdate_new1#</td>
<td>#bdate_new1#::date < now()::date + interval '1 day' * 21</td>
</tr>
<tr>
<td>#kolvo_new2#</td>
<td>Количество переносов (часть 1 + часть 2) меньше чем в основном отпуске</td>
<td>#kolvo# > coalesce(#kolvo_new1#,0) + coalesce(#kolvo_new2#,0) and coalesce(#kolvo_new2#,0) <> 0</td>
</tr>
<tr>
<td>#kolvo_new2#</td>
<td>Количество переносов (часть 1 + часть2) больше чем в основном отпуске</td>
<td>#kolvo# < coalesce(#kolvo_new1#,0) + coalesce(#kolvo_new2#,0) and coalesce(#kolvo_new2#,0) <> 0</td>
</tr>
<tr>
<td>#kolvo_new1#</td>
<td>Количество переносов (часть 1) больше чем в основном отпуске</td>
<td>#kolvo# < coalesce(#kolvo_new1#,0)</td>
</tr>
<tr>
<td>#kolvo_new1#</td>
<td>Количество переносов (часть 1) меньше чем в основном отпуске</td>
<td>#kolvo# > coalesce(#kolvo_new1#,0) and coalesce(#kolvo_new2#,0) = 0</td>
</tr>
<tr>
<td>#bdate_new1#,#bdate_new2#</td>
<td>Непрерывный период хотя бы одного отпуска в год должен составлять не менее 14 дней.</td>
<td>"coalesce(dfd.""CheckWorkerPeriodVacations""(
#Master_IdWorker#::bigint,
comdoc.""getFilial""()::bigint,
#year#::bigint,
true::boolean,
now()::date,
#bdate_new1#::date,#edate_new1#::date,
#bdate_new2#::date, #edate_new2#::date,
#bdate_new3#::date, #edate_new3#::date,
#bdate#::date, doc_code::bigint),false) = false"</td>
</tr>
<tr>
<td>#bdate_new1#</td>
<td>Перенос отпуска оформлен только на выходные дни. Скорректируйте #bdate_new1_name# #bdate_new1#</td>
<td>"not exists(select 1 from comdoc.""VDocflowCalendar"" v where v.""RDate"" between #bdate_new1#::date and #edate_new1#::date
and ""isDayOff"" = false and ((v.""orgId"" = comdoc.""getFilial""() and coalesce (comdoc.""fnDefineRegion""(null::bigint, comdoc.""getFilial""()::bigint, now()::date),0) =0) or v.""Region"" = comdoc.""fnDefineRegion""(null::bigint, comdoc.""getFilial""()::bigint, now()::date) ))
"</td>
</tr>
<tr>
<td>#bdate_new2#</td>
<td>Перенос отпуска оформлен только на выходные дни. Скорректируйте #bdate_new2_name# #bdate_new2#</td>
<td>"not exists(select 1 from comdoc.""VDocflowCalendar"" v where v.""RDate"" between #bdate_new2#::date and #edate_new2#::date
and ""isDayOff"" = false and ((v.""orgId"" = comdoc.""getFilial""() and coalesce(comdoc.""fnDefineRegion""(null::bigint, comdoc.""getFilial""()::bigint, now()::date),0) =0) or v.""Region"" = comdoc.""fnDefineRegion""(null::bigint, comdoc.""getFilial""()::bigint, now()::date) )) and #bdate_new2# is not null
"</td>
</tr>
<tr>
<td>#bdate_new1#</td>
<td>Перенос создан с даты ранее разрешенной</td>
<td>#bdate_new1#::date < (#year# ||substring((select t.""valueText"" from comdoc.""getAccountingConstantValues""(null, 'создавать переносы отпусков, начиная с даты (день+месяц)'::text , null) t) ,4,2)
|| left((select t.""valueText"" from comdoc.""getAccountingConstantValues""(null, 'создавать переносы отпусков, начиная с даты (день+месяц)'::text , null) t) ,2))::date</td>
</tr>
<tr>
<td>#bdate_new2#</td>
<td>Перенос создан с даты ранее разрешенной</td>
<td>#bdate_new2#::date < (#year# ||substring((select t.""valueText"" from comdoc.""getAccountingConstantValues""(null, 'создавать переносы отпусков, начиная с даты (день+месяц)'::text , null) t) ,4,2)
|| left((select t.""valueText"" from comdoc.""getAccountingConstantValues""(null, 'создавать переносы отпусков, начиная с даты (день+месяц)'::text , null) t) ,2))::date</td>
</tr>
<tr>
<td>#bdate_new2#</td>
<td>Пересечение отпусков, скорректируйте период</td>
<td>coalesce(#bdate_new2#,'19700101')<>'19700101' and #bdate_new2# between #bdate_new1# and #edate_new1#</td>
</tr>
<tr>
<td>#bdate_new1#</td>
<td>Пересечение отпусков, скорректируйте период</td>
<td>coalesce(#bdate_new1#,'19700101')<>'19700101' and #bdate_new1# between #bdate_new2# and #edate_new2#</td>
</tr>
<tr>
<td>#edate_new1#</td>
<td>Пересечение отпусков, скорректируйте период</td>
<td>coalesce(#edate_new1#,'19700101')<>'19700101' and #edate_new1# between #bdate_new2# and #edate_new2#</td>
</tr>
<tr>
<td>#edate_new2#</td>
<td>Пересечение отпусков, скорректируйте период</td>
<td>coalesce(#edate_new2#,'19700101')<>'19700101' and #edate_new2# between #bdate_new1# and #edate_new1#</td>
</tr>
<tr>
<td>#bdate#</td>
<td>На текущий календарный год отпуск запланирован, для корректировки периода предоставления отпуска необходимо оформить перенесение отпуска</td>
<td>
exists(select 1 from aw."RP_DocVacation" p
inner join aw."RP_WorkerVacation" m on p."VCode" = m."Pcode"
where p."Year" = date_part('year'::varchar(255), #bdate#::date) and m."IdWorker" = #Master_IdWorker# and p."TypeName" = 'Base.RP_DocVacation'
limit 1)</td>
</tr>
<tr>
<td>#Master_DocumentDate#</td>
<td>Заявление на перенос отпуска будущего месяца создаются только в период с 10 по 17 число текущего месяца</td>
<td>
date_part('day',now()) not in (10,11,12,13,14,15,16,17)</td>
</tr>
</table>
</body>
</html>
!!! note
Для вычислений проверки **"Перенос создан с даты ранее разрешенной"** необходимо завести константу ```создавать переносы отпусков, начиная с даты (день+месяц)```, заполняется столбец **"Значение (текст)"** числом и месяцем ранее которой не разрешается создавать заявление на перенос ежегодного отпуска.
**Ниже представлен пример проверки на заполнение реквизита в документе для пользователя с определенной должностью**, на примере документа "Заявление на получение справки 2НДФЛ", где #year# является реквизитом документа
Колонка для выделения | Сообщение | Правило для проверки
----------------------|-----------|---------------------
#year# | Необходимо заполнить информацию | #Master_Position# ilike '%водитель%'
Также возможно использовать служебное слово **#Master_PositionName#**, например, при написании заявления на ежегодный отпуск руководителем, необходимо указать заместителя на период отсутствия.
Колонка для выделения | Сообщение | Правило для проверки
----------------------|-----------|---------------------
#zam# | Необходимо заполнить информацию | coalesce(#zam#,0)::bigint=0::bigint and '#Master_PositionName#'::text ilike '%глав%врач%'::text
#### Проверки для табличных атрибутов
В столбец **"Колонка для выделения"** указывается служебное наименование таблицы,например, **#Table1#**, а в столбце **"Правило для проверки"** указывается служебные наименования таблицы и атрибута, например, **#Table1_bigint#**.
![alt text](media/2024-06-14 15 40 11.png)
![alt text](media/2024-06-14 15 53 40.png)
## Вкладка "Настройка вычислений"
Данная вкладка предназначена для вычисления зависимостей атрибутов.
В столбце **"Основной атрибут"** заполняется служебное наименование атрибута, который является основным в конструкторе. В столбце **«Зависимые атрибуты»** указываются служебные наименования атрибутов, которые необходимо указать как зависимые от основного атрибута. В столбце **"Вычисление"** указывается условие по которому вычисляется проверка по зависимым атрибутам. В столбце **"Фильтрация"** указывается условие по которому выполняется фильтрация по зависимым атрибутам.
В качестве вычисления возможно также использовать [вычисляемые атрибуты](#вычисляемые_атрибуты):
Вычисляемый атрибут | Описание
--------------------|---------
#Master_BeginDate# | дата начала действия доверенности
#Master_DocumentDate# | дата создания документа
#Master_DocumentNumber# | номер создаваемого документа
#Master_EndDate# | дата окончания действия доверенности
#Master_IdWorker# | код работника из справочника "Сотрудники"
#Master_MyCompany# | компания пользователя создателя документа
#Master_Position# | должность пользователя создателя документа
В данном примере представлены вычисления для определения подразделения и должности при выборе сотрудника из выпадающего списка. В качестве основного атрибута для обоих вычислений выступает служебное наименование **#worker#**, для должности - **#prof#**, для подразделения - **#podr#**. При необходимости вычисления можно отключить, для этого нужно проставить галочку в столбце "Вкл.".
Основной атрибут | Зависимые атрибуты | Вычисления
-----------------|--------------------|-----------
#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-12.png)
![Атрибуты](media/naimenova.png)
![Заявление](media/zayavlen.png)
В примере указанном ниже указано условие фильтрации по которому в зависимости от выбранного подразделения будут фильтроваться сотрудники, которые работают в данном подразделении.
Основной атрибут | Зависимые атрибуты | Фильтрация
-----------------|--------------------|-----------
#podr# | #worker# | and (t."IdDepartment" = coalesce(#podr#,0) or #podr# is null)
![Alt text](media/image-6.png)
![Атрибуты](media/naimenova.png)
![Alt text](media/image-7.png)
!!! note
Фильтрация настроена для атрибутов с выпадающим списком: **Должность**, **Подразделение**, **Работник**, **Пользовательские типы атрибутов документов**, **Договор**, **Контрагент**, **Произвольная выборка**
Для зависимых атрибутов возможно настроить динамическое появление атрибута в документе. Для отображения атрибутов необходимо проставить галочка в столбце **"Видимость"**. должно быть **логическое**. Также данные атрибуты должны быть по умолчанию невидимыми в табличной части [дополнительные атрибуты](ополнительные_атрибуты_документа).
![Alt text](media/image-5.png)
![Alt text](media/image-2.png)
![Alt text](media/image-1.png)
## Вкладка "Сообщения об удаленных документах" ## Вкладка "Сообщения об удаленных документах"

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@ -1,3 +1,7 @@
---
search:
boost: 4
---
# Контур.Доверенности # Контур.Доверенности
## Описание ## Описание

View File

@ -52,7 +52,7 @@
Диадок||responsible_accountant_diadoc| Роль позволяет редактировать поле "Идентификатор ЭДО" в карточке контрагента, в разделе "Настройки интеграции с Диадок"| Диадок||responsible_accountant_diadoc| Роль позволяет редактировать поле "Идентификатор ЭДО" в карточке контрагента, в разделе "Настройки интеграции с Диадок"|
Форма "Диадок" в системе ||diadoc_client_Write|Позволяет открыть доступ к реестру и карточке документов Диадока| Форма "Диадок" в системе ||diadoc_client_Write|Позволяет открыть доступ к реестру и карточке документов Диадока|
Доверенности | empowerment_read | empowerment_write | create_origin_pdf_empowerment - роль для формирования финальной части в формат PDF, empovermentvisibleremove, showallnotremovedempowerment - отображение кнопки "Удалить" (перевод в статус "Удаленно") внутри доверенности, **docconstructor_write** - открывает доступ к переходу в конструктор документа по данному типу/подтипу документа, **routetemplate_write** - открывает доступ к переходу в настройки шаблона маршрута по данному документу, **documentsubtype_write** - открывает доступ к переходу в настройки подтипа документа Доверенности | empowerment_read | empowerment_write | create_origin_pdf_empowerment - роль для формирования финальной части в формат PDF, empovermentvisibleremove, showallnotremovedempowerment - отображение кнопки "Удалить" (перевод в статус "Удаленно") внутри доверенности, **docconstructor_write** - открывает доступ к переходу в конструктор документа по данному типу/подтипу документа, **routetemplate_write** - открывает доступ к переходу в настройки шаблона маршрута по данному документу, **documentsubtype_write** - открывает доступ к переходу в настройки подтипа документа
Формирование вложений в доверенностях (PDF, Word)| empowerment_pdf_report, empowerment_word_report | | **empowerment_pdf_report** открывает доступ pdf отчету через печатную форму, файл вкладывается после формирования во вложения документа. **empowerment_word_report** открывает доступ к word отчету через печатную форму, сформированный отчет так же как и pdf вкладывается во вложение документа. Формирование вложений в доверенностях (PDF, Word)| empowerment_pdf_report, empowerment_word_report | | **empowerment_pdf_report** открывает доступ pdf отчету через печатную форму, файл вкладывается после формирования во вложения документа. **empowerment_word_report** открывает доступ к word отчету через печатную форму, сформированный отчет так же как и pdf вкладывается во вложение документа. **empowerment_word_jsreport** - роль для печатной формы отчета Word, формируется во вложении документа и имеет шрифт по умолчанию Times New Roman.
[Договоры](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%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 | **docconstructor_write** - открывает доступ к переходу в конструктор документа по данному типу/подтипу документа, **routetemplate_write** - открывает доступ к переходу в настройки шаблона маршрута по данному документу, **documentsubtype_write** - открывает доступ к переходу в настройки подтипа документа, **document_for_signing_annulated** - возможность аннулировать документ на подписание [Документы на подписание](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 | **docconstructor_write** - открывает доступ к переходу в конструктор документа по данному типу/подтипу документа, **routetemplate_write** - открывает доступ к переходу в настройки шаблона маршрута по данному документу, **documentsubtype_write** - открывает доступ к переходу в настройки подтипа документа, **document_for_signing_annulated** - возможность аннулировать документ на подписание
Документы, имеющие силу договора | validcontractdocument_read | super,jurist,validcontractdocument_write | Документы, имеющие силу договора | validcontractdocument_read | super,jurist,validcontractdocument_write |