[ELMA3] Прерывание задач согласования из скрипта
В сценарии осуществляется прерывание активных задач согласования у определенного документа.
Пример сценария с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.15.38 включительно.
Контекстная переменная:
context.Dokument – переменная типа Документ, тип связи – Список.
Пространство имен:
1 | using EleWise.ELMA.API; |
Текст сценария:
1 2 3 4 | 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
Пространства имен:
1 2 3 4 | using EleWise.ELMA.Documents.Managers; using EleWise.ELMA.Documents.Models; using EleWise.ELMA.Documents.Models.Tasks; using EleWise.ELMA.Tasks.Models; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | //Тут загружаются активные листы согласования по документу (документ должен лежать в контекстной переменной 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(); }); |