[ELMA3] Прерывание задач согласования из скрипта
В сценарии осуществляется прерывание активных задач согласования у определенного документа.
Пример сценария с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.15.38 включительно.
Контекстная переменная:
context.Dokument – переменная типа Документ, тип связи – Список.
Пространство имен:
using EleWise.ELMA.API;
Текст сценария:
foreach (var group in PublicAPI.Docflow.Tasks.GetActiveApprovementGroups(context.Dokument)) { PublicAPI.Docflow.Objects.Tasks.ApprovementTaskGroup.Terminate(group, false); }
Пример сценария без использования PublicAPI
Для работы сценария нужно подключить сборки:
EleWise.ELMA.Documents
EleWise.ELMA.Documents.Docflow
Пространства имен:
using EleWise.ELMA.Documents.Managers; using EleWise.ELMA.Documents.Models; using EleWise.ELMA.Documents.Models.Tasks; using EleWise.ELMA.Tasks.Models;Текст сценария:
//Тут загружаются активные листы согласования по документу (документ должен лежать в контекстной переменной context.DogovorArendy) var groups = ApprovementTaskGroupManager.Instance.GetActive(new List<IDocument> { context.DogovorArendy }).ToList(); //Пробегаемся по активным листам согласования groups.ForEach(g => { //Проставляем для листов статус прервано g.ApprovementList.Items.ToList().ForEach(i => { i.Results.ToList().ForEach(r => { if (r.Status == ApprovalStatus.None) { r.Status = ApprovalStatus.Terminated; r.Save(); } }); }); //Проставляем для задача согласования статус прервано g.Tasks.ToList().ForEach(t => { if (t.ApprovalStatus == ApprovalStatus.None) { if (t.IsActive()) t.Status = TaskStatus.WasClosed; t.ApprovalStatus = ApprovalStatus.Terminated; t.ListItem.Results.ToList().ForEach(r => { if (r.Status == ApprovalStatus.None) { r.Status = ApprovalStatus.Terminated; r.Save(); } }); t.Save(); } }); //Проставляем статус для листа согласования g.Status = ApprovalStatus.Terminated; g.Save(); });