Вопрос

Права доступа

Добрый день, коллеги.

Как настроить права доступа таким образом, чтобы пользователь, ответственный за контрагента, имел доступ ко всем записям, где участвует этот контрагент?

Например: по контрагенту создан заказ, в контрагенту ответственный Петров, а в заказе Иванов. Но Петров должен видеть заказ, созданный Ивановым.

PS сейчас права доступа настроены таким образом, что каждый пользователь может видеть только свои записи. Так и должно остаться, за исключением вышеуказанной логики.

Заранее спасибо!

Нравится

2 комментария

Здравствуйте, Дарина!

Наиболее оптимальным вариантом вижу реализацию через бизнес-процесс с использованием элемента Изменить права доступа в нем. Основное преимущество этого решения в том, что через процесс вы будете добавлять прямые права конкретному пользователю, при этом убирать старые права совсем не обязательно.

Например, процесс, который запускался бы по сигналу: создание Заказа по Контрагенту, читаем ответственного записи в Контрагенте, добавляем права доступа на Заказ для пользователя, которого тянем из Ответственного за контрагент. Причем, с помощью элемента Изменить права доступа можно выдавать права как пользователю, так и роли.

Полезная информация про особенности элемента есть в статье: https://academy.terrasoft.ru/documents/technic-bpms/7-12/element-keysa-…

Единственный недостаток - придется создавать отдельный процесс под каждый вид деятельности. Так, для создания Заказа с Контрагента или Продукта с Контрагента будет использоваться каждый отдельный процесс.

Успехов!

Реестр заказов администрируется по записям?

Если да, то решается 2 небольшими бп по раздаче прав.

1) При добавлении/изменении заказа, смотрим контрагент.Ответственный, выдаём ему права.

2) При изменении отв. в контрагенте, смотрим заказы, раздаём новому отв. права. (отбираем у старого?? если да, то придётся "попотеть", ибо GetTypedOldColumnValue объекта известно на saving, а не saved => надо лезть в событийный бп объекта)

 

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