RLS (Record Level Security) или ограничение прав на уровне записи - то есть для каждого пользователя мы сможем распределить права по организациям, контрагентам, подразделениям...
Для примера была разработана конфигурация в которой наглядно показано как можно использовать РЛС при разработке конфигурации с нуля(конфигурацию вы сможете скачать в данной статье, но только в том случае если вы зарегистрированы на сайте)
В конфигурации был разработан справочник "Настройка РЛС", в котором для пользователя можно назначить ограничения по организациям, подразделениям или контрагентам.
Естественно что каждый может реализовать на свой вкус, цель статьи показать принцип работы
Также была добавлена роль "Полные права (ограничение на уровне записи)" для которой настраивались RLS права.
Пример №1: "Доступ к справочнику контрагенты"
Открываем роль, находим справочник "Контрагенты" и в ограничении доступа (для чтения) добавляем запрос:
Контрагенты ИЗ (ВЫБРАТЬ
НастройкаРЛС.ОграниченияПоКонтрагентам КАК ОграниченияПоКонтрагентам,
НастройкаРЛС.Пользователь КАК Пользователь
ИЗ
Справочник.НастройкаРЛС КАК НастройкаРЛС
ГДЕ
НастройкаРЛС.Пользователь = &ТекущийПользователь) КАК ВложенныйЗапрос, Справочник.Контрагенты КАК Контрагенты
ГДЕ ВЫБОР
КОГДА ВложенныйЗапрос.ОграниченияПоКонтрагентам
ТОГДА Контрагенты.Ссылка В
(ВЫБРАТЬ
ОграниченияПоКонтрагентам.Контрагент
ИЗ
Справочник.НастройкаРЛС.Контрагенты КАК ОграниченияПоКонтрагентам
СГРУППИРОВАТЬ ПО
ОграниченияПоКонтрагентам.Контрагент)
ИНАЧЕ 1 = 1
КОНЕЦ
НастройкаРЛС.ОграниченияПоКонтрагентам КАК ОграниченияПоКонтрагентам,
НастройкаРЛС.Пользователь КАК Пользователь
ИЗ
Справочник.НастройкаРЛС КАК НастройкаРЛС
ГДЕ
НастройкаРЛС.Пользователь = &ТекущийПользователь) КАК ВложенныйЗапрос, Справочник.Контрагенты КАК Контрагенты
ГДЕ ВЫБОР
КОГДА ВложенныйЗапрос.ОграниченияПоКонтрагентам
ТОГДА Контрагенты.Ссылка В
(ВЫБРАТЬ
ОграниченияПоКонтрагентам.Контрагент
ИЗ
Справочник.НастройкаРЛС.Контрагенты КАК ОграниченияПоКонтрагентам
СГРУППИРОВАТЬ ПО
ОграниченияПоКонтрагентам.Контрагент)
ИНАЧЕ 1 = 1
КОНЕЦ
Пример №2: "Ограничения к документу"
Для "Документ тест", запрос будет выглядит следующим образом:
ДокументТест ИЗ Документ.ДокументТест КАК ДокументТест, (ВЫБРАТЬ
МАКСИМУМ(НастройкаРЛС.ОграниченияПоОрганизациям) КАК ОграниченияПоОрганизациям,
МАКСИМУМ(НастройкаРЛС.ОграниченияПоКонтрагентам) КАК ОграниченияПоКонтрагентам,
МАКСИМУМ(НастройкаРЛС.ОграниченияПоПодразделениям) КАК ОграниченияПоПодразделениям
ИЗ
Справочник.НастройкаРЛС КАК НастройкаРЛС
ГДЕ
НастройкаРЛС.Пользователь = &ТекущийПользователь) КАК ВложенныйЗапрос
ГДЕ ВЫБОР
КОГДА ВложенныйЗапрос.ОграниченияПоОрганизациям
ТОГДА ДокументТест.Организация В
(ВЫБРАТЬ
НастройкаРЛСОрганизации.Организация
ИЗ
Справочник.НастройкаРЛС.Организации КАК НастройкаРЛСОрганизации
СГРУППИРОВАТЬ ПО
НастройкаРЛСОрганизации.Организация)
ИНАЧЕ 1 = 1
КОНЕЦ
И ВЫБОР
КОГДА ВложенныйЗапрос.ОграниченияПоКонтрагентам
ТОГДА ДокументТест.Контрагент В
(ВЫБРАТЬ
НастройкаРЛСКонтрагенты.Контрагент
ИЗ
Справочник.НастройкаРЛС.Контрагенты КАК НастройкаРЛСКонтрагенты
СГРУППИРОВАТЬ ПО
НастройкаРЛСКонтрагенты.Контрагент)
ИНАЧЕ 1 = 1
КОНЕЦ
И ВЫБОР
КОГДА ВложенныйЗапрос.ОграниченияПоПодразделениям
ТОГДА ДокументТест.Подразделения В
(ВЫБРАТЬ
НастройкаРЛСПодразделения.Подразделение
ИЗ
Справочник.НастройкаРЛС.Подразделения КАК НастройкаРЛСПодразделения
СГРУППИРОВАТЬ ПО
НастройкаРЛСПодразделения.Подразделение)
ИНАЧЕ 1 = 1
КОНЕЦ
МАКСИМУМ(НастройкаРЛС.ОграниченияПоОрганизациям) КАК ОграниченияПоОрганизациям,
МАКСИМУМ(НастройкаРЛС.ОграниченияПоКонтрагентам) КАК ОграниченияПоКонтрагентам,
МАКСИМУМ(НастройкаРЛС.ОграниченияПоПодразделениям) КАК ОграниченияПоПодразделениям
ИЗ
Справочник.НастройкаРЛС КАК НастройкаРЛС
ГДЕ
НастройкаРЛС.Пользователь = &ТекущийПользователь) КАК ВложенныйЗапрос
ГДЕ ВЫБОР
КОГДА ВложенныйЗапрос.ОграниченияПоОрганизациям
ТОГДА ДокументТест.Организация В
(ВЫБРАТЬ
НастройкаРЛСОрганизации.Организация
ИЗ
Справочник.НастройкаРЛС.Организации КАК НастройкаРЛСОрганизации
СГРУППИРОВАТЬ ПО
НастройкаРЛСОрганизации.Организация)
ИНАЧЕ 1 = 1
КОНЕЦ
И ВЫБОР
КОГДА ВложенныйЗапрос.ОграниченияПоКонтрагентам
ТОГДА ДокументТест.Контрагент В
(ВЫБРАТЬ
НастройкаРЛСКонтрагенты.Контрагент
ИЗ
Справочник.НастройкаРЛС.Контрагенты КАК НастройкаРЛСКонтрагенты
СГРУППИРОВАТЬ ПО
НастройкаРЛСКонтрагенты.Контрагент)
ИНАЧЕ 1 = 1
КОНЕЦ
И ВЫБОР
КОГДА ВложенныйЗапрос.ОграниченияПоПодразделениям
ТОГДА ДокументТест.Подразделения В
(ВЫБРАТЬ
НастройкаРЛСПодразделения.Подразделение
ИЗ
Справочник.НастройкаРЛС.Подразделения КАК НастройкаРЛСПодразделения
СГРУППИРОВАТЬ ПО
НастройкаРЛСПодразделения.Подразделение)
ИНАЧЕ 1 = 1
КОНЕЦ
Комментариев нет:
Отправить комментарий