23323 статичные поля в кд
This commit is contained in:
		| @ -71,7 +71,7 @@ search: | |||||||
|  |  | ||||||
| Новый созданный документ, выглядит следующим образом: | Новый созданный документ, выглядит следующим образом: | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| Обязательными полями для заполнения являются: | Обязательными полями для заполнения являются: | ||||||
|  |  | ||||||
| @ -144,7 +144,7 @@ search: | |||||||
|  |  | ||||||
| Для выбора необходимого типа в документе "Конструктор документов" необходимо раскрыть справочник "Тип документа" и выбрать необходимый их выпадающего списка.  | Для выбора необходимого типа в документе "Конструктор документов" необходимо раскрыть справочник "Тип документа" и выбрать необходимый их выпадающего списка.  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| После выбора типа документа необходимо выбрать подтип документа. | После выбора типа документа необходимо выбрать подтип документа. | ||||||
|  |  | ||||||
| @ -181,13 +181,11 @@ search: | |||||||
|  |  | ||||||
| Для добавления новой строки в таблицу "Дополнительные атрибуты" необходимо нажать на кнопку "Добавить". | Для добавления новой строки в таблицу "Дополнительные атрибуты" необходимо нажать на кнопку "Добавить". | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| После нажатия на кнопку добавляется новая строка в таблице. | После нажатия на кнопку добавляется новая строка в таблице. | ||||||
|  |  | ||||||
|  | #### Описание полей в таблице "Дополнительные атрибуты": | ||||||
|  |  | ||||||
| #### Описание полей в таблице "Дополнительные атрибуты": { #описание-полей } |  | ||||||
|  |  | ||||||
| - **"Порядок"** – порядок сортировки, заполняется целыми числами, в зависимости от которых будут упорядочиваться атрибуты для заполнения в документе. Например, атрибут с порядком сортировки, равным 2, будет располагаться ниже атрибута с порядком, равным 1. | - **"Порядок"** – порядок сортировки, заполняется целыми числами, в зависимости от которых будут упорядочиваться атрибуты для заполнения в документе. Например, атрибут с порядком сортировки, равным 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)_) меньше либо равна текущей дате, то будет информационное сообщение: **"Дата начала нового отпуска должна быть позже текущей даты"**. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | **Ниже представлены примеры проверок для расчета количества дней:** | ||||||
|  |  | ||||||
|  | <!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 | ||||||
|  |     Фильтрация настроена для атрибутов с выпадающим списком: **Должность**, **Подразделение**, **Работник**, **Пользовательские типы атрибутов документов**, **Договор**, **Контрагент**, **Произвольная выборка** | ||||||
|  |  | ||||||
|  | Для зависимых атрибутов возможно настроить динамическое появление атрибута в документе. Для отображения атрибутов необходимо проставить галочка в столбце **"Видимость"**. должно быть **логическое**. Также данные атрибуты должны быть по умолчанию невидимыми в табличной части [дополнительные атрибуты](#дополнительные_атрибуты_документа). | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Вкладка "Ограничения" | ## Вкладка "Ограничения" | ||||||
|  |  | ||||||
| ### Правила для вложений | ### Правила для вложений | ||||||
| @ -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)_) меньше либо равна текущей дате, то будет информационное сообщение: **"Дата начала нового отпуска должна быть позже текущей даты"**. |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| **Ниже представлены примеры проверок для расчета количества дней:** |  | ||||||
|  |  | ||||||
| <!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 | ||||||
|  | --- | ||||||
| # Контур.Доверенности | # Контур.Доверенности | ||||||
|  |  | ||||||
| ## Описание  | ## Описание  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user