logo

[ELMA3] Запись листа согласования в контекстную переменную

В системе ELMA после начала согласования какого-либо документа можно вручную сгенерировать лист согласования и скачать его на свой ПК.

Если в контексте процесса есть документ, по которому идет или уже завершено согласование, то лист согласования этого документа можно записать в контекстную переменную. Документ не обязательно должен быть согласован в процессе, возможно согласование проходит в веб-части с помощью стандартной операции Согласование, в процессе его можно выбрать вручную или получить с помощью сценария.

В данном сценарии в переменную записывается финальный лист согласования (если их было больше одного), данный сценарий можно выполнить на любом шаге процесса, если в контексте процесса есть документ.

Пример сценария с использованием PublicAPI

Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.15.38 включительно.

Контекстные переменные:

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-файл с листом согласования.