[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);//обновляем информацию об ЭП
}