![]() |
|
RLS ограничение доступа "В ИЕРАРХИИ" | ☑ | ||
---|---|---|---|---|
0
SeriyP
29.03.17
✎
14:11
|
УТ 10.3.41.1
Коллеги подскажите, как реализовать в Справочники.Номенклатура ограничение доступа на уровне записей, чтобы пользователи могли работать только с номенклатурой "в иерархии" определенной папки? Естественно понимаю, что RLS не поддерживает "В Иерархии" (а так хотелось), а только "В". Я пробовал создать ПараметрыСеанса.ДоступныеПапкиНоменклатуры - ФиксированныйМассив, в нем - ссылка на корневую папку. В правах пользователя: ГДЕ Родитель В(&ДоступныеПапкиНоменклатуры), в полях ставил "Прочие поля", "Ссылка" - результат одинаков: вообще никакие папки из справочника не видны. |
|||
1
FIXXXL
29.03.17
✎
14:13
|
(0) не взлетит
делай через РС |
|||
2
FIXXXL
29.03.17
✎
14:13
|
но вообще задача - источник тормозов
|
|||
3
SeriyP
29.03.17
✎
14:15
|
(1) Что есть "РС"?
|
|||
4
SeriyP
29.03.17
✎
14:16
|
РегистрСведений?
|
|||
5
FIXXXL
29.03.17
✎
14:17
|
(4) да
|
|||
6
SeriyP
29.03.17
✎
14:18
|
Подскажи, куда копать!
|
|||
7
FIXXXL
29.03.17
✎
14:19
|
тебе надо "складировать" доступную (или запрещенную) номенклатуру в РС или в параметр сеанса (если изменения номенклатуры нечастые) и уже складированную использовать в запросе РЛС
|
|||
8
SeriyP
29.03.17
✎
14:21
|
Т.е. идем от обратного: запрещаем доступ ко всем папкам, кроме разрешенных?
|
|||
9
Волшебник
модератор
29.03.17
✎
14:22
|
(8) Это как раз прямой путь
|
|||
10
FIXXXL
29.03.17
✎
14:23
|
(8) тебе виднее, исходи из массы запрещено-разрешено
чего меньше - то и складируй |
|||
11
SeriyP
29.03.17
✎
14:24
|
Хорошо. Тогда запрещаем доступ "иерархически" или все запрещенные нужно перечислить в Регистре или Параметре сеанса?
|
|||
12
Волшебник
модератор
29.03.17
✎
14:26
|
(11) В регистре права могут храниться и группы, но при запуске нужно заполнять параметр сеанса с учётом иерархии и в RLS проверять уже параметр сеанса.
|
|||
13
FIXXXL
29.03.17
✎
14:26
|
(11) складируешь список номенклатуры
как формировать список - твой код т.е. при добавлении-изменении-удалении элементов справочника должен список складированный обновляться |
|||
14
youalex
29.03.17
✎
14:26
|
можно иерархию развернуть в РС, и на него завязываться.
|
|||
15
Волшебник
модератор
29.03.17
✎
14:26
|
(12)+ Кстати, хорошо бы предусмотреть его обновление не только при запуске, но и при открытии справочника, например, потому что данные или права могут меняться.
|
|||
16
Diman000
29.03.17
✎
14:27
|
Тормозить все это будет...
RLS просто пишется, но медленно работает. RLS это В ЛЮБОЙ запрос прикрутка твоего ограничения. Кроме привилегированного режима. Для начала подумай может как-то без RLS обойтись... |
|||
17
Волшебник
модератор
29.03.17
✎
14:27
|
(14) тогда её придётся обновлять. Бе...
|
|||
18
youalex
29.03.17
✎
14:31
|
(17) ну да, в подписках. Структура не так часто меняется, как правило. Места много не отъест.
|
|||
19
azt-yur
29.03.17
✎
14:36
|
(18) можно реализовать как
ГДЕ Родитель В (&ДоступныеПапкиНоменклатуры) ИЛИ Родитель.Родитель В (&ДоступныеПапкиНоменклатуры) ИЛИ Родитель.Родитель.Родитель В (&ДоступныеПапкиНоменклатуры) и так на максимально разумное количество уровней и переписывать регистр не придется |
|||
20
FIXXXL
29.03.17
✎
14:40
|
(19) я бы не трогал папки совсем, только номенклатуру
|
|||
21
azt-yur
29.03.17
✎
14:44
|
(16) RLS-ом здорово разграничивать права на чтение объектов, чтобы недоступные даже не отображались, чего другими средствами и не добьешься. А если надо только запретить на запись, то с точки зрения скорости работы лучше использовать подписки на события.
|
|||
22
youalex
29.03.17
✎
14:46
|
(19)
РС - нужно будет писать только при изменении иерархии , а вот куча соединений в запросе по РЛС - будет постоянно (20) А если элемент перенесут в другую группу? Это тоже нужно будет отслеживать. С параметрами сеанса будет вообще засада - в плане 1) их актуальности 2) быстродействия условия IN () при большом массиве. |
|||
23
Анютик
29.03.17
✎
14:50
|
Вот тут хорошо описано, реализовывала по примеру
http://programmist1s.ru/nastroyka-rls-ogranichenie-dostupa-na-urovne-zapisey-1s/ |
|||
24
Hmster
29.03.17
✎
14:50
|
(0) что значит "могли рабтать", они не должны видеть или не должны ее в документы пихать?
Если ты закроешь ее через рлс, а баба Маня с полными правами создаст документ с обычной и запрещенной номенклатурой, то как с этим документом будут работать тем у кого есть ограничения? |
|||
25
SeriyP
29.03.17
✎
15:05
|
(24) Не должны видеть. а в таком документе будет наверное - ""Объект не найден"?
|
|||
26
Hmster
29.03.17
✎
17:00
|
(25) не просто объект не найден, но и с документом скорее всего сделать ничего не смогут, и в отчетах будет весело. Особенно когда у разных людей начнет отчет по продажам не сходится.
|
|||
27
Волшебник
модератор
29.03.17
✎
20:36
|
(26) В этом случае в заголовке отчёта надо написать дисклаймер "ДАННЫЕ ОГРАНИЧЕНЫ ПРАВАМИ ДОСТУПА"
|
|||
28
SeriyP
30.03.17
✎
10:48
|
Всем спасибо за мнения!
Только вот начали углубляться и обобщать. а у меня ситуация попроще: в корне справочника Номенклатура заведено с десяток разных папок, а продавцы работают (= чтение/просмотр) только с корневой папкой "Товары" в которой еще около 1000 подпапок. Вот и нужно обеспечить, чтобы им лишнее "перед глазами не мелькало", когда они чек набивают или счет, или заказ. а то, что их база не пустит в какой-то отчет или не нужный им документ - нечего лазать. |
|||
29
Анютик
30.03.17
✎
10:56
|
(28) а отбором в списке не проще будет решить? может даже и быстрее выйдет, чем с рлс. Раз именно для удобства, а не разграничения прав.
|
|||
30
SeriyP
30.03.17
✎
11:01
|
(29) Интересная мысль. Можно по подробнее?
|
|||
31
Фрэнки
30.03.17
✎
11:08
|
у вас режим работы программы в управляемых формах?
Ну так сделайте свою форму списка и форму выбора, в новой форме укажите в динамическом списке все нужные условия в запросе. |
|||
32
SeriyP
30.03.17
✎
11:17
|
(31) Формы обычные
|
|||
33
SeriyP
31.03.17
✎
16:49
|
(29) В общем к чему пришел.
В процедуре ПередОткрытием ФормыСписка Справочники.Номенклатура такое: отбор.Ссылка.значение = Справочники.Номенклатура.НайтиПоНаименованию("Товары"); //это одна из корневых папок Отбор.Ссылка.Использование = Истина; Отбор.Ссылка.ВидСравнения = ВидСравнения.ВИерархии; В общем-то уже не плохо, но теперь в ФормеСписка остальные папки все равно отображаются - только пустые. Помогите понять, можно ли в таком варианте не отображать остальные ненужные папки? |
|||
34
SeriyP
31.03.17
✎
16:53
|
(33) + Помогла тема v8: Как сделать, чтобы при открытии справочника одна папка была не видна?
|
|||
35
Михаил Козлов
31.03.17
✎
16:56
|
(33) Доступ к справочнику может быть не только в форме списка.
Делал такое примерно как в (8). Штатный механизм раздувал регистр прав доступа и тормозило. Теперь в регистре только папки - особых тормозов не заметно. |
|||
36
SeriyP
31.03.17
✎
17:00
|
(35) Согласен. Но пока речь про ФормуСписка.
Показать, что в RLS в таком варианте можете? |
|||
37
Михаил Козлов
31.03.17
✎
17:21
|
(36)
спр ИЗ Справочник.Номенклатура КАК спр ГДЕ НЕ &ТекущиеОграничения ИЛИ ( спр.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ Права.ОбъектДоступа ИЗ РегистрСведений.ПраваДоступаПользователей КАК Права ГДЕ Права.Пользователь В (&ГруппыТекущегоПользователя) ) ИЛИ спр.Родитель В (ВЫБРАТЬ РАЗЛИЧНЫЕ Права.ОбъектДоступа ИЗ РегистрСведений.ПраваДоступаПользователей КАК Права ГДЕ Права.Пользователь В (&ГруппыТекущегоПользователя) И Права.ВидНаследованияПравДоступаИерархическихСправочников = ЗНАЧЕНИЕ(Перечисление.ВидыНаследованияПравДоступаИерархическихСправочников.РаспространитьНаПодчиненных) ) ИЛИ спр.Родитель.Родитель В (ВЫБРАТЬ РАЗЛИЧНЫЕ Права.ОбъектДоступа ИЗ РегистрСведений.ПраваДоступаПользователей КАК Права ГДЕ Права.Пользователь В (&ГруппыТекущегоПользователя) И Права.ВидНаследованияПравДоступаИерархическихСправочников = ЗНАЧЕНИЕ(Перечисление.ВидыНаследованияПравДоступаИерархическихСправочников.РаспространитьНаПодчиненных) ) ИЛИ спр.Родитель.Родитель.Родитель В (ВЫБРАТЬ РАЗЛИЧНЫЕ Права.ОбъектДоступа ИЗ РегистрСведений.ПраваДоступаПользователей КАК Права ГДЕ Права.Пользователь В (&ГруппыТекущегоПользователя) И Права.ВидНаследованияПравДоступаИерархическихСправочников = ЗНАЧЕНИЕ(Перечисление.ВидыНаследованияПравДоступаИерархическихСправочников.РаспространитьНаПодчиненных) ) ИЛИ спр.Родитель.Родитель.Родитель.Родитель В (ВЫБРАТЬ РАЗЛИЧНЫЕ Права.ОбъектДоступа ИЗ РегистрСведений.ПраваДоступаПользователей КАК Права ГДЕ Права.Пользователь В (&ГруппыТекущегоПользователя) И Права.ВидНаследованияПравДоступаИерархическихСправочников = ЗНАЧЕНИЕ(Перечисление.ВидыНаследованияПравДоступаИерархическихСправочников.РаспространитьНаПодчиненных) ) ) &ТекущиеОграничения - параметр сеанса (булево). Иногда нужно "отключать" RLS, вот этим параметром и отключаем. Конфа древняя (12 лет) на базе УТ 10.2. Смысл тот же, что и в (8). |
|||
38
SeriyP
31.03.17
✎
17:23
|
(37) Красота. Надо переварить. Спасибо!
|
|||
39
rphosts
01.04.17
✎
01:04
|
(33) через отчеты это не ограничит доступ
|
|||
40
SeriyP
03.04.17
✎
09:28
|
(39) Естественно не ограничит, там речь идет об ограничении отображения номенклатуры в списке.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |