logo

[ELMA3] Подписание версии документа в сценарии

Рассмотрим сценарий, с помощью которого можно подписать текущую версию документа.

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

Примечание
Актуальная документация по PublicAPI доступна по ссылке.

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

  • context.Direktor - переменная типа Пользователь;
  • context.Dokument - переменная типа Документ.

Пространства имен:

using EleWise.ELMA.API;
using EleWise.ELMA.Services;
using EleWise.ELMA.Documents.Managers;

Текст сценария:

var manager = Locator.GetServiceNotNull<DocumentVersionExtManager>();
var vers = PublicAPI.Docflow.DocumentVersion.Filter().Document(context.Dokument).Status(PublicAPI.Enums.Documents.DocumentVersionStatus.Current).Find().FirstOrDefault(); // получаем текущую версию документа
if (vers != null)
{
    var user = PublicAPI.Docflow.Objects.DocumentAssignUser.Create();
    user.User = context. Direktor;
    user.DocumentVersion = vers;
    vers.SignedUsers.Add(user);
    manager.UpdateSimpleDigitalSignature(user);
}

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

Контекстные переменные:
  • context.Dokument - переменная Документ, тип - тип документа Договор;
  • context.Direktor - переменная Директор, тип - Пользователь.

Для работы сценария необходимо подключить сборки:

Elewise.ELMA.Documents
Elewise.ELMA.Documents.Docflow

Пространства имен:

using EleWise.ELMA.Documents.Managers;
using EleWise.ELMA.Documents.Models;
using EleWise.ELMA.Services;
Текст сценария:
var vers = DocumentVersionManager.Instance.Get(context.Dokument.Id).ToList().Find(v => v.Status == DocumentVersionStatus.Current); //получаем текущую версию документа
var manager = Locator.GetServiceNotNull<DocumentVersionExtManager>();
if (vers != null)
{
    var v_sign = DocumentVersionExtManager.Instance.Load(vers.Id);
    var user = DocumentAssignUserManager.Instance.Create();
    user.User = context.Direktor;//указываем подписывающего пользователя
    user.DocumentVersion = vers;
    v_sign.SignedUsers.Add(user); //добавляем в список подписавших документ
    manager.UpdateSimpleDigitalSignature(user);//обновляем информацию об ЭП
}