Как бы нам упростить RLS?

Будем говорить только про RLS на чтение, чтобы убрать видимость части объектов.

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

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

1С попыталось сделать в БСП-типовых универсальный метод RLS, когда для каждого пользователя рассчитывается доступен ему объект или нет. Ну или в документообороте был расчет по группам объектов. Недостаток — длительный пересчет и большой объем регистра.

Я как-то пытался сделать гибкие универсальные права, но тоже споткнулся на этих ограничениях.

Я тогда подумал, что было бы неплохо генерировать права с помощью расширений, а расширения генерировать на летку, с нужным кодом. Но это не будет работать во Fresh, например. Да и реализация довольно сложная. Но был бы заказчик — сделал бы.

И вот недавно мне пришла в голову мысль, как это изящно обойти.

Создается ПВХ «Виды доступа» и регистр сведений для объектов, по которым нужно разграничение RLS с измерениями Объект, «Вид доступа» и реквизитом «Значение доступа».

При записи объекта этот регистр заполняется.

Также администратором заполняются правила вида доступа.

Рассмотрим пример. Всех пользователей делим на группы «Бухгалтер», «Менеджер», «Полный» в виде доступа «Вид пользователя». Для простоты реквизит будет иметь тип «Строка».

Тогда правила вида доступа будут:

Вид документа = Платежное поручение, Вид доступа = Менеджер, Доступ = нет
Вид документа = Платежное поручение, Вид доступа = Бухгалтер, Доступ = да
Вид документа = Платежное поручение, Вид доступа = Полный, Доступ = да

Если делать вид доступа по организации, то можно использовать вспомогательный вид доступа, который не записывается в регистр, а берется из реквизита документа:

Вид документа = *, Вид доступа = Организация, Доступ = если равно

В общем, суть идеи в том, чтобы сохранять ключевые для доступа параметры документа, а проверку делать универсально.

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

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

  1. rzd:

    И как это поможет Васи смотреть заказы только по складу Север, с контрагентами, у которых менеджером указан сам Вася?
    А на время отсутствия Пети надо Васи добавить прав смотреть склад Юг и аналогично клиентов по менеджеру Петя? При этом не давать смотреть Север+Петя, например?

    • Вы слишком углубились в детали, не проанализировав концепцию в целом. Классическое «за деревьями не вижу леса».

      • rzd:

        Потому что концепция не описана совсем.
        Вот и опиши. Желательно с примером

        • Все, что я хочу описать, я описываю. Остальные пожелания — по моему официальному тарифу

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *