Согласование документа
Для отправки документа на согласование с помощью API необходимо, чтобы в шаблоне, из которого создаётся согласование, был установлен флаг |
-
Подключите к проекту или скрипту карточки дополнительные сборки:
DocsVision.ApprovalDesigner.ObjectModel.dll
иDocsVision.DocumentsManagement.ObjectModel.dll
, в которых определены преобразователь данных и сервис для отправки согласования. -
Подключите дополнительные пространства имён:
-
DocsVision.ApprovalDesigner.ObjectModel.Mapping
-
DocsVision.ApprovalDesigner.ObjectModel.Services
-
DocsVision.BackOffice.ObjectModel.Services
-
DocsVision.DocumentsManagement.ObjectModel.Services
-
DocsVision.Platform.ObjectModel.Mapping
-
System.Linq
-
-
Подключите в коде сервисы и преобразователи данных для работы с согласованием:
IServiceFactoryRegistry serviceFactoryRegistry = context.GetService<IServiceFactoryRegistry>(); (1) serviceFactoryRegistry.RegisterFactory(typeof(ApprovalDesignerServiceFactory)); var mapperFactoryRegistry = context.GetService<IObjectMapperFactoryRegistry>(); (2) mapperFactoryRegistry.RegisterFactory(typeof(ApprovalDesignerMapperFactory));
csharp1 Добавляем в контекст фабрику ApprovalDesignerServiceFactory
.2 Добавляем в контекст преобразовать данных ApprovalDesignerMapperFactory
. -
Получите идентификатор согласуемого документа, например, так:
Guid initialCardId = context.GetObjectRef(this.BaseObject).Id; (1)
csharp1 Получаем идентификатор документа, при в скрипте карточки. -
Получите настройки режима создания согласования:
KindsCardKind cardKind = context.GetObject<KindsCardKind>(new Guid("9C0E5586-41B8-411E-B5CD-C94B605CB7A1")); (1) KindsCardCreationSetting cardCreationSetting = cardKind.CreationSettings.FirstOrDefault(t => t.ModeName.Equals("СогласованиеПример")); (2)
csharp1 Получаем настройки вида карточки "Согласование КС". 2 Получаем настройки режима создания "СогласованиеПример". Режим использует шаблон согласования с флагом Запускать согласование без показа карточки
. -
Создайте новое согласование для документа:
Guid reconciliationId = context.GetService<IReconcileService>().CreateReconciliationCard(initialCardId, cardCreationSetting);
csharp -
Вызовите метод
HandleDocumentAfterReconcileCreated
, который завершит подготовку согласования и запустит его:CardData reconciliationCardData = Session.CardManager.GetCardData(reconciliationId); context.GetService<IReconcileService>().HandleDocumentAfterReconcileCreated((Document)this.BaseObject, reconciliationCardData);
csharpПриведенным способом можно отправлять документы на согласование из скрипта карточки или из внешнего приложения.