Установка разных прав доступа на элементы бизнес-процесса для пользователей

Наверняка каждый, кто создавал бизнес-процесс в системе Terrasoft хотя бы раз сталкивался с задачей раздать разные права доступа пользователям на элемент бизнес-процесса. Вариант, когда пользователь 1 раздает вручную права доступа например, на документ по процессу пользователю 2 не совсем удобен (нужно всегда об этом помнить, делать лишние движения руками, мышью и т.д.). Волей-неволей задаешься задачей реализовать это один раз и больше не задумываться о подобных мелочах.
Предлагаю для решения задачи создать хранимую процедуру, которая и будет создавать нужные права доступа, а затем вызывать эту процедуру в любом месте скрипта бизнес-процесса.
Привожу текст хранимой процедуры в прикрепленном файле. Она предназначена для раздачи полных прав доступа одному пользователю и прав только на чтение другому (для документа).

После создания этой хранимой процедуры Вам необходимо создать ее обработку уже в Terrasoft CRM Administrator с передачей используемых в ней параметров. Это делается следующим образом:

function SetSpecialPermission(User1ID, User2ID) {
 if (IsEmptyValue(User1ID) || IsEmptyValue(User2ID)) {
  return;
 }
 var IsAdmin = Connector.CurrentUser.IsAdmin;
 IsAdmin = IsAdmin ? 1 : 0;
 var SQL = "exec tsp_SetSpecialPermissions :P1, :P2, :P3";
 var Param = System.CreateObject("TSObjectLibrary.Parameters");
    AddParameter(Param, pdtGUID, User1ID).Name = 'P1';
    AddParameter(Param, pdtGUID, User2ID).Name = 'P2';
    AddParameter(Param, pdtGUID, IsAdmin).Name = 'P3';
 Connector.DBEngine.ExecuteCustomSQL(SQL, Param);
}

Затем в нужном месте скрипта бизнес-процесса, например на событии OnAfterExecute задачи процессе, вызвать эту процедуру, указав ID пользователей.

 function Action1OnAfterExecute(ActionItem, IsComplete)

 var User1ID = '{251FB9AC-C17E-4DF7-A0CB-D591FDB97462}';
 var User2ID = '{B8ABDC0D-D36E-42C5-B1F6-2AD425F6CAD0}';
 SetSpecialPermission(User1ID, User2ID);
}

В результате, после перевода элемента бизнес-процесса в завершенное состояние, права доступа на документы (в предложенном примере) будут перераспределены в соответствии с запросом хранимой процедуры.
По аналогии с предоставленным примером Вы можете реализовать раздачу прав доступа на сколько угодно пользователей в необходимых Вам разделах.

Надеюсь, мой пример сократит затраты Вашего драгоценнейшего времени на реализацию функционала раздачи прав доступа.

С уважением,
Мельникова Екатерина

Нравится

Поделиться

0 комментариев
Показать все комментарии