diff --git a/docs/Admin manuals/Конструктор документов/index.md b/docs/Admin manuals/Конструктор документов/index.md
index f55c711..727dc4f 100644
--- a/docs/Admin manuals/Конструктор документов/index.md
+++ b/docs/Admin manuals/Конструктор документов/index.md
@@ -71,7 +71,7 @@ search:
Новый созданный документ, выглядит следующим образом:
-
+
Обязательными полями для заполнения являются:
@@ -144,7 +144,7 @@ search:
Для выбора необходимого типа в документе "Конструктор документов" необходимо раскрыть справочник "Тип документа" и выбрать необходимый их выпадающего списка.
-
+
После выбора типа документа необходимо выбрать подтип документа.
@@ -181,13 +181,11 @@ search:
Для добавления новой строки в таблицу "Дополнительные атрибуты" необходимо нажать на кнопку "Добавить".
-
+
После нажатия на кнопку добавляется новая строка в таблице.
-
-
-#### Описание полей в таблице "Дополнительные атрибуты": { #описание-полей }
+#### Описание полей в таблице "Дополнительные атрибуты":
- **"Порядок"** – порядок сортировки, заполняется целыми числами, в зависимости от которых будут упорядочиваться атрибуты для заполнения в документе. Например, атрибут с порядком сортировки, равным 2, будет располагаться ниже атрибута с порядком, равным 1.
- **"Наименование"** – необходимо заполнить наименованием дополнительного атрибута (строковое поле), исходя из которого пользователю должно быть понятно, какое значение должен принимать атрибут. Например: "Год", "Способ получения справки" и пр. Является обязательным для заполнения.
@@ -552,7 +550,7 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam
Заполненная табличная часть выглядит следующим образом:
-
+
## Шаблон
@@ -620,6 +618,411 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam

