Добавление/удаление прав на создание документа определенного типа в сценарии

Ниже приведены сценарии добавления/удаления прав пользователя на на создание документа определенного типа. 

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

Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарии, указанные ниже, актуальны для версий системы ELMA до 3.12.1 включительно.

Добавление прав пользователю на создание документа определенного типа

Контекстная переменная:

context.Poljzovatelj - контекстная переменная типа Пользователь.

В данных методах можно добавлять/удалять права не только для конкретного пользователя, но и для групп пользователей или должностей.

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

using EleWise.ELMA.API;
using EleWise.ELMA.Documents.Contracts.Models;

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

PublicAPI.Docflow.Document.AddDocumentCreatePermission(context.Poljzovatelj, InterfaceActivator.TypeOf<IContract>());

Удаление прав на создание документа типа Договор

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

using EleWise.ELMA.API;
using EleWise.ELMA.Documents.Contracts.Models;

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

PublicAPI.Docflow.Document.DeleteDocumentCreatePermission(context.Poljzovatelj, InterfaceActivator.TypeOf<IContract>()); 

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

Добавление прав пользователю на создание документа определенного типа

Контекстная переменная:

context.Poljzovatelj - контекстная переменная типа Пользователь.

В данных методах можно добавлять/удалять права не только для конкретного пользователя, но и для групп пользователей или должностей.
Для корректной работы сценария необходимо подключить сборки:
EleWise.ELMA.Documents
EleWise.ELMA.Documents.Docflow

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

using EleWise.ELMA.Documents;
using EleWise.ELMA.Documents.Managers;
using EleWise.ELMA.Documents.Metadata;
using EleWise.ELMA.Documents.Models;
using EleWise.ELMA.Model.Common;
using EleWise.ELMA.Model.Entities;
using EleWise.ELMA.Model.Managers;
using EleWise.ELMA.Model.Metadata;
using EleWise.ELMA.Model.Services;
using EleWise.ELMA.Model.Types.Settings;
using EleWise.ELMA.Security;
using EleWise.ELMA.Services;

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

//загрузка данных о правах по конкретному типу документа: вместо DocType укажите Ваш тип документа 
 var metadata = (DocumentMetadata)MetadataLoader.LoadMetadata(InterfaceActivator.TypeOf<IDocType>());
 var profile = DocumentMetadataProfileManager.Instance.LoadByDocumentType(metadata.ImplementationUid);  
 //проверка наличия прав на создание документа у пользователя
 var hasPermission = profile.Permissions.FirstOrDefault(p => p.User != null && 
       p.User.Id ==  context.Poljzovatelj.Id && 
       p.PermissionId == EleWise.ELMA.Documents.PermissionProvider.DocumentMetadataCreateInstance.Id) != null;
 //если права отсутствуют - добавляем их
 if (!hasPermission) {
  profile.Permissions.Add(new InstanceOf<IDmsObjectDefaultPermissions> {
     New = {
    PermissionId = EleWise.ELMA.Documents.PermissionProvider.DocumentMetadataCreateInstance.Id,
    DocumentMetadataProfile = profile,
     TypeRoleId = CommonRoleTypes.User.Id,
    User = context.Poljzovatelj
     }     
    }.New);
  profile.Save();
    }

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

Контекстная переменная:

context.Poljzovatelj - контекстная переменная типа Пользователь.

В данных методах можно добавлять/удалять права не только для конкретного пользователя, но и для групп пользователей или должностей.
Для корректной работы сценария необходимо подключить сборки:
EleWise.ELMA.Documents
EleWise.ELMA.Documents.Docflow

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

using EleWise.ELMA.Documents;
using EleWise.ELMA.Documents.Managers;
using EleWise.ELMA.Documents.Metadata;
using EleWise.ELMA.Documents.Models;
using EleWise.ELMA.Model.Common;
using EleWise.ELMA.Model.Entities;
using EleWise.ELMA.Model.Managers;
using EleWise.ELMA.Model.Metadata;
using EleWise.ELMA.Model.Services;
using EleWise.ELMA.Model.Types.Settings;
using EleWise.ELMA.Security;
using EleWise.ELMA.Services;

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

//загрузка данных о правах по конкретному типу документа: вместо Testblock укажите Ваш тип документа
        var metadata = (DocumentMetadata)MetadataLoader.LoadMetadata(InterfaceActivator.TypeOf<ITestblock>());
var profile = DocumentMetadataProfileManager.Instance.LoadByDocumentType(metadata.ImplementationUid);
//проверка наличия прав на создание документа у пользователя
var perm = profile.Permissions.FirstOrDefault(p => p.User != null &&
                                              p.User.Id ==  context.Poljzovatelj.Id && 
                                              p.PermissionId == EleWise.ELMA.Documents.PermissionProvider.DocumentMetadataCreateInstance.Id);
//если права есть - удаляем их
if (perm != null)
{
profile.Permissions.Remove(perm);
profile.Save();
}