Merge branch 'master' of http://gogs.lex.lan/l8-base/ECM-administrator-manuals
This commit is contained in:
		| @ -71,7 +71,7 @@ search: | ||||
|  | ||||
| Новый созданный документ, выглядит следующим образом: | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| Обязательными полями для заполнения являются: | ||||
|  | ||||
| @ -144,7 +144,7 @@ search: | ||||
|  | ||||
| Для выбора необходимого типа в документе "Конструктор документов" необходимо раскрыть справочник "Тип документа" и выбрать необходимый их выпадающего списка.  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| После выбора типа документа необходимо выбрать подтип документа. | ||||
|  | ||||
| @ -181,13 +181,11 @@ search: | ||||
|  | ||||
| Для добавления новой строки в таблицу "Дополнительные атрибуты" необходимо нажать на кнопку "Добавить". | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| После нажатия на кнопку добавляется новая строка в таблице. | ||||
|  | ||||
|  | ||||
|  | ||||
| #### Описание полей в таблице "Дополнительные атрибуты": { #описание-полей } | ||||
| #### Описание полей в таблице "Дополнительные атрибуты": | ||||
|  | ||||
| - **"Порядок"** – порядок сортировки, заполняется целыми числами, в зависимости от которых будут упорядочиваться атрибуты для заполнения в документе. Например, атрибут с порядком сортировки, равным 2, будет располагаться ниже атрибута с порядком, равным 1. | ||||
| - **"Наименование"** – необходимо заполнить наименованием дополнительного атрибута (строковое поле), исходя из которого пользователю должно быть понятно, какое значение должен принимать атрибут. Например: "Год", "Способ получения справки" и пр. Является обязательным для заполнения. | ||||
| @ -555,7 +553,7 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam | ||||
|  | ||||
| Заполненная табличная часть выглядит следующим образом: | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Шаблон | ||||
|  | ||||
| @ -623,6 +621,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)_) меньше либо равна текущей дате, то будет информационное сообщение: **"Дата начала нового отпуска должна быть позже текущей даты"**. | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| **Ниже представлены примеры проверок для расчета количества дней:** | ||||
|  | ||||
| <!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#**. | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Вкладка "Настройка вычислений" | ||||
|  | ||||
| Данная вкладка предназначена для вычисления зависимостей атрибутов. | ||||
|  | ||||
| В столбце **"Основной атрибут"** заполняется служебное наименование атрибута, который является основным в конструкторе. В столбце **«Зависимые атрибуты»** указываются служебные наименования атрибутов, которые необходимо указать как зависимые от основного атрибута. В столбце **"Вычисление"** указывается условие по которому вычисляется проверка по зависимым атрибутам. В столбце **"Фильтрация"** указывается условие по которому выполняется фильтрация по зависимым атрибутам. | ||||
|  | ||||
| В качестве вычисления возможно также использовать [вычисляемые атрибуты](#вычисляемые_атрибуты): | ||||
|  | ||||
| Вычисляемый атрибут | Описание | ||||
| --------------------|--------- | ||||
| #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 | ||||
|     Фильтрация настроена для атрибутов с выпадающим списком: **Должность**, **Подразделение**, **Работник**, **Пользовательские типы атрибутов документов**, **Договор**, **Контрагент**, **Произвольная выборка** | ||||
|  | ||||
| Для зависимых атрибутов возможно настроить динамическое появление атрибута в документе. Для отображения атрибутов необходимо проставить галочка в столбце **"Видимость"**. должно быть **логическое**. Также данные атрибуты должны быть по умолчанию невидимыми в табличной части [дополнительные атрибуты](#дополнительные_атрибуты_документа). | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Вкладка "Ограничения" | ||||
|  | ||||
| ### Правила для вложений | ||||
| @ -769,397 +1172,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)_) меньше либо равна текущей дате, то будет информационное сообщение: **"Дата начала нового отпуска должна быть позже текущей даты"**. | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| **Ниже представлены примеры проверок для расчета количества дней:** | ||||
|  | ||||
| <!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#**. | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Вкладка "Настройка вычислений" | ||||
|  | ||||
| Данная вкладка предназначена для вычисления зависимостей атрибутов. | ||||
|  | ||||
| В столбце **"Основной атрибут"** заполняется служебное наименование атрибута, который является основным в конструкторе. В столбце **«Зависимые атрибуты»** указываются служебные наименования атрибутов, которые необходимо указать как зависимые от основного атрибута. В столбце **"Вычисление"** указывается условие по которому вычисляется проверка по зависимым атрибутам. В столбце **"Фильтрация"** указывается условие по которому выполняется фильтрация по зависимым атрибутам. | ||||
|  | ||||
| В качестве вычисления возможно также использовать [вычисляемые атрибуты](#вычисляемые_атрибуты): | ||||
|  | ||||
| Вычисляемый атрибут | Описание | ||||
| --------------------|--------- | ||||
| #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 | ||||
|     Фильтрация настроена для атрибутов с выпадающим списком: **Должность**, **Подразделение**, **Работник**, **Пользовательские типы атрибутов документов**, **Договор**, **Контрагент**, **Произвольная выборка** | ||||
|  | ||||
| Для зависимых атрибутов возможно настроить динамическое появление атрибута в документе. Для отображения атрибутов необходимо проставить галочка в столбце **"Видимость"**. должно быть **логическое**. Также данные атрибуты должны быть по умолчанию невидимыми в табличной части [дополнительные атрибуты](#дополнительные_атрибуты_документа). | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Вкладка "Сообщения об удаленных документах" | ||||
|  | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/Admin manuals/Конструктор документов/media/image-45.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/Admin manuals/Конструктор документов/media/image-45.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 122 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/Admin manuals/Конструктор документов/media/image-46.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/Admin manuals/Конструктор документов/media/image-46.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 37 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/Admin manuals/Конструктор документов/media/image-47.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/Admin manuals/Конструктор документов/media/image-47.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 24 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/Admin manuals/Конструктор документов/media/image-48.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/Admin manuals/Конструктор документов/media/image-48.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 31 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/Admin manuals/Конструктор документов/media/image-49.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/Admin manuals/Конструктор документов/media/image-49.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 57 KiB | 
| @ -1,3 +1,7 @@ | ||||
| --- | ||||
| search: | ||||
|   boost: 4 | ||||
| --- | ||||
| # Контур.Доверенности | ||||
|  | ||||
| ## Описание  | ||||
|  | ||||
| @ -52,7 +52,7 @@ | ||||
| Диадок||responsible_accountant_diadoc| Роль позволяет редактировать поле "Идентификатор ЭДО" в карточке контрагента, в разделе "Настройки интеграции с Диадок"| | ||||
| Форма "Диадок" в системе ||diadoc_client_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%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 |  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user