Добрый день, коллеги.
Как настроить права доступа таким образом, чтобы пользователь, ответственный за контрагента, имел доступ ко всем записям, где участвует этот контрагент?
Например: по контрагенту создан заказ, в контрагенту ответственный Петров, а в заказе Иванов. Но Петров должен видеть заказ, созданный Ивановым.
PS сейчас права доступа настроены таким образом, что каждый пользователь может видеть только свои записи. Так и должно остаться, за исключением вышеуказанной логики.
Заранее спасибо!
Нравится
Здравствуйте, Дарина!
Наиболее оптимальным вариантом вижу реализацию через бизнес-процесс с использованием элемента Изменить права доступа в нем. Основное преимущество этого решения в том, что через процесс вы будете добавлять прямые права конкретному пользователю, при этом убирать старые права совсем не обязательно.
Например, процесс, который запускался бы по сигналу: создание Заказа по Контрагенту, читаем ответственного записи в Контрагенте, добавляем права доступа на Заказ для пользователя, которого тянем из Ответственного за контрагент. Причем, с помощью элемента Изменить права доступа можно выдавать права как пользователю, так и роли.
Полезная информация про особенности элемента есть в статье: https://academy.terrasoft.ru/documents/technic-bpms/7-12/element-keysa-…
Единственный недостаток - придется создавать отдельный процесс под каждый вид деятельности. Так, для создания Заказа с Контрагента или Продукта с Контрагента будет использоваться каждый отдельный процесс.
Успехов!
Реестр заказов администрируется по записям?
Если да, то решается 2 небольшими бп по раздаче прав.
1) При добавлении/изменении заказа, смотрим контрагент.Ответственный, выдаём ему права.
2) При изменении отв. в контрагенте, смотрим заказы, раздаём новому отв. права. (отбираем у старого?? если да, то придётся "попотеть", ибо GetTypedOldColumnValue объекта известно на saving, а не saved => надо лезть в событийный бп объекта)