+## Вкладка "Настройка интерфейса"
+
+В данной вкладке настраивается интерфейс документа.
+
+### Видимость данных
+
+* Скрыть поле **<Номер документа>** - скрывается номер документа;
+
+
+
+
+* Скрыть поле **<Дата документа>** - скрывается дата документа;
+
+
+
+
+* Скрыть поле **<Автор/Работник>** - скрывается инициатор документа;
+
+
+
+
+* Скрыть поле **<Должность автора>** - скрывается должность инициатора документа;
+
+
+
+
+* Скрыть поле **<Подразделение автора>** - скрывается подразделение инициатора документа;
+
+
+
+
+* Скрыть поле **<Организация>**
+
+
+
+
+* Скрыть группу **<Регистрационные данные> полностью** - скрывается полностью группа регистрационных данных документа;
+
+
+
+
+* Скрыть кнопку **<Операции> в заявлениях** - скрывается кнопка "Операции" в панели инструментов в **заявлениях**;
+
+
+
+
+
+* Скрыть кнопку **<Копировать>** - скрывается кнопка "Копировать" в панели инструментов в **универсальных документах** и **доверенностях на конструкторе**;
+
+
+
+
+
+* Скрыть кнопку **<Рассылка>** - скрывается кнопка "Рассылка" в панели инструментов в **заявлениях**;
+
+
+
+
+
+* Скрыть кнопку **<На контроль>** - скрывается кнопка "На контроль" в панели инструментов в документах;
+
+
+
+
+
+* Скрыть кнопку **<Аннулировать>** - скрывается кнопка "Аннулировать" в панели инструментов в документах;
+
+
+
+
+
+* Скрыть поле **<Кому:>** - скрывается поле "Кому" в служебной записке;
+
+
+
+
+
+* Скрыть поле **<Копия:>** - скрывается поле "Копия" в служебной записке;
+
+
+
+
+
+* Скрыть поле **<Доп.Согласование>** - скрывается поле "Доп.согласование" в служебной записке;
+
+
+
+
+
+* Скрыть поле **<Договор>** - скрывается поле "Договор" во входящем документе;
+
+
+
+
+
+* Скрыть поле **<Вид доставки>** - скрывается поле "Вид доставки" во входящем документе;
+
+
+
+
+
+* Скрыть поле **<Получатель>** - скрывается поле "Получатель" во входящем документе;
+
+
+
+
+
+* Скрыть поле **<Примечание>** - скрывается поле "Примечание" в исходящем документе;
+
+
+
+
+
+### Меню операций
+
+В табличной части "Тип+подтип документов" задаются условия какие типы и подтипы документов будут отображаться по кнопке "Операции" внутри документа.
+
+Данный пример представлен для конструктора группы ["Уведомления Lexema"](../Настройка внутрисистемных уведомлений/index.md) подтипа "Уведомления об отпуске".
+
+
+
+* **Вкл.** - включение или отключение операции в выбранном документе;
+* **Название** - задается название операции, например, Создать "Заявление на ежегодный отпуск";
+* **Тип документа** - выбирается к какому типу документа необходимо добавить меню операций;
+* **Подтип** - выбирается к какому типу документа необходимо добавить меню операций;
+* **Условие фильтрации** - задается название типа вида отпуска указанный в [уведомлении](../Настройка внутрисистемных уведомлений/index.md)
+* **Служебное наименование** - задается служебное наименование [дополнительного атрибута](#дополнительные_атрибуты_документа), в данном случае **#typeVacation#**.
+* **Условие для видимости операции** - указывается условие в зависимости от которого выбранная операция будет доступна для пользователя, например, `not exists (select 1 from comdoc."isAccessOfRoles"(lex."getLogin"(), comdoc."getFilial"(),'user') where "RoleName" ilike '%df_officeworker%')`, в данном условии сказано что операция не будет доступа пользователю имеющий роль **df_officeworker**.
+
+
+
+!!! note
+ Если столбцы "Подтип", "Условие фильтрации" и "Служебное наименование" не заполнены, то созданная операция будет отображаться во всех подтипах документа. Кнопка "Операции" отображается только в документах "Заявление от сотрудника".
+
+В данном примере указано, что при поступлении пользователю уведомления где вид отпуска "Основной", в меню операций у него будут доступны операции:
+
+* Создать "Заявление на доп. отпуск"
+* Создать "Заявление на ежегодный отпуск"
+* Создать "Заявление на перенос отпуска"
+* Создать "Универсальный документ"
+
+
+
+### Статичные поля
+
+В табличной части возможно настроить обязательность заполнения, видимости и указать значения по умолчанию для статичных полей в карточке документа.
+
+
+
+Данные настройки работают по аналогии с [дополнительными атрибутами](#дополнительные_атрибуты_документа).
+
+* **Контрол** - выпадающий список с наименованием атрибута документа.
+* **Id** - уникальный идентификатор атрибута в макете документа
+* **Поле в БД** - наименование атрибута документа в базе данных.
+* **Видимость** - отображение атрибута в документе.
+* **Требовать заполнение** – обязательность заполнения атрибута. Если в табличной части стоит галочка, документ не получится сохранить и отправить по маршруту, пока соответствующий атрибут не будет заполнен. Вкл. - требует заполнения атрибута.
+* **Группа столбцов "Значение по умолчанию"** используется в случае, если при создании документа реквизит должен быть заполнен неким условленным значением. Для разных типов атрибутов используются разные колонки. Для типов атрибута **"Строка"** требуется заполнить поле в столбце **"Текст"**. Для типов атрибута **"Логическое"** требуется поставить галочку в столбце **"Флаг"**. Для типа атрибута **"Целое"** или типов атрибутов, которые позволяют в документе выбрать значение из списка, требуется заполнить поле в столбце "Код/число" числовым значением.
+
+## Вкладка "Настройка проверок"
+
+Данная вкладка предназначена для определения зависимостей атрибутов между собой.
+
+### Зависимые атрибуты
+
+В данном примере представлен конструктор подтипа "Заявление о предоставлении стандартного налогового вычета на ребенка". В блоке "Дополнительные атрибуты", например, по первому ребенку указаны такие атрибуты как **#first#, #firstfio#, #firstdr#, #firstvichet#** и **#firstapp#**.
+
+
+
+В столбце **"Основной атрибут"** заполняется служебное наименование атрибута, который является основным, в данном случае **#first#**. В столбце **«Зависимые атрибуты»** указываются служебные наименования атрибутов, которые необходимо указать как зависимые от основного атрибута, в данном случае это **#firstfio#, #firstdr#, #firstvichet# и #firstapp#**.
+
+Если в табличной части стоит галочка "Вкл.", документ не получится сохранить и отправить по маршруту, пока соответствующий атрибут не будет заполнен. **Вкл.** - требует заполнения атрибута. **"Действие"** - назначается при каком действии будет требоваться заполнения атрибута в процессе согласования по маршруту.Возможно выбрать как одно, так и несколько действий. Если в столбце **"Действие"** ничего не указано, то данная проверка будет срабатывать у инициатора документа.
+
+
+
+В данном примере указано что при заполнении поля "Первый ребенок" у которого служебное наименование **#first#**, система будет проверять заполнение полей ФИО, Дата рождения, Размер вычета и свидетельство о рождении, так как служебные наименования указаны в вычислениях как зависимые от поля "Первый ребенок". В случае не заполнения зависимых полей, они будут подсвечены красным светом, а также будет выведен текст о необходимости заполнить данные.
+
+
+
+### Дополнительные проверки
+
+#### Проверки для дополнительных атрибутов
+
+При необходимости возможно настроить дополнительные проверки для атрибутов. В данном примере представлен конструктор подтипа "Заявление на перенос ежегодного оплачиваемого отпуска". В блоке "**Дополнительные атрибуты"** указаны атрибуты по датам переноса и количеству дней переноса. При необходимости возможно отключить какие-то проверки по отдельности, для этого необходимо выбрать необходимую проверку и в столбце **"Вкл."** проставить галочку. В столбце **"Колонка для выделения"** перечисляются атрибуты (если их несколько то через запятую), на которые необходимо задать проверки. В столбце **"Сообщение"** задается информационное сообщение, которое выводится в случае незаполнения либо некорректных данных. В столбце **"Правило для проверки"** указывается условие по которому вычисляется проверка по зависимым атрибутам. **"Действие"** - назначается при каком действии будет требоваться заполнения атрибута в процессе согласования по маршруту.Возможно выбрать как одно, так и несколько действий. Если в столбце **"Действие"** ничего не указано, то данная проверка будет срабатывать у инициатора документа.
+
+
+
+В данном примере указано правило: в случае если атрибут **#bdate_new1#** (_Дата начала нового отпуска (период 1)_) меньше либо равна текущей дате, то будет информационное сообщение: **"Дата начала нового отпуска должна быть позже текущей даты"**.
+
+
+
+
+**Ниже представлены примеры проверок для расчета количества дней:**
+
+
+
+
+
+
+ Колонка для выделения |
+ Сообщение |
+ Правило для проверки |
+
+
+ #bdate_new1# |
+ Дата начала нового отпуска должна быть позже текущей даты |
+ #bdate_new1#::date <= now()::date |
+
+
+ #bdate_new2# |
+ Дата начала нового отпуска должна быть позже текущей даты |
+ coalesce(#bdate_new2#,'19700101')<>'19700101' and #bdate_new2#::date <= now()::date |
+
+
+ #bdate_new2# |
+ Дата начала отпуска в следующем году. Скорректируйте #bdate_new1_name# #bdate_new1# |
+ #year#::integer < date_part('year'::text,#bdate_new2#::date)::integer |
+
+
+ #bdate_new1# |
+ Дата начала отпуска в следующем году. Скорректируйте #bdate_new1_name# #bdate_new1# |
+ #year#::integer < date_part('year'::text,#bdate_new1#::date)::integer |
+
+
+ #bdate_new2# |
+ Заявление подается минимум за 3 дня до даты отпуска |
+ coalesce(#bdate_new2#,'19700101')<>'19700101' and #bdate_new2#::date < now()::date + interval '1 day' * 3 |
+
+
+ #bdate_new1#,#bdate_new2# |
+ Заявление подается минимум за 3 дня до даты отпуска. Скорректируйте #bdate_new1_name# #bdate_new1# |
+ #bdate_new1#::date < now()::date + interval '1 day' * 21 |
+
+
+ #kolvo_new2# |
+ Количество переносов (часть 1 + часть 2) меньше чем в основном отпуске |
+ #kolvo# > coalesce(#kolvo_new1#,0) + coalesce(#kolvo_new2#,0) and coalesce(#kolvo_new2#,0) <> 0 |
+
+
+ #kolvo_new2# |
+ Количество переносов (часть 1 + часть2) больше чем в основном отпуске |
+ #kolvo# < coalesce(#kolvo_new1#,0) + coalesce(#kolvo_new2#,0) and coalesce(#kolvo_new2#,0) <> 0 |
+
+
+ #kolvo_new1# |
+ Количество переносов (часть 1) больше чем в основном отпуске |
+ #kolvo# < coalesce(#kolvo_new1#,0) |
+
+
+ #kolvo_new1# |
+ Количество переносов (часть 1) меньше чем в основном отпуске |
+ #kolvo# > coalesce(#kolvo_new1#,0) and coalesce(#kolvo_new2#,0) = 0 |
+
+
+ #bdate_new1#,#bdate_new2# |
+ Непрерывный период хотя бы одного отпуска в год должен составлять не менее 14 дней. |
+ "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" |
+
+
+ #bdate_new1# |
+ Перенос отпуска оформлен только на выходные дни. Скорректируйте #bdate_new1_name# #bdate_new1# |
+ "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) ))
+ " |
+
+
+ #bdate_new2# |
+ Перенос отпуска оформлен только на выходные дни. Скорректируйте #bdate_new2_name# #bdate_new2# |
+ "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
+ " |
+
+
+ #bdate_new1# |
+ Перенос создан с даты ранее разрешенной |
+ #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 |
+
+
+ #bdate_new2# |
+ Перенос создан с даты ранее разрешенной |
+ #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 |
+
+
+ #bdate_new2# |
+ Пересечение отпусков, скорректируйте период |
+ coalesce(#bdate_new2#,'19700101')<>'19700101' and #bdate_new2# between #bdate_new1# and #edate_new1# |
+
+
+ #bdate_new1# |
+ Пересечение отпусков, скорректируйте период |
+ coalesce(#bdate_new1#,'19700101')<>'19700101' and #bdate_new1# between #bdate_new2# and #edate_new2# |
+
+
+ #edate_new1# |
+ Пересечение отпусков, скорректируйте период |
+ coalesce(#edate_new1#,'19700101')<>'19700101' and #edate_new1# between #bdate_new2# and #edate_new2# |
+
+
+ #edate_new2# |
+ Пересечение отпусков, скорректируйте период |
+ coalesce(#edate_new2#,'19700101')<>'19700101' and #edate_new2# between #bdate_new1# and #edate_new1# |
+
+
+ #bdate# |
+ На текущий календарный год отпуск запланирован, для корректировки периода предоставления отпуска необходимо оформить перенесение отпуска |
+
+ 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) |
+
+
+ #Master_DocumentDate# |
+ Заявление на перенос отпуска будущего месяца создаются только в период с 10 по 17 число текущего месяца |
+
+ date_part('day',now()) not in (10,11,12,13,14,15,16,17) |
+
+
+
+
+
+!!! 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#**.
+
+
+
+
+## Вкладка "Настройка вычислений"
+
+Данная вкладка предназначена для вычисления зависимостей атрибутов.
+
+В столбце **"Основной атрибут"** заполняется служебное наименование атрибута, который является основным в конструкторе. В столбце **«Зависимые атрибуты»** указываются служебные наименования атрибутов, которые необходимо указать как зависимые от основного атрибута. В столбце **"Вычисление"** указывается условие по которому вычисляется проверка по зависимым атрибутам. В столбце **"Фильтрация"** указывается условие по которому выполняется фильтрация по зависимым атрибутам.
+
+В качестве вычисления возможно также использовать [вычисляемые атрибуты](#вычисляемые_атрибуты):
+
+Вычисляемый атрибут | Описание
+--------------------|---------
+#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#)
+
+
+
+
+
+В примере указанном ниже указано условие фильтрации по которому в зависимости от выбранного подразделения будут фильтроваться сотрудники, которые работают в данном подразделении.
+
+Основной атрибут | Зависимые атрибуты | Фильтрация
+-----------------|--------------------|-----------
+#podr# | #worker# | and (t."IdDepartment" = coalesce(#podr#,0) or #podr# is null)
+
+
+
+
+
+!!! note
+ Фильтрация настроена для атрибутов с выпадающим списком: **Должность**, **Подразделение**, **Работник**, **Пользовательские типы атрибутов документов**, **Договор**, **Контрагент**, **Произвольная выборка**
+
+Для зависимых атрибутов возможно настроить динамическое появление атрибута в документе. Для отображения атрибутов необходимо проставить галочка в столбце **"Видимость"**. должно быть **логическое**. Также данные атрибуты должны быть по умолчанию невидимыми в табличной части [дополнительные атрибуты](#дополнительные_атрибуты_документа).
+
+
+
+
+
## Вкладка "Ограничения"
### Правила для вложений
@@ -766,397 +1169,6 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam

-## Вкладка "Настройка интерфейса"
-
-В данной вкладке настраивается интерфейс документа.
-
-### Видимость данных
-
-* Скрыть поле **<Номер документа>** - скрывается номер документа;
-
-
-
-
-* Скрыть поле **<Дата документа>** - скрывается дата документа;
-
-
-
-
-* Скрыть поле **<Автор/Работник>** - скрывается инициатор документа;
-
-
-
-
-* Скрыть поле **<Должность автора>** - скрывается должность инициатора документа;
-
-
-
-
-* Скрыть поле **<Подразделение автора>** - скрывается подразделение инициатора документа;
-
-
-
-
-* Скрыть поле **<Организация>**
-
-
-
-
-* Скрыть группу **<Регистрационные данные> полностью** - скрывается полностью группа регистрационных данных документа;
-
-
-
-
-* Скрыть кнопку **<Операции> в заявлениях** - скрывается кнопка "Операции" в панели инструментов в **заявлениях**;
-
-
-
-
-
-* Скрыть кнопку **<Копировать>** - скрывается кнопка "Копировать" в панели инструментов в **универсальных документах** и **доверенностях на конструкторе**;
-
-
-
-
-
-* Скрыть кнопку **<Рассылка>** - скрывается кнопка "Рассылка" в панели инструментов в **заявлениях**;
-
-
-
-
-
-* Скрыть кнопку **<На контроль>** - скрывается кнопка "На контроль" в панели инструментов в документах;
-
-
-
-
-
-* Скрыть кнопку **<Аннулировать>** - скрывается кнопка "Аннулировать" в панели инструментов в документах;
-
-
-
-
-
-* Скрыть поле **<Кому:>** - скрывается поле "Кому" в служебной записке;
-
-
-
-
-
-* Скрыть поле **<Копия:>** - скрывается поле "Копия" в служебной записке;
-
-
-
-
-
-* Скрыть поле **<Доп.Согласование>** - скрывается поле "Доп.согласование" в служебной записке;
-
-
-
-
-
-* Скрыть поле **<Договор>** - скрывается поле "Договор" во входящем документе;
-
-
-
-
-
-* Скрыть поле **<Вид доставки>** - скрывается поле "Вид доставки" во входящем документе;
-
-
-
-
-
-* Скрыть поле **<Получатель>** - скрывается поле "Получатель" во входящем документе;
-
-
-
-
-
-* Скрыть поле **<Примечание>** - скрывается поле "Примечание" в исходящем документе;
-
-
-
-
-
-
-### Меню операций
-
-В табличной части "Тип+подтип документов" задаются условия какие типы и подтипы документов будут отображаться по кнопке "Операции" внутри документа.
-
-Данный пример представлен для конструктора группы ["Уведомления Lexema"](../Настройка внутрисистемных уведомлений/index.md) подтипа "Уведомления об отпуске".
-
-
-
-* **Вкл.** - включение или отключение операции в выбранном документе;
-* **Название** - задается название операции, например, Создать "Заявление на ежегодный отпуск";
-* **Тип документа** - выбирается к какому типу документа необходимо добавить меню операций;
-* **Подтип** - выбирается к какому типу документа необходимо добавить меню операций;
-* **Условие фильтрации** - задается название типа вида отпуска указанный в [уведомлении](../Настройка внутрисистемных уведомлений/index.md)
-* **Служебное наименование** - задается служебное наименование [дополнительного атрибута](#дополнительные_атрибуты_документа), в данном случае **#typeVacation#**.
-* **Условие для видимости операции** - указывается условие в зависимости от которого выбранная операция будет доступна для пользователя, например, `not exists (select 1 from comdoc."isAccessOfRoles"(lex."getLogin"(), comdoc."getFilial"(),'user') where "RoleName" ilike '%df_officeworker%')`, в данном условии сказано что операция не будет доступа пользователю имеющий роль **df_officeworker**.
-
-
-
-!!! note
- Если столбцы "Подтип", "Условие фильтрации" и "Служебное наименование" не заполнены, то созданная операция будет отображаться во всех подтипах документа. Кнопка "Операции" отображается только в документах "Заявление от сотрудника".
-
-В данном примере указано, что при поступлении пользователю уведомления где вид отпуска "Основной", в меню операций у него будут доступны операции:
-
-* Создать "Заявление на доп. отпуск"
-* Создать "Заявление на ежегодный отпуск"
-* Создать "Заявление на перенос отпуска"
-* Создать "Универсальный документ"
-
-
-
-## Вкладка "Настройка проверок"
-
-Данная вкладка предназначена для определения зависимостей атрибутов между собой.
-
-### Зависимые атрибуты
-
-В данном примере представлен конструктор подтипа "Заявление о предоставлении стандартного налогового вычета на ребенка". В блоке "Дополнительные атрибуты", например, по первому ребенку указаны такие атрибуты как **#first#, #firstfio#, #firstdr#, #firstvichet#** и **#firstapp#**.
-
-
-
-В столбце **"Основной атрибут"** заполняется служебное наименование атрибута, который является основным, в данном случае **#first#**. В столбце **«Зависимые атрибуты»** указываются служебные наименования атрибутов, которые необходимо указать как зависимые от основного атрибута, в данном случае это **#firstfio#, #firstdr#, #firstvichet# и #firstapp#**.
-
-Если в табличной части стоит галочка "Вкл.", документ не получится сохранить и отправить по маршруту, пока соответствующий атрибут не будет заполнен. **Вкл.** - требует заполнения атрибута. **"Действие"** - назначается при каком действии будет требоваться заполнения атрибута в процессе согласования по маршруту.Возможно выбрать как одно, так и несколько действий. Если в столбце **"Действие"** ничего не указано, то данная проверка будет срабатывать у инициатора документа.
-
-
-
-В данном примере указано что при заполнении поля "Первый ребенок" у которого служебное наименование **#first#**, система будет проверять заполнение полей ФИО, Дата рождения, Размер вычета и свидетельство о рождении, так как служебные наименования указаны в вычислениях как зависимые от поля "Первый ребенок". В случае не заполнения зависимых полей, они будут подсвечены красным светом, а также будет выведен текст о необходимости заполнить данные.
-
-
-
-### Дополнительные проверки
-
-#### Проверки для дополнительных атрибутов
-
-При необходимости возможно настроить дополнительные проверки для атрибутов. В данном примере представлен конструктор подтипа "Заявление на перенос ежегодного оплачиваемого отпуска". В блоке "**Дополнительные атрибуты"** указаны атрибуты по датам переноса и количеству дней переноса. При необходимости возможно отключить какие-то проверки по отдельности, для этого необходимо выбрать необходимую проверку и в столбце **"Вкл."** проставить галочку. В столбце **"Колонка для выделения"** перечисляются атрибуты (если их несколько то через запятую), на которые необходимо задать проверки. В столбце **"Сообщение"** задается информационное сообщение, которое выводится в случае незаполнения либо некорректных данных. В столбце **"Правило для проверки"** указывается условие по которому вычисляется проверка по зависимым атрибутам. **"Действие"** - назначается при каком действии будет требоваться заполнения атрибута в процессе согласования по маршруту.Возможно выбрать как одно, так и несколько действий. Если в столбце **"Действие"** ничего не указано, то данная проверка будет срабатывать у инициатора документа.
-
-
-
-В данном примере указано правило: в случае если атрибут **#bdate_new1#** (_Дата начала нового отпуска (период 1)_) меньше либо равна текущей дате, то будет информационное сообщение: **"Дата начала нового отпуска должна быть позже текущей даты"**.
-
-
-
-
-**Ниже представлены примеры проверок для расчета количества дней:**
-
-
-
-
-
-
- Колонка для выделения |
- Сообщение |
- Правило для проверки |
-
-
- #bdate_new1# |
- Дата начала нового отпуска должна быть позже текущей даты |
- #bdate_new1#::date <= now()::date |
-
-
- #bdate_new2# |
- Дата начала нового отпуска должна быть позже текущей даты |
- coalesce(#bdate_new2#,'19700101')<>'19700101' and #bdate_new2#::date <= now()::date |
-
-
- #bdate_new2# |
- Дата начала отпуска в следующем году. Скорректируйте #bdate_new1_name# #bdate_new1# |
- #year#::integer < date_part('year'::text,#bdate_new2#::date)::integer |
-
-
- #bdate_new1# |
- Дата начала отпуска в следующем году. Скорректируйте #bdate_new1_name# #bdate_new1# |
- #year#::integer < date_part('year'::text,#bdate_new1#::date)::integer |
-
-
- #bdate_new2# |
- Заявление подается минимум за 3 дня до даты отпуска |
- coalesce(#bdate_new2#,'19700101')<>'19700101' and #bdate_new2#::date < now()::date + interval '1 day' * 3 |
-
-
- #bdate_new1#,#bdate_new2# |
- Заявление подается минимум за 3 дня до даты отпуска. Скорректируйте #bdate_new1_name# #bdate_new1# |
- #bdate_new1#::date < now()::date + interval '1 day' * 21 |
-
-
- #kolvo_new2# |
- Количество переносов (часть 1 + часть 2) меньше чем в основном отпуске |
- #kolvo# > coalesce(#kolvo_new1#,0) + coalesce(#kolvo_new2#,0) and coalesce(#kolvo_new2#,0) <> 0 |
-
-
- #kolvo_new2# |
- Количество переносов (часть 1 + часть2) больше чем в основном отпуске |
- #kolvo# < coalesce(#kolvo_new1#,0) + coalesce(#kolvo_new2#,0) and coalesce(#kolvo_new2#,0) <> 0 |
-
-
- #kolvo_new1# |
- Количество переносов (часть 1) больше чем в основном отпуске |
- #kolvo# < coalesce(#kolvo_new1#,0) |
-
-
- #kolvo_new1# |
- Количество переносов (часть 1) меньше чем в основном отпуске |
- #kolvo# > coalesce(#kolvo_new1#,0) and coalesce(#kolvo_new2#,0) = 0 |
-
-
- #bdate_new1#,#bdate_new2# |
- Непрерывный период хотя бы одного отпуска в год должен составлять не менее 14 дней. |
- "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" |
-
-
- #bdate_new1# |
- Перенос отпуска оформлен только на выходные дни. Скорректируйте #bdate_new1_name# #bdate_new1# |
- "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) ))
-
- " |
-
-
- #bdate_new2# |
- Перенос отпуска оформлен только на выходные дни. Скорректируйте #bdate_new2_name# #bdate_new2# |
- "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
- " |
-
-
- #bdate_new1# |
- Перенос создан с даты ранее разрешенной |
- #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 |
-
-
- #bdate_new2# |
- Перенос создан с даты ранее разрешенной |
- #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 |
-
-
- #bdate_new2# |
- Пересечение отпусков, скорректируйте период |
- coalesce(#bdate_new2#,'19700101')<>'19700101' and #bdate_new2# between #bdate_new1# and #edate_new1# |
-
-
- #bdate_new1# |
- Пересечение отпусков, скорректируйте период |
- coalesce(#bdate_new1#,'19700101')<>'19700101' and #bdate_new1# between #bdate_new2# and #edate_new2# |
-
-
- #edate_new1# |
- Пересечение отпусков, скорректируйте период |
- coalesce(#edate_new1#,'19700101')<>'19700101' and #edate_new1# between #bdate_new2# and #edate_new2# |
-
-
- #edate_new2# |
- Пересечение отпусков, скорректируйте период |
- coalesce(#edate_new2#,'19700101')<>'19700101' and #edate_new2# between #bdate_new1# and #edate_new1# |
-
-
- #bdate# |
- На текущий календарный год отпуск запланирован, для корректировки периода предоставления отпуска необходимо оформить перенесение отпуска |
-
- 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) |
-
-
- #Master_DocumentDate# |
- Заявление на перенос отпуска будущего месяца создаются только в период с 10 по 17 число текущего месяца |
-
- date_part('day',now()) not in (10,11,12,13,14,15,16,17) |
-
-
-
-
-
-!!! 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#**.
-
-
-
-
-## Вкладка "Настройка вычислений"
-
-Данная вкладка предназначена для вычисления зависимостей атрибутов.
-
-В столбце **"Основной атрибут"** заполняется служебное наименование атрибута, который является основным в конструкторе. В столбце **«Зависимые атрибуты»** указываются служебные наименования атрибутов, которые необходимо указать как зависимые от основного атрибута. В столбце **"Вычисление"** указывается условие по которому вычисляется проверка по зависимым атрибутам. В столбце **"Фильтрация"** указывается условие по которому выполняется фильтрация по зависимым атрибутам.
-
-В качестве вычисления возможно также использовать [вычисляемые атрибуты](#вычисляемые_атрибуты):
-
-Вычисляемый атрибут | Описание
---------------------|---------
-#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#)
-
-
-
-
-
-В примере указанном ниже указано условие фильтрации по которому в зависимости от выбранного подразделения будут фильтроваться сотрудники, которые работают в данном подразделении.
-
-Основной атрибут | Зависимые атрибуты | Фильтрация
------------------|--------------------|-----------
-#podr# | #worker# | and (t."IdDepartment" = coalesce(#podr#,0) or #podr# is null)
-
-
-
-
-
-!!! note
- Фильтрация настроена для атрибутов с выпадающим списком: **Должность**, **Подразделение**, **Работник**, **Пользовательские типы атрибутов документов**, **Договор**, **Контрагент**, **Произвольная выборка**
-
-Для зависимых атрибутов возможно настроить динамическое появление атрибута в документе. Для отображения атрибутов необходимо проставить галочка в столбце **"Видимость"**. должно быть **логическое**. Также данные атрибуты должны быть по умолчанию невидимыми в табличной части [дополнительные атрибуты](#дополнительные_атрибуты_документа).
-
-
-
-
## Вкладка "Сообщения об удаленных документах"
diff --git a/docs/Admin manuals/Конструктор документов/media/image-45.png b/docs/Admin manuals/Конструктор документов/media/image-45.png
new file mode 100644
index 0000000..c723e76
Binary files /dev/null and b/docs/Admin manuals/Конструктор документов/media/image-45.png differ
diff --git a/docs/Admin manuals/Конструктор документов/media/image-46.png b/docs/Admin manuals/Конструктор документов/media/image-46.png
new file mode 100644
index 0000000..89e7e14
Binary files /dev/null and b/docs/Admin manuals/Конструктор документов/media/image-46.png differ
diff --git a/docs/Admin manuals/Конструктор документов/media/image-47.png b/docs/Admin manuals/Конструктор документов/media/image-47.png
new file mode 100644
index 0000000..2c5064d
Binary files /dev/null and b/docs/Admin manuals/Конструктор документов/media/image-47.png differ
diff --git a/docs/Admin manuals/Конструктор документов/media/image-48.png b/docs/Admin manuals/Конструктор документов/media/image-48.png
new file mode 100644
index 0000000..c4d198b
Binary files /dev/null and b/docs/Admin manuals/Конструктор документов/media/image-48.png differ
diff --git a/docs/Admin manuals/Конструктор документов/media/image-49.png b/docs/Admin manuals/Конструктор документов/media/image-49.png
new file mode 100644
index 0000000..407cb9a
Binary files /dev/null and b/docs/Admin manuals/Конструктор документов/media/image-49.png differ
diff --git a/docs/Admin manuals/Контур.Доверенности/index.md b/docs/Admin manuals/Контур.Доверенности/index.md
index 922d383..74bca81 100644
--- a/docs/Admin manuals/Контур.Доверенности/index.md
+++ b/docs/Admin manuals/Контур.Доверенности/index.md
@@ -1,3 +1,7 @@
+---
+search:
+ boost: 4
+---
# Контур.Доверенности
## Описание