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