Merge branch 'master' of http://gogs.lex.lan/l8-base/ECM-administrator-manuals
This commit is contained in:
commit
1729042038
@ -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`:
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user