|
RLS и запросы (<Объект не найден>) | ☑ | ||
---|---|---|---|---|
0
UnsavedSoul
03.03.14
✎
17:55
|
Как известно, наложив RLS на справочник Склады, например, выбирая все элементы справочника без РАЗРЕШЕННЫЕ наткнемся на исключение, а с ним - увидим в результате только те элементы, которые удовлетворяют условию RLS. Однако, обращаясь к таблице остатков регистра накопления и выбирая в качестве результирующего поля склад, мы увидим остатки по всем складам, вот только у тех записей, что условию RLS по справочнику Склады не удовлетворяют, в соответствующем поле будет красоваться <Объект не найден>. Собственно вопрос, как от него избавиться?:) Пока пришло в голову только создание ВТ с разрешенными складами и ограничение результирующего запроса только теми складами, что есть в ВТ. Есть у кого еще какие мысли?
Вопрос встал в процессе разработки отчета для пользователей с RLS в ролях, и, соответственно, в отчете задействованы эти самые таблицы с ограничениями. |
|||
1
Господин ПЖ
03.03.14
✎
17:59
|
>Собственно вопрос, как от него избавиться?
от кого? |
|||
2
UnsavedSoul
03.03.14
✎
18:00
|
От <Объект не найден> в результате запроса
|
|||
3
Господин ПЖ
03.03.14
✎
18:00
|
>Пока пришло в голову только создание ВТ с разрешенными складами и ограничение результирующего запроса только теми складами, что есть в ВТ
наложить на таблицу RLS нормальный - никак? |
|||
4
UnsavedSoul
03.03.14
✎
18:02
|
Что значит "нормальный"?
|
|||
5
Господин ПЖ
03.03.14
✎
18:04
|
после наложения которого таких веток не возникает...
|
|||
6
UnsavedSoul
03.03.14
✎
18:07
|
В справочнике "Склады" 5 элементов, согласно условию RLS пользователю доступны только 3 из них.
Результатом запроса "ВЫБРАТЬ РАЗРЕШЕННЫЕ * ИЗ Справочник.Склады" будут 3 записи, удовлетворяющие условию. А результатом запроса к таблице остатков регистра накопления, в котором есть измерение "Склад" будут все(!) записи, вот только в поле Склад результата запроса для разрешенных складов будет ссылка на склад, а для тех,что не прошли проверку по RLS - <Объект не найден>. И если стоит задача пользователю с такими ограничениями сформировать отчет по остаткам, то как быть с этими записями <Объект не найден>? |
|||
7
ale-sarin
03.03.14
✎
18:08
|
(4) Так на регистр еще надо РЛС наложить. или положить. или покласть.
|
|||
8
Maxus43
03.03.14
✎
18:10
|
(6) ещё РЛС на регистр покласть, чтоб не смогли читать остатки по этому складу
|
|||
9
Wobland
03.03.14
✎
18:10
|
(6) юзеру количество кто-то запретил видеть?
|
|||
10
Господин ПЖ
03.03.14
✎
18:10
|
(6) ты наложил rls на таблицу складов, что дает в таблице РН (а на нее свои права) "объект не найден" - ибо "перекрыты" поля формирующие представление ссылки... на РН твой RLS не действует
что не понятно то.... |
|||
11
UnsavedSoul
03.03.14
✎
18:12
|
(10) это-то мне как раз и понятно! Непонятно, как с этим быть? Неужели только RLS на регистр?
|
|||
12
Wobland
03.03.14
✎
18:12
|
ну почему только? ВТ со складами, пост-обработка запроса, раскрашивание результирующего ТабДокумента...
|
|||
13
Maxus43
03.03.14
✎
18:13
|
(12) и так на все типовые отчеты...)
|
|||
14
Wobland
03.03.14
✎
18:13
|
(13) ну надо как-то зряплату оправдывать ;)
|
|||
15
Господин ПЖ
03.03.14
✎
18:13
|
(11) а что должно быть?
|
|||
16
ale-sarin
03.03.14
✎
18:13
|
(11) А че смущает? Типовые гляньте.
|
|||
17
Жан Пердежон
03.03.14
✎
18:15
|
(11) еще вариант: добавь в запрос наименование склада
|
|||
18
Wobland
03.03.14
✎
18:16
|
(17) типа, если ссылку запрещено читать, будем читать наименование?
|
|||
19
Maxus43
03.03.14
✎
18:17
|
(18) да тож ничо вариант, типа в спсике мы видим, а вот зайти в элемент, подрихтовать - низя
|
|||
20
Жан Пердежон
03.03.14
✎
18:17
|
(18) ссылку то как раз читать и не запрещено
|
|||
21
UnsavedSoul
03.03.14
✎
18:18
|
(15) Хотелось бы убрать эти записи из результата зепроса.
|
|||
22
Господин ПЖ
03.03.14
✎
18:19
|
(17) смысл глубинный... в списке склада нет, а данные видно?
|
|||
23
Wobland
03.03.14
✎
18:19
|
(21) благословить?
|
|||
24
Господин ПЖ
03.03.14
✎
18:20
|
(21) rls накладывай на РН нормальный... можно взять из типовой подходящий по смыслу шаблон если разрезов может быть несколько... или самому нарисовать
|
|||
25
Жан Пердежон
03.03.14
✎
18:20
|
(22) сработает ограничение "Разрешенные"
|
|||
26
UnsavedSoul
03.03.14
✎
18:20
|
(23) Нет, помочь подобрать инструмент.
|
|||
27
Господин ПЖ
03.03.14
✎
18:21
|
(25) в каком месте?
|
|||
28
Wobland
03.03.14
✎
18:21
|
(26) БСП
|
|||
29
Maxus43
03.03.14
✎
18:21
|
(26) РЛС на регистр, говорили же ужо
|
|||
30
fisher
03.03.14
✎
18:21
|
(26) RLS надо накладывать на все таблицы, к которым они должны применяться. В том числе и на регистры. Никакого интеллектуального "изъятия" записей, содержащих ссылки на неразрешенные записи в другой таблице платформа не делает.
|
|||
31
fisher
03.03.14
✎
18:23
|
Да! И про журналы тоже не забудь.
|
|||
32
UnsavedSoul
03.03.14
✎
18:27
|
(17) (25)
Спасибо! Это вариант мне нравится больше: в таком случае вместо наименования получаем Null, а по нему уже отобрать никаких проблем, что на уровне запроса, что на уровне СКД. |
|||
33
Жан Пердежон
03.03.14
✎
18:27
|
(27) в запросе. но это скорее костыль, который можно использовать, если тс нельзя менять конфу
|
|||
34
fisher
03.03.14
✎
18:30
|
(32) Отличный вариант. Вместо того, чтобы надежно и централизованно решить проблему раз и навсегда, будем всю жизнь в куче мест костыли втыкать.
|
|||
35
Господин ПЖ
03.03.14
✎
18:32
|
(33) так себе вариант имхо... я такое делал в конфе, в которой наоборот надо было убрать лишнее, а поля формирующие ссылки были выведены из-под rls
|
|||
36
UnsavedSoul
03.03.14
✎
18:35
|
(30) (31)
Спасибо! Поведение платформы в случае работы с RLS мне понятно, хотелось бы просто максимально быстрое решение в рамках разработки одного отчета. (34) Согласен, однако в данном случае грамотная настройка RLS означает изменение всех объектов метаданных, ссылающихся на справочник Склады. Это нецелесообразно в рамках решения проблемы формирования одного отчета. |
|||
37
kiruha
03.03.14
✎
18:36
|
(32)
Издеваешься ? Разрешенные склады во временную клади На регистр условие - склад из этой временной |
|||
38
Жан Пердежон
03.03.14
✎
18:38
|
(32) какая версия платформы? какой запрос? никаких доп.отборов по NULL быть не должно; в любом случае еще в (7) самый правильный ответ был.
|
|||
39
UnsavedSoul
03.03.14
✎
18:44
|
(38)
8.2.19.83 <code>ВЫБРАТЬ РАЗРЕШЕННЫЕ ТоварыНаСкладахОстатки.Склад ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстатки</code> В складах RLS на ссылку с условием <code>ГДЕ Наименование <> "Склад Магазина №1" И Наименование <> "Склад Магазина №2"</code> |
|||
40
fisher
03.03.14
✎
18:45
|
(39) <рука-лицо>
|
|||
41
Wobland
03.03.14
✎
18:48
|
(39) различные сильно ускорит этот запрос, но какая в пень разница, когда (40)?..
|
|||
42
UnsavedSoul
03.03.14
✎
18:50
|
В итоге:
1. Единственный корректный вариант использования RLS - это настройка во всех таблицах, имеющих ссылки на таблицу с данными, к которым ограничиваем доступ; 2. Первый костыль. В запросе используем временную таблица с разрешенными записями, а потом фильтруем с помощью этих данных результирующий запрос; 3. Второй костыль. Выбираем в запросе любое поле из таблицы с RLS, получаем в результирующем запросе Null и фильтруем по нему. |
|||
43
UnsavedSoul
03.03.14
✎
18:51
|
Всем откликнувшимся и действительно пытавшимся помочь - спасибо.
|
|||
44
UnsavedSoul
03.03.14
✎
18:53
|
(40) (41)
Разумеется это просто запрос из головы, но выполнение которого приведет к аналогичному результату. К нему и применял советы, есличо. |
|||
45
Wobland
03.03.14
✎
18:53
|
4. взывать к наименованию только под страхом лишения конечностей или суставов
|
|||
46
kiruha
03.03.14
✎
18:55
|
1)
ВЫБРАТЬ РАЗРЕШЕННЫЕ Склады.ССылка КАК Склад Поместить РазрешенныеСклады ИЗ Справочник.Склады КАК Склады; ВЫБРАТЬ РАЗРЕШЕННЫЕ .... ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(,Склад В (Выбрать Склад ИЗ РазрешенныеСклады ) ) КАК ТоварыНаСкладахОстатки Этого достаточно . Вот если есть ограничение более сложное Организация + Склад - то придется еще спец регистр заводить 2) Либо РЛС на регистр |
|||
47
fisher
03.03.14
✎
19:03
|
В самописках, если количество объектов доступа небольшое а используется много где (склады, подразделения и т.п.) и вычисляется не так уж тривиально (группы пользователей и т.п.), я обычно при старте сеанса пихал объекты доступа пользователя в параметры сеанса типа ФиксированныйМассив.
А во всех RLS простое условие на принадлежность массиву. ИМХО, шустрее этого ничего нету. |
|||
48
UnsavedSoul
03.03.14
✎
19:17
|
(46)
Большое спасибо. (47) Да, конечно, если все делать по-православному (согласно руководству разработчика), то именно такой инструментарий и следует использовать. |
|||
49
Лефмихалыч
03.03.14
✎
21:27
|
(6) заставь себя наложить rls и на регистр тоже. Или кого-нибудь еще заставь
|
|||
50
Лефмихалыч
03.03.14
✎
21:29
|
(48) а если всё делать через жопу и с закрытыми глазами, то получается <объект не найден>. Это штука неприятная, "последствия" называется
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |