diff --git a/docs/Admin manuals/Конструктор документов/index.md b/docs/Admin manuals/Конструктор документов/index.md index a53a747..268d3dd 100644 --- a/docs/Admin manuals/Конструктор документов/index.md +++ b/docs/Admin manuals/Конструктор документов/index.md @@ -625,7 +625,7 @@ NIOFamilyGenitive | Отображение ФИО работника в форм * **Название** - задается название операции, например, Создать "Заявление на ежегодный отпуск"; * **Тип документа** - выбирается к какому типу документа необходимо добавить меню операций; -!!! "Примечание" +!!! note По умолчанию создается новый документ без заполненных полей. В случае когда необходимо создать новый документ (как на конструкторе, так и любой другой) с заполненными данными из первичного документа, возможно реализовать через столбец "Скрипт по созданию документа". * **Подтип** - выбирается к какому типу документа необходимо добавить меню операций; @@ -1499,4 +1499,89 @@ NIOFamilyGenitive | Отображение ФИО работника в форм *Инструкцию по созданию пользовательского типа атрибута см. главу [Пользовательские типы атрибутов документа](../Пользовательские типы атрибутов документов/index.md).* - *О том, как использовать созданный пользовательский тип см. раздел [Описание полей в таблице "Дополнительные атрибуты". Тип группы (Unispr)](#описание-ChCode) и [Что писать в Тип группы (Unispr)?](#chcode).* \ No newline at end of file + *О том, как использовать созданный пользовательский тип см. раздел [Описание полей в таблице "Дополнительные атрибуты". Тип группы (Unispr)](#описание-ChCode) и [Что писать в Тип группы (Unispr)?](#chcode).* + +```sql + DO +$$ +declare "_PCode" bigint; +declare "_VCode" bigint; +declare "_CDate" timestamptz := now(); +declare "_CHost" character varying(255) := inet_client_addr(); +declare "_CUser" character varying(255) := lex."getVirtualLogin"(); +declare "_COrg" bigint := lex."getOrgId"(); +declare _TypePersonalOrder bigint; + _TypeNamePersonalOrder varchar(255); + _FlagMove int ; + +BEGIN + +if "_DocumentCategory" is not null then + select ty."IdTypeTimeWork", 'Base.'::varchar(255)|| coalesce(ty."NameModel"::varchar(255),''::varchar(255)), ty."FlagMove" + from dfd."DocumentConstructor" dc + join dfd."DocumentSubtype" ds on dc."DocumentSubtype" = ds."VCode" + join comdoc."VTypePersonalOrder" ty on ds."TypePersonalOrder" = ty."VCode" + where dc."VCode" = "_DocumentCategory" + into _TypePersonalOrder, _TypeNamePersonalOrder, _FlagMove; +end if; + +if _FlagMove = 2 then + + "_PCode" := lex."L8_sp_GenCode" ('RP_DocAbsence', 1); + "_VCode" := lex."L8_sp_GenCode" ('RP_WorkerAbsence', 1); + + INSERT INTO aw."RP_DocAbsence" ( + "VCode", "TypeName", "DateDoc", + "CDate", "CHost", "CUser", "COrg", + "WDate", "WHost", "WUser", "WOrg" + ) + VALUES ( + "_PCode", coalesce(_TypeNamePersonalOrder,"_TypeName"), coalesce("_DateDoc","_CDate"), + "_CDate", "_CHost", "_CUser", "_COrg", + "_CDate", "_CHost", "_CUser", "_COrg" + ); + + INSERT INTO aw."RP_WorkerAbsence" ( + "VCode", "Pcode", "IdWorker", "IdTypePer", + "CDate", "CHost", "CUser", "COrg", + "WDate", "WHost", "WUser", "WOrg" + ) + select + "_VCode", "_PCode", "_IdWorker", coalesce(_TypePersonalOrder,"_IdTypePer"), + "_CDate", "_CHost", "_CUser", "_COrg", + "_CDate", "_CHost", "_CUser", "_COrg" + ; +else + + "_PCode" := lex."L8_sp_GenCode" ('RP_DocMove', 1); + "_VCode" := lex."L8_sp_GenCode" ('RP_WorkerMove', 1); + + INSERT INTO rp."RP_DocMove" ( "VCode", "CDate", "WDate", "CHost", "WHost", "CUser", "WUser", "COrg", "WOrg", + "TypeName", "IdTypeCauseCond", /*"NumDoc",*/ "DateDoc", "FlagApp", "IdTypeDocStaff", "Note") + select "_PCode", "_CDate", "_CDate", "_CHost", "_CHost", "_CUser", "_CUser", "_COrg", "_COrg", + _TypeNamePersonalOrder, null, coalesce("_DateDoc","_CDate"), null, _TypePersonalOrder, null; + + INSERT INTO rp."RP_WorkerMove" ( "VCode", "Pcode", "CDate", "WDate", "CHost", "WHost", "CUser", "WUser", "COrg", "WOrg", + "IdWorker", "DateBeg", "IdDepartment", "IdPost", "IdRank", --"IdWorkContract", + "IdStaffUnit", "IdTypeBasisDoc", "DateBasis", "Rate", "IdOper1", "SumOper1", "IdTypeWorkSched", "Probation", "WCode") + select "_VCode", "_PCode", "_CDate", "_CDate", "_CHost", "_CHost", "_CUser", "_CUser", "_COrg", "_COrg", + "_IdWorker", @DateBeg, mm."IdDepartment", mm."IdPost", mm."IdRank", + mm."IdStaffUnit", mm."IdTypeBasisDoc", mm."DateBasis", mm."Rate", mm."IdOper1", mm."SumOper1", + mm."IdTypeWorkSched", mm."Probation", case when _FlagMove = 1 then mm."PCode" end + from ( + select m.* + from rp."RP_DocMove" p + join rp."RP_WorkerMove" m on p."VCode" = m."PCode" + join comdoc."VRP_TypeDocStaff" s on p."IdTypeDocStaff" = s."VCode" + where m."IdWorker" = "_IdWorker" and s."FlagMove" = 1 + order by "DateBeg" desc + limit 1) mm; + +end if; + + update "#tmp_newDocVCode" + set "newDocVCode" = "_PCode" ; + +END; +$$ +``` \ No newline at end of file