logo

[ELMA3] Добавление/удаление прав на подписание документа

При помощи сценария добавляются/удаляются права на подписание типа документа, а не конкретного документа.

В сценарии используются переменные:

Документ – тип объект Документ;

Пользователь – пользователь системы, подписывающий документ, тип – объект Пользователь

Нужно объявить пространства имен:

using EleWise.ELMA.Documents.Metadata;
using EleWise.ELMA.Model.Metadata;
using EleWise.ELMA.Security;
using EleWise.ELMA.Documents.Managers;
using EleWise.ELMA.Documents.Models;
using EleWise.ELMA.Documents;
using EleWise.ELMA.Services;

1. Добавление прав доступа на подписание документа.

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

//Загружаем метаданные
   var metadata = (DocumentMetadata)MetadataLoader.LoadMetadata(context. Document.TypeUid);
   var profile = DocumentMetadataProfileManager.Instance.LoadByDocumentType(metadata.ImplementationUid); 
//Добавляем права на подписание
   profile.Permissions.Add( new InstanceOf<IDmsObjectDefaultPermissions>
         {
          New =
          {
          DocumentMetadataProfile = profile,
          PermissionId = DocflowPermissionProvider.DocumentMetadataSignInstance.Id,
          TypeRoleId = CommonRoleTypes.User.Id,
          Assigned = context.Poljzovatelj 
          }
         }.New);
 
    profile.Save();    

В результате после выполнения сценария пользователь (переменная Poljzovatelj) получит права на подписание документа (переменная Document).

2. Удаление прав на подписание документа.

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

//Загружаем метаданные
var metadata = (DocumentMetadata)MetadataLoader.LoadMetadata(context.Document.TypeUid);
   var profile = DocumentMetadataProfileManager.Instance.LoadByDocumentType(metadata.ImplementationUid);
//Задаем права доступа, которые хотим удалить
   var permToDel = profile.Permissions.FirstOrDefault(p => p.DocumentMetadataProfile == profile && p.PermissionId == DocflowPermissionProvider.DocumentMetadataSignInstance.Id && p.TypeRoleId == CommonRoleTypes.User.Id && p.Assigned == context. Poljzovatelj);
//Удаляем права на подписание
   profile.Permissions.Remove(permToDel); 
   profile.Save();

В результате после выполнения сценария у пользователя (переменная Poljzovatelj) удалятся права на подписание документа (переменная Document).