Merge branch 'master' of http://gogs.lex.lan/l8-base/ECM-administrator-manuals
This commit is contained in:
		| @ -132,7 +132,7 @@ search: | ||||
| **Редактируемый при активном маршруте до использования ЭП** - при включенной опции в выбранной подтипе разрешено редактирование атрибутов документа во время согласования по маршруту. | ||||
|  | ||||
| !!! warning | ||||
|     Редактировать атрибуты документа возможно только в документах, в которых отсутствует автоматически сгенерированный файл на подписание. Генерацию файла возможно настроить с помощью константы [**КЭДО_ВидыДействия_СоздатьФайл**](../Настройка констант/#система_электронного_и_кадрового_документооборота). Указываются после каких видов действия с документом будет автоматически формироваться печатная форма в формате pdf. Заполняется столбец "Значение (текст)" с кодами видов действия. Видов может быть как один, так и несколько. Если несколько, то перечисляются через запятую. | ||||
|     Редактировать атрибуты документа возможно только в документах, в которых отсутствует автоматически сгенерированный файл на подписание. Генерацию файла возможно настроить с помощью константы [**КЭДО_ВидыДействия_СоздатьФайл**](../Настройка констант#система_электронного_и_кадрового_документооборота). Указываются после каких видов действия с документом будет автоматически формироваться печатная форма в формате pdf. Заполняется столбец "Значение (текст)" с кодами видов действия. Видов может быть как один, так и несколько. Если несколько, то перечисляются через запятую. | ||||
|  | ||||
| **Запрещать ознакомление, если не создан документ из меню операций** - при включенной опции в выбранном подтипе документа запрещено ознакомление, например, с уведомлением об отпуске, если сотрудник не оформил заявление на отпуск или заявление на перенос через меню операций. **Данная опция реализована только для типа документа "Уведомления Lexema"**. | ||||
|  | ||||
| @ -146,9 +146,9 @@ search: | ||||
|  | ||||
| ### Тип и подтип документа | ||||
|    | ||||
| Поля "Тип документа" и "Подтип документа" позволяют выбрать значение из выпадающего списка. В случае, если нет требуемого типа документа, необходимо заполнить форму ["Настройка документа"](../Настройка документов/) с требуемым типом и включить опцию "Форма построена на конструкторе документов". | ||||
| Поля "Тип документа" и "Подтип документа" позволяют выбрать значение из выпадающего списка. В случае, если нет требуемого типа документа, необходимо заполнить форму ["Настройка документа"](../Настройка документов) с требуемым типом и включить опцию "Форма построена на конструкторе документов". | ||||
|  | ||||
| Поле "Подтип документа" можно заполнить только после заполнения поля "Тип документа". В случае, если нет требуемого подтипа документа его возможно создать через справочник ["Подтип документа"](../Подтипы документов/) либо по нажатию на кнопку создания напротив поля подтип документа. | ||||
| Поле "Подтип документа" можно заполнить только после заполнения поля "Тип документа". В случае, если нет требуемого подтипа документа его возможно создать через справочник ["Подтип документа"](../Подтипы документов) либо по нажатию на кнопку создания напротив поля подтип документа. | ||||
|  | ||||
| Для выбора необходимого типа в документе "Конструктор документов" необходимо раскрыть справочник "Тип документа" и выбрать необходимый их выпадающего списка.  | ||||
|  | ||||
| @ -214,7 +214,7 @@ search: | ||||
| Логическое | Логическое выражение (Истина/Ложь) | ||||
| Подразделение | Выпадающий список [подразделений](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/%D0%9F%D0%BE%D0%B4%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F/) | ||||
| Пользовательский тип атрибута | Выпадающий список [пользовательских атрибутов](../Пользовательские типы атрибутов документов/index.md) | ||||
| Произвольная выборка | Выпадающий список из справочников, например, [физических лиц](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/%D0%A4%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5 %D0%BB%D0%B8%D1%86%D0%B0/) | ||||
| Произвольная выборка | Выпадающий список из справочников, например, [физических лиц](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/%D0%A4%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5 %D0%BB%D0%B8%D1%86%D0%B0/). Указывается [вычисление](#описание_полей_в_таблице_дополнительные_атрибуты) | ||||
| Работник | Выпадающий список с [сотрудниками](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/%D0%A1%D0%BE%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%B8%D0%BA%D0%B8/) | ||||
| Строка | Текстовое поле | ||||
| Табличная часть | Добавление табличной части | ||||
| @ -260,7 +260,7 @@ search: | ||||
| - **"Тип группы(Unispr)"** – заполняется в случаях: | ||||
| -  если поле "Тип атрибута" принимает значение **"Пользовательский тип атрибута"** ("Base.Unispr"). Заполняется значением из справочника ["Пользовательские типы атрибутов документов"](../Пользовательские типы атрибутов документов/index.md). Соответствует полю "Группа" документов справочника, выпадающий список будет содержать все наименования прописанной группы. Используется в том случае, когда атрибут может иметь одно из определенных значений в некоторой группе наименований. Справочник доступен по кнопке "Пользовательские типы атрибутов": <img src="media/image13.png"> | ||||
| { #описание-ChCode } | ||||
| - если поле "Тип атрибута" принимает значение **"Произвольная выборка"**. Указывается вычисление атрибута из справочников, например, | ||||
| - если поле "Тип атрибута" принимает значение **"Произвольная выборка"**. Указывается вычисление атрибута, например, | ||||
|  | ||||
| ```sql | ||||
| select 99::bigint as "VCode", 'Тест 99'::text as "Name", 1 as "OrderKey" union select 199, 'Тест 199', 2 | ||||
| @ -365,31 +365,6 @@ NIOFamilyGenitive | Отображение ФИО работника в форм | ||||
|  | ||||
| ### Вычисляемые атрибуты | ||||
|  | ||||
| <!-- Чтобы прописать вычисление полей, значения которых должны зависеть от остальных полей (т.е. сделать их вычисляемыми), необходимо в Microsoft SQL Server Management Studio внести изменения в код процедуры dbo.callAfterSetSQL (в которой прописывается непосредственно вычисление значение атрибута) и в код процедуры dbo.callCheckSQL (для проверки корректности внесённых в поля атрибутов значений). | ||||
|  | ||||
| *Для вычисляемых атрибутов рекомендуется устанавливать признак "Только для чтения".* | ||||
|  | ||||
| В рассматриваемом примере дата окончания отпуска (#eDate#) вычисляется на основе количества дней в отпуске (\#bDate#) и даты его начала (\#cnt#). В процедуру dbo.callAfterSetSQL для изменения атрибута \#eDate# при изменении \#bDate# или \#cnt# были внесены следующие изменения: | ||||
|  | ||||
| ```sql | ||||
| if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnName = '#cnt#' )  AND @DocumentSubtypeName = 'Заявление на отпуск без сохранения зп' | ||||
| 	begin | ||||
| 		update #resTab | ||||
| 		set  | ||||
|       DateValue =  convert(varchar(50), | ||||
|                     dateadd(day, 		 | ||||
|                         convert(bigint, | ||||
|                               (select top 1 BigIntValue from #resTab where ColumnName = '#cnt#')-1), 		 | ||||
|                         convert(date, | ||||
|                               (select top 1 DateValue from #resTab where ColumnName = '#bDate#'), | ||||
|                               104)		 | ||||
|                       ),  | ||||
|                 104), 		 | ||||
|       Recalculated = 1 | ||||
| 		where ColumnName = '#eDate#' | ||||
| 	end | ||||
| ``` --> | ||||
|  | ||||
| Есть специальные дополнительные атрибуты с зарезервированными наименованиями и типами, прописывать их в таблице "Дополнительные атрибуты" не надо. Среди таких атрибутов есть: | ||||
| { #спец-атрибуты } | ||||
|  | ||||
| @ -636,7 +611,169 @@ 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 | ||||
|     Если столбцы "Подтип", "Условие фильтрации" и "Служебное наименование" не заполнены, то созданная операция будет отображаться во всех подтипах документа.  | ||||
|  | ||||
| * **Разрешить создавать несколько документов** - при включенной операции из одного типа документа возможно создавать несколько новых. По умолчанию из одного документа можно создать только один новый, и при нажатии в операциях по созданию нового будет открываться ранее созданный. | ||||
|  | ||||
| * **Скрипт по созданию документа** - используется в случае когда необходимо переносить динамические данные из первичного документа в новый документ. Использоваться может как при создании нового документа на конструкторе, например, заявления от сотрудника, так и при создании документа не на конструкторе , например, приказа. | ||||
|  | ||||
| ??? "Пример для PostgreSQL" | ||||
|  | ||||
|     ```sql | ||||
|             DO | ||||
|             $$ | ||||
|             -- объявление переменных | ||||
|             declare _docVCode bigint;   | ||||
|             declare _BeginDateScript date; | ||||
|             declare _EndDateScript date; | ||||
|             declare _LeadTimeScript integer; | ||||
|             declare _AttVCode bigint; | ||||
|             declare _k integer; | ||||
|             begin  | ||||
|                 _docVCode  :=  lex."L8_sp_GenCode"('UniversalDocument', 1);  | ||||
|                 -- в скобках указывается таблица для нового типа документа  | ||||
|                 -- (например, для служебной записки указывается таблица 'DocflowDocument') | ||||
|  | ||||
|             INSERT INTO dfd."UniversalDocument" (-- начало создания документа (по аналогии указывается схема и таблица для нового документа) | ||||
|             "VCode", "TypeName", "DocumentCategory", "DocumentSubtype",  | ||||
|             "DocumentDate", "MyCompany", "IdWorker", "Department", "Position", | ||||
|             "CUser", "VirtualCUser", "COrg", "WOrg", | ||||
|             "WUser", "CDate", "WDate", "CHost", "WHost", "SourceDocumentCode", "SourceDocumentType" | ||||
|             ) | ||||
|             SELECT _docVCode  , '_newTypeName', _Constructor,  _new_DocumentSubtype,  | ||||
|             -- _newTypeName - тип нового документа из столбца "Тип документа" из таблицы "Тип+подтип документов" | ||||
|             -- _Constructor - код нового конструктора документа для нового документа  | ||||
|             -- _new_DocumentSubtype -    код нового подтипа документа (в случае создания документа не на конструкторе, данные параметры не указывается) | ||||
|  | ||||
|             now()::date, _filial, _IdWorker, _IdDep::bigint, _IdPost::bigint,  | ||||
|             -- _filial - код организации MyCompany,  | ||||
|             -- _IdWorker - код работника,  | ||||
|             -- _IdDep - код подразделения работника,  | ||||
|             -- _IdPost - код должности работника | ||||
|             '_cuser', '_virtual_user', _corg, _corg,  | ||||
|             -- _corg - код филиала организации | ||||
|             '_cuser', '_cdate', '_cdate', '_chost', '_chost', _doc_code, '_doc_type'    | ||||
|             -- Указываются параметры из вызываемой процедуры CreateUniversDocsFromNotificationLexema, где: | ||||
|             -- _doc_code - код первоначального документа из которого создается новый документ по операции,  | ||||
|             -- '_doc_type' - тип первоначального документа из которого создается новый документ по операции, текстовое поле обрамляются в одинарных кавычках. | ||||
|             ; | ||||
|  | ||||
|             select  ud."BeginDate" , ud."EndDate", ud."LeadTime" from dfd."DocflowDocument" ud where ud."VCode" = _doc_code  | ||||
|             -- отсюда берутся необходимые поля первоначального документа из таблицы, которые необходимо передать в новый документ | ||||
|             into _BeginDateScript, _EndDateScript, _LeadTimeScript; | ||||
|  | ||||
|             -- Начало вставки в дополнительные атрибуты нового документа (в случае создания документа не на конструкторе, не указывается) | ||||
|             _k := count(1)  from dfd."DocumentCategoryAttributeType" a  where a."PCode" = _Constructor; | ||||
|  | ||||
|             _AttVCode := lex."L8_sp_GenCode"('DocumentAdditionalAttribute'::character varying, _k::integer); | ||||
|  | ||||
|             insert into  dfd."DocumentAdditionalAttribute" ("VCode", "PCode", "CategoryAttributeType",  | ||||
|             -- вставка в дополнительные аттрибуты (в случае создания документа не на конструкторе, не указывается) | ||||
|                                                                 "DateValue", "BigIntValue", "Value", | ||||
|                                                                 "DoubleValue", "MoneyValue", "DateTimeValue", "TimeValue", | ||||
|             "CUser", "WUser", "CDate", "WDate", "CHost", "WHost") | ||||
|             select _AttVCode +dense_rank() over (order by a."VCode") -1 , _docVCode  , | ||||
|             a."VCode",  | ||||
|             case when a."ColumnName" = '#bdate#' then _BeginDateScript  | ||||
|             when a."ColumnName" = '#edate#' then _EndDateScript  | ||||
|             else null::date end,  | ||||
|             case when a."ColumnName" = '#kolvo#' then _LeadTimeScript else null::BigInt end , null, | ||||
|             null, null, null, null, | ||||
|             '_cuser',  '_cuser', '_cdate', '_cdate', '_chost', '_chost' | ||||
|             -- #bdate#, #edate#, #kolvo#  дополнительные атрибуты в которые вставляются данные из первичного документа | ||||
|             from dfd."DocumentCategoryAttributeType" a  | ||||
|             where a."PCode" = _Constructor ; | ||||
|             -- Конец вставки в дополнительные атрибуты нового документа | ||||
|  | ||||
|             update "#tmp_newDocVCode" -- хранение кода нового документа для его открытия | ||||
|             set "newDocVCode" = _docVCode ; | ||||
|  | ||||
|             END; | ||||
|             $$ | ||||
|     ``` | ||||
|  | ||||
| ??? "Пример для MSSQL" | ||||
|  | ||||
|     ```sql | ||||
|         declare @docVCode bigint | ||||
|         declare @god int | ||||
|         declare @AttVCode bigint | ||||
|         declare @k int | ||||
|  | ||||
|             exec @docVCode = dbo."L8_sp_GenCode" 'UniversalDocument', 1 | ||||
|  | ||||
|             INSERT INTO "UniversalDocument" ( | ||||
|             "VCode", "TypeName", "DocumentCategory", "DocumentSubtype",  | ||||
|             "DocumentDate", "MyCompany", "IdWorker", "Department", "Position", | ||||
|             "CUser", "VirtualCUser", "COrg", "WOrg", | ||||
|             "WUser", "CDate", "WDate", "CHost", "WHost", "SourceDocumentCode", "SourceDocumentType" | ||||
|             ) | ||||
|             SELECT @docVCode  , '@newTypeName', @Constructor,  @new_DocumentSubtype, | ||||
|                 sysdatetimeoffset(), @filial, @IdWorker, @IdDep, @IdPost, | ||||
|                 '@cuser', '@virtual_user', @corg, @corg, | ||||
|                 '@cuser', '@cdate', '@cdate', '@chost', '@chost', @doc_code, '@doc_type'    | ||||
|              | ||||
|             select @god =  ud.BigIntValue  | ||||
|             from "DocumentAdditionalAttribute" ud  | ||||
|                 join "DocumentCategoryAttributeType" ty on ud."CategoryAttributeType" = ty.VCode | ||||
|             where ud."PCode" = @doc_code and  | ||||
|                 ty."ColumnName" = '#worker4#' | ||||
|  | ||||
|             select  @k= count(1)  from "DocumentCategoryAttributeType" a where a."PCode" = @Constructor | ||||
|  | ||||
|             exec @AttVCode = dbo."L8_sp_GenCode" 'DocumentAdditionalAttribute', @k | ||||
|  | ||||
|             insert into  "DocumentAdditionalAttribute" ("VCode", "PCode", "CategoryAttributeType",  | ||||
|                                                             "DateValue", "BigIntValue", "Value", | ||||
|                                                             "DoubleValue", "MoneyValue", "DateTimeValue", "TimeValue", | ||||
|             "CUser", "WUser", "CDate", "WDate", "CHost", "WHost") | ||||
|             select @AttVCode + dense_rank() over (order by VCode)-1, @docVCode  , | ||||
|                     a."VCode", null, case when a."ColumnName" = '#year#' then @god else null end, null, | ||||
|                     null, null, null, null, | ||||
|                 '@cuser',  '@cuser', '@cdate', '@cdate', '@chost', '@chost' | ||||
|             from "DocumentCategoryAttributeType" a  | ||||
|             where a."PCode" = @Constructor  | ||||
|  | ||||
|             update #tmp_newDocVCode | ||||
|             set newDocVCode = @docVCode | ||||
|  | ||||
|     ``` | ||||
|  | ||||
|  | ||||
| В данном примере указано, что при поступлении пользователю уведомления где вид отпуска "Основной", в меню операций у него будут доступны операции: | ||||
|  | ||||
| * Создать "Заявление на доп. отпуск" | ||||
| * Создать "Заявление на ежегодный отпуск" | ||||
| * Создать "Заявление на перенос отпуска" | ||||
| * Создать "Универсальный документ" | ||||
|  | ||||
|  | ||||
|  | ||||
| ### Видимость данных | ||||
|  | ||||
| @ -747,36 +884,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 | ||||
|     Если столбцы "Подтип", "Условие фильтрации" и "Служебное наименование" не заполнены, то созданная операция будет отображаться во всех подтипах документа. Кнопка "Операции" отображается только в документах "Заявление от сотрудника". | ||||
|  | ||||
| В данном примере указано, что при поступлении пользователю уведомления где вид отпуска "Основной", в меню операций у него будут доступны операции: | ||||
|  | ||||
| * Создать "Заявление на доп. отпуск" | ||||
| * Создать "Заявление на ежегодный отпуск" | ||||
| * Создать "Заявление на перенос отпуска" | ||||
| * Создать "Универсальный документ" | ||||
|  | ||||
|  | ||||
|  | ||||
| ### Статичные поля | ||||
|  | ||||
| В табличной части возможно настроить обязательность заполнения, видимости и указать значения по умолчанию для статичных полей в карточке документа. | ||||
| @ -1240,7 +1347,7 @@ if @formName='EmployeeStatementForm' AND ( @ColumnName = '#bDate#' OR @ColumnNam | ||||
|  | ||||
| ## Настройка операций по созданию заявления в личном кабинете сотрудника | ||||
|  | ||||
| В личном кабинете во вкладке ["Графики отпусков"](https://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Профиль сотрудника/#графики_отпусков) для настройки операций по созданию заявления необходимо: | ||||
| В личном кабинете во вкладке ../Подтипы документовttps://ecm-user-manuals.readthedocs.io/ru/latest/User manuals/Профиль сотрудника/#графики_отпусков) для настройки операций по созданию заявления необходимо: | ||||
|  | ||||
| * Создать [подтип документа](../Подтипы документов/) со служебным наименованием `MyProfileVacationOperation`: | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user