ITaskService.AddSignature — метод (Task, X509Certificate2, StatesOperation, Guid, IEnumerable<CardFieldSetting>)
Данный метод добавляет новую подпись в список подписей карточки Задание, и устанавливает ЭП на указанные поля карточки.
-
Пространство имён:
DocsVision.BackOffice.ObjectModel.Services
-
Сборка:
DocsVision.BackOffice.ObjectModel.dll
Синтаксис
BaseCardSignature AddSignature(Task task, X509Certificate2 certificate, StatesOperation operation, Guid signatureType, IEnumerable<CardFieldSetting> fields)
- Параметры
-
- task
-
Тип:
Task
Задание, содержащее подписываемые данные
- certificate
-
Тип:
System.Security.Cryptography.X509Certificates.X509Certificate2
Сертификат сотрудника, которым будет выполнено подписания
- operation
-
Тип:
StatesOperation
Подписываемая операция
- signatureType
-
Тип:
System.Guid
Тип подписи, который может быть получен из
TaskOperationSignatureSetting.Name
- fields
-
Тип:
System.Collections.Generic.IEnumerable<CardFieldSetting>
Коллекция подписываемых полей типа
CardFieldSetting
, определённых для карточки в Справочнике видов карточек
- Возвращаемое значение
-
Тип:
BaseCardSignature
Подпись
Исключения
Исключение | Условие |
---|---|
Ошибка возвращается в случае, если не задан параметр |
Заметки
Настройки (подписываемые поля; операция, при которой будет произведено подписание; и т.д.), используемые при подписании, задаются в Справочнике видов карточек.
Примеры
Ниже приведён пример скрипта, который позволяет осуществить подписание операции в карточке Задание. Обычно подписание осуществляется автоматически, в соответствии с настройками вида в Справочнике видов карточек
using System.Linq;
using System.Reflection;
using DocsVision.BackOffice.ObjectModel;
using DocsVision.BackOffice.ObjectModel.Services;
using DocsVision.BackOffice.WinForms.Controls;
using DocsVision.Platform.ObjectModel;
namespace BackOffice
{
public class CardTaskТестScript : CardTaskНа_ознакомлениеScript
{
private void SignOperation_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
ObjectContext objectContext = base.CardControl.ObjectContext;
Task task = (base.BaseObject as Task);
ITaskService taskService = objectContext.GetService<ITaskService>(); (1)
MethodInfo ensureSign = this.CardControl.GetType().GetMethod("EnsureSign", BindingFlags.NonPublic` | BindingFlags.Instance);
bool result = (ensureSign.Invoke(this.CardControl, null) as bool?).Value;
if (!result) return; (2)
bool cancel = false;
var certificate = SelectCertificateForm.SelectCertificate(ref cancel, base.CardControl.ObjectContext);
if (cancel) return; (3)
var taskSetting = taskService.GetKindSettings(task.SystemInfo.CardKind); (4)
var signatureSetting = taskSetting.OperationSignatures.First(t => t.SignatureName = "SignOperation"); (5)
taskService.AddSignature(task, certificate, signatureSetting.SignedOperations[0], new System.Guid(signatureSetting.Name), signatureSetting.Fields); (6)
}
}
}
1 | Получение сервиса для работы с заданиями. |
2 | EnsureSign — метод проверки данных карточки перед подписанием не является публичным, поэтому используем механизм отражения. |
3 | Выбор сертификата сотрудника. |
4 | Получение настроек вида карточки Задания, для получения настроек подписания. |
5 | Выбор Вида подписи (определена в Справочнике видов карточек, в секции Подпись/Подписание операций) с названием SignOperation . |
6 | Добавление подписи. Из настроек подписания, для примера, берем первую настройку. |