Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 07:04

8.3 RLS. Как настроить, если права берутся из двух регистров сведений

Автор Holly, 24 дек 2015, 12:42

0 Пользователей и 1 гость просматривают эту тему.

Holly

Здравствуйте, в 1С начинающая.

Есть три справочника "Подразделения", "Направления" и "Пользователи".
Есть регистры сведений "ПраваПоПодразделениям" (Подразделения + Пользователи) и "ПраваПоНаправлениям" (Направления + Пользователи).

Необходимо настроить права доступа по подразделениям и по направлениями. Для каждого есть отдельная форма.

Настройка доступа по подразделениям уже есть (сделано до меня), реализована частично в модулях, частично ограничением доступа к данным на уровне объектов.

Мне нужно интегрировать туда же настройку доступа по направлениям. В модуле все более менее понятно: доступ строится на запросе из РегистрСведений.ПраваПоПодразделениям, поэтому можно добавить к нему через "ОБЪЕДИНИТЬ ВСЕ" запрос из РегистрСведений.ПраваПоНаправлениям.


А вот с настройкой доступа к данным (RLS) мне не понятно.

Если настроено ограничение доступа по РегистрСведений.ПраваПоПодразделениям, то как лучше интегрировать туда РегистрСведений.ПраваПоНаправлениям?

Правильно ли я понимаю, что при добавлении условия используется логическое И, поэтому просто добавление новой строки с ограничением из РегистрСведений.ПраваПоНаправлению не прокатит и нужно переписывать запрос? И включить "ОБЪЕДИНИТЬ ВСЕ" в RLS тоже возможности нет? Просто не хочется трогать то, что уже работает.


vitasw

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

Теги: RLS 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск