[ELMA3] Запись листа согласования в контекстную переменную
В системе ELMA после начала согласования какого-либо документа можно вручную сгенерировать лист согласования и скачать его на свой ПК.
Если в контексте процесса есть документ, по которому идет или уже завершено согласование, то лист согласования этого документа можно записать в контекстную переменную. Документ не обязательно должен быть согласован в процессе, возможно согласование проходит в веб-части с помощью стандартной операции Согласование, в процессе его можно выбрать вручную или получить с помощью сценария.
В данном сценарии в переменную записывается финальный лист согласования (если их было больше одного), данный сценарий можно выполнить на любом шаге процесса, если в контексте процесса есть документ.
Пример сценария с использованием PublicAPI
Контекстные переменные:
context.Dokument - переменная типа Документ;
context.Vlozhenie - переменная типа Вложение.
Пространства имен:
using EleWise.ELMA.API; using EleWise.ELMA.Documents.Managers;
Текст сценария:
var AppGroup = ApprovementTaskGroupManager.Instance.GetGroupsByDocument(context.Dokument).LastOrDefault(); if (AppGroup != null) { context.Vlozhenie = PublicAPI.Docflow.Objects.Tasks.ApprovementList.ApprovementListToPdf(context.Dokument); }
Пример сценария без использования PublicAPI
Контекстные переменные:
Context.Dogovor – переменная, в которой указан согласованный документ;
Context.ListSoglasovaniya – переменная типа Вложение.
Пространства имен:
using EleWise.ELMA.Documents.Managers; using EleWise.ELMA.Common.Models; using EleWise.ELMA.Common.Managers; using EleWise.ELMA.Runtime.Managers; using EleWise.ELMA.Files; using EleWise.ELMA.Services;
Текст сценария:
var AppGroup = ApprovementTaskGroupManager.Instance.GetGroupsByDocument(context.Dogovor).LastOrDefault(); if (AppGroup != null) { var idList = new List<long>(); idList.Add(AppGroup.Id); context.ListSoglasovaniya = (Attachment)AttachmentManager.Instance.Create(); context.ListSoglasovaniya.File = InterfaceActivator.Create<BinaryFile>(); context.ListSoglasovaniya.File.Name = "Лист согласования.pdf"; context.ListSoglasovaniya.File.CreateDate = DateTime.Now; //последний аргумент метода Export отвечает за конвертацию в .pdf, конвертируется если true context.ListSoglasovaniya.File.ContentFilePath = ApprovementListManager.Instance.Export(context.Dogovor, idList, true); Locator.GetServiceNotNull<IFileManager>().SaveFile(context.ListSoglasovaniya.File); }
После выполнения данного сценария, в контекстную переменную будет записан pdf-файл с листом согласования.