RLS настройка ограничений доступа #206981


#0 by hotZED
Много где описан механизм настройки RLS, но, по-моему, не совсем понятно, принцип написания запросов. Например, интересует, чем отличаются код от или Т.е. меня интересует, когда использовать "Внутреннее", "Левое" соединения, и когда "Где"? Можно где-нибудь про это поподробнее узнать? Или хотя бы натолкните на смысл... А то разбираться методом проб и ошибок достаточно долго. Заранее спасибо.
#1 by Хемуль
Про соединения прочитай в описании языка запросов (если в этом вопрос). Ведь язык запросов RLS - всего лишь подмножество "обычного" языка запросов. Результат первых двух конструкций будет одинаковым. Это будет декартовое произведение множеств. Если условие соединения - ПО ИСТИНА, то пофих какое оно левое, правое, полное внешнее. Количество значений в выборке будет = Кол-во записей в таб1 * Кол-во записей в таб2. Не встречал использование полного соединения в практических задачах... А вот если условие соединения нормальное (т.е. по каким-либо полям), то использование условия в "ГДЕ" или в соединении приобретает смысл. Но это проще на примере каких-нить реальных таблиц объяснить...
#2 by hotZED
А можно написать примеры запросов, чтобы понять как оно действует?
#3 by Хемуль
В описании встроенного языка вроде изложено про соединения. Книга 2. Глава 2. Работа с запросами. Подраздел Спецификация соединений. Там и примеры запросов и результаты их выполнения. А вообще возьми таблицу справочника Пользователи, таблицу РС НастройкиПользователей и посоединяй их разными способами. Потом добавь новый элемент в спр. Пользователи, посоединяй.
#4 by hotZED
Да-а-а... Методом проб и ошибок вывел закономерность. Но на это ушло время, а хотел, чтобы, раз!, и все получилось :-) Ну да ладно, всем спасибо!
#5 by hotZED
А можно ли узнать из модуля формы при открытии некого объекта, доступен ли этот объект на редактирование для данного пользователя при настроенных RLS? Например, есть справочник из 10 элементов, из которых пользователю видно 4 (остальные не отображаются, т.к. у него нет доступа на чтение), а из этих 4-х всего 1 доступен на редактирование. Так как при открытии какого-либо элемента из 3-х доступных только для чтения, в форме установить только просмотр? Чтобы пользовател уже не пытался его записать, т.к. все равно появится сообщение о недостаточности прав на исполнение операций над базой.
#6 by IronDemon
Можно Для проверки прав текущего пользователя используются специализированные методы глобального контекста ПравоДоступа и ПараметрыДоступа.
#7 by IronDemon
Синтаксис: ПараметрыДоступа(<Наименование права>, <Объект метаданных>, <СписокПолей>) Параметры: <Наименование права> (обязательный) Тип: Строка. Наименование запрашиваемого на объект права, например "Read". <Объект метаданных> (обязательный) Тип: ОбъектМетаданных. Объект метаданных, права на доступ к которому проверяются. <СписокПолей> (обязательный) Тип: Строка. Список полей объекта базы данных, права на доступ к которым проверяются. Поля указываются списком, через запятую. Могут присутствовать имена табличных частей, реквизитов табличных частей, в последнем случае поле описывается как <ИмяТабличнойЧасти>.<ИмяРеквизитаТабличнойЧасти>. Возвращаемое значение: Тип: ПараметрыДоступа. Описание: Позволяет получить права текущего пользователя на заданный объект метаданных с указанием полей. См. также: ПараметрыДоступа
#8 by hotZED
А причем тут ПравоДоступа и ПараметрыДоступа? Они же привязываются конкретно к объектам метаданных, а не отдельным объектам. А мне хотелось бы разграничить именно по объектам, находящимся в базе.
#9 by Гений 1С
Неужели это ты, ХотЗэд??? Ты же на РЛС собаку съел, чего прикидываешься?
#10 by Гений 1С
Засунь РЛС на редактирование сам знаешь куда. Уже сто раз на мисте звучало - имеют право на жизнь только РЛС на чтение. В 8.1. ваще будут ловушки событий - нафига тогда рЛС на запись???
#11 by Гений 1С
Перепиши пока не позно РЛС на запись на проверку доступа в модуле
#12 by hotZED
Гений, я-я... Только переписывать модули не хочется - типовая, а менять нужно только безопасность... Вот и думал, как бы только ролями обойтись, что не очень конечно прикольно, но ... По поводу того, что РЛС нужно тока для ограничения по чтению - думаю, что это верно, но всё равно надо отлавливать те объекты, которые можно редактировать, и те, которые мона тока смотреть...
#13 by Гений 1С
истину глаголю тебе - лучше 10 часов попотеть, зато потом за 5 минут долететь. сделай затычки во все перед записью через парсинг - и в путь... А в 8.1 ваще появятся триггеры, сам их щупал... Так что не иди путем РЛС, это путь в некуда. А ты действительно тот ХЗ, про которого я думаю?
#14 by Гений 1С
Кстати, если лень парсить, поставь затычки в проводки - в модуль набора записей, правда это только на проведение, снятие с проведения... Ну или еще создай план обмена, при записи будет вызываться событие по выдаче объекта в план обмена, тут то ты и подсекешь
#15 by hotZED
Спасибо, Гений 1С, ты всегда умел подкинуть хорошую идею ;-) Буду ставить затычки (надеясь, что всё-таки 1С-овцы скоро выпустят 8.1 и на неё перейдем)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С