вопрос про ограничения по полям записи
18.10.2009
21:19
#1
Здравствуйте!<br>Недавно начал изучать RLS. )<br>Если ограничить доступ на чтение поля записей объекта (ограничение вида "ГДЕ ЛОЖЬ"), при запросе к этому объекту вообще не выводятся записи. Пожалуйста, подскажите, как же сделать так, чтобы выводились только поля, у которых нет ограничения на чтение? Это возможно сделать только с помощью данного механизма, не трогая запрос?<br>Заранее спасибо за помощь!
19.10.2009
09:40
#2
Вопрос не ясен.<br>Вот пример (как я себе это представляю): В RLS задаем 3 уровня доступа (разные поля): 1) на основные вещи (ссылка, пометка удаления, ...), 2) на поля, которые хотим видеть, но так чтобы нельзя было редактировать, 3) на все остальные поля.<br>Итак, если человек принадлежит к 3-ей категории, то он может открыть форму элемента, т.к. может прочитать все. Если человек из второй категории, и в списке только поля из 1) и 2), то он сможет видеть список, но *** откроет элемент - прав не хватит. А если человек из категории 1), тогда он сможет спокойно выполнять запросы, где может встериться ссылка на такие элементы, но список ему будет закрыт (исключение в случае, если список только из полей Код и Наименование (для справочника)). Ну а если человек вообще "за бортом" - даже запрос не выполниться.<br>Это если все делаете сами. Если же вам интересно, как не исправляя уже текущего запроса, используя уже написанный механизм в конфигурации, увидеть элемент, то тут вопросов еще больше возникает: какая конфигурация, какой релиз, какой объект хотите увидеть?
19.10.2009
12:07
#3
Спасибо большое за ответ!<br>Уточняю вопрос:<br>Исходные данные:<br>конфигурация УПП 1.2.23.2, справочник "Банки" , роль "Пользователь" (пользователю ИБ назначена только роль "Пользователь").<br><br>Для роли "Пользователь" в свойствах объекта я добавил ограничение на чтение "ГДЕ ЛОЖЬ" по полю "КоррСчет".<br>В режиме "Предприятие" с помощью консоли запросов выполняю простой запрос вывода списка записей:<br><br>"ВЫБРАТЬ РАЗРЕШЕННЫЕ<br> Банки.Код,<br> Банки.Наименование,<br> Банки.КоррСчет<br>ИЗ<br> Справочник.Банки КАК Банки"<br><br>Выводится пустой список. <br><br>Если убрать из запроса строку<br><br>" Банки.КоррСчет"<br><br>выводятся все записи.<br><br>Получается, что ограничение накладывается на записи, а не на поля?<br><br>Вопрос: как выводить записи без данных поля "КоррСчет" (Этого можно добиться только средствами RLS?)<br>
19.10.2009
12:28
#4
RLS - ограничивает доступ, а вы хотите получить "не все". Оно так не умеет.<br>Исправляйте запрос, иначе никак.
19.10.2009
12:40
#5
to BelikovS:<br><br>Спасибо, так и сделаю! Кажется понял. Получается, что если в запросе встречается поле, доступ к которому запрещён, то ограничивается доступ ко всей записи...<br>Пожалуйста, посоветуйте, как тогда решать задачи вывода только нужных полей в отчётах? Например, пользователям с одной ролью нужны все поля в отчёте, с другими ролями - только часть?<br>Через параметры сеанса и дополнительный регистр сведений? Добавить проверку пользователей и условия отбора в запрос?
19.10.2009
13:09
#6
Интересная задача. В "своем" отчете это еще решается, а в стандартных - думаю не получиться.<br>Впринципе, если поставить RLS и правильно формировать запрос (только по полям, которые показываются), тогда получиться, что те, у кого есть права - будет видеть, а у кого нет - получат пустой, если попытаются увидеть (добавят для показа) запрещенную колонку.<br>Другой вариант (опять-таки в своем отчете) - при формировании запроса, "затирать" поля (типа: " Как КоррСчет), если прав не достаточно.<br>У нас пока такой задачи не возникало, так что идеи "сырые".
Читают тему
(гостей: 1)