|
Настройка RLS для чтения списка РС (производ-й режим) | ☑ | ||
---|---|---|---|---|
0
maskitone
18.04.24
✎
12:42
|
В расширении (адаптация) создан регистр сведений «ОбмТК_ДанныеЗаказовТК» (непериодический, независимый).
Одно из измерений РС - «ДокументИБ» , с типом Определяемый Тип (создан в расширении) с допустимыми заимствованными типами ДокументСсылка: реализации, приобретения, заказы клиентам, поставщикам, корректировки реализаций, приобретений, возвраты клиентам, поставщикам (по сути заказы и первичка по ним). Форма списка РС с основной таблицей «РегистрСведений.ОбмТК_ДанныеЗаказовТК» имеет поле «ДокументИБ» ссылочного типа. Если у пользователя нет прав на чтение документа ИБ, то он отображается кракозябрами. Задача: при использовании производительного RLS ограничить /запретить пользователю с ролью Чтение и Просмотр РС отображение на форме списка РС записи, где в измерении «ДокументИБ» указан документ, на которых у пользователя нет прав на чтение. Все остальные записи (где ДокументИБ не заполнен, Null, пустая ссылка, или указан доступный для чтении /просмотра документИБ) – отображать в списке. Что сделано: 1.в расширение заимствован определяемый тип «ВладелецЗначенийКлючейДоступаНаборЗаписей» куда внесен наш РС. Режим совместимости 8.3.21 позволяет это сделать с заимствованным Определяемым типом. Добавленый РС в режиме предприятие в этом опред.типе есть, проверил. 2.В расширение заимствован модуль «УправлениеДоступомПереопределяемый», куда добавлен код: «&После("ПриЗаполненииСписковСОграничениемДоступа") Процедура ОбмТК_ПриЗаполненииСписковСОграничениемДоступа(Списки) Списки.Вставить(Метаданные.РегистрыСведений.ОбмТК_ДанныеЗаказовТК, Истина); КонецПроцедуры». 3.В модуль менеджер РС добавлен код: «Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт Ограничение.Текст = "РазрешитьЧтениеИзменение |ГДЕ | ЧтениеОбъектаРазрешено(ДокументИБ, ПустаяСсылка КАК Истина,Неопределено КАК Истина,Null КАК Истина)"; Ограничение.ТекстДляВнешнихПользователей = "РазрешитьЧтениеИзменение |ГДЕ | ЧтениеОбъектаРазрешено(ДокументИБ, ПустаяСсылка КАК Истина,Неопределено КАК Истина,Null КАК Истина)"; КонецПроцедуры». 4.В роль расширения добавлены права на чтение и просмотр РС. Для Чтения внесено ограничение по шаблону: «#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда #ДляРегистра("ИдентификаторыОбъектовРасширений.РегистрСведенийОбмТК_ДанныеЗаказовТК", "ДокументИБ", "", "", "", "") #Иначе ИСТИНА #КонецЕсли». 5.В расширение заимствован справочник ИдентификаторыОбъектовРасширений, куда добавлено предопределенные объект «РегистрСведенийОбмТК_ДанныеЗаказовТК». Сам объект индентификатораОбъектаРасширения для нового РС имеет флаг «Предопределенный» с указанием имени предопределенного элемента. 6.Сама роль входит в состав вновь созданной подсистемы, как и РС. Результат: пользователь в такой ролью видит в списке только те записи, где документ ИБ не указан, вне зависимости от того есть у него права на чтение/просмотр этого документа или нет. Перед проверкой делается запуск ИБ в режиме обновления, перезаполняются данные ограничения доступа. РС «Ключи доступа к регистрам» заполнен записями для указанных в РС ДокументовИБ: "Имя реквизита Значение реквизита ВариантДоступа 2 КлючДоступа 0c1cb423-fd66-11ee-81a5-b06ebf5bb0d3 Поле1 Заказ поставщику ТДУТ-000835 от 04.04.2024 14:58:07 Поле2 Null Поле3 Null Поле4 Null Поле5 Null Регистр Обмен с ТК - данные доставок через ТК (Регистр сведений)" И есть там же одна запись для неуказанных ДокументовИБ: "Имя реквизита Значение реквизита ВариантДоступа 2 КлючДоступа 5ab0f94d-fc02-11ee-81a5-b06ebf5bb0d3 Поле1 Поле2 Null Поле3 Null Поле4 Null Поле5 Null Регистр Обмен с ТК - данные доставок через ТК (Регистр сведений)" Вопрос: почему RLS для РС не работает как задумано??? Почему пользователь указывает в записе ДокументИБ (который он видит конечно) и эта запись пропадает из списка? |
|||
1
Волшебник
18.04.24
✎
22:26
|
Потому что RLS для ЕRP был сгенерирован и хрен Вы там разберётесь
|
|||
2
maskitone
19.04.24
✎
01:00
|
(1) но надо. Проблема именно в использовании шаблона ПоРегистру. Если использовать ЧтениеОбъектаРазрешено(ДокументИБ), то обработка бсп генерит шаблон #ПоОбъекту(ДокументИБ) для роли. В этом случае видно записи с документом ИБ, но не видно записей с незаполненным полем ДокументИБ.Если добавляем условие неопределенно как истина, то генерится уже шаблон ПоРегистру. И вот он уже не отрабатывает доступ на чтение документа. Толи шаблон кривой, Толи в базе не все заполняется...
Приходится усложнять код и прописывать условия в коде"неопределенно как истина" и т.п. но для кода с условием обработка выдает уже шаблон #ПоРегистру(...). И вот этот шаблон отрабатывает не верно. Или у базе не заполняются какие-то данные. При этом ключи доступа для записей с документомИБформируются со значением на другой |
|||
3
Волшебник
19.04.24
✎
01:05
|
(2) Счастья вам и везения
|
|||
4
FIXXXL
19.04.24
✎
09:07
|
c RLS - только пробовать и думать
ибо во все времена шаблоны писали люд(ь)и, которые знают, как эта херь работает под капотом я разбирался с типовым, ускорение в 5 раз :) из-за точки в Т.Контрагент.Менеджер, к примеру, а надо было соединение, да еще найти во всех "","","","","":) куда это воткнуть писал свое, но это жесткий пиздей, высчитывать все эти запятые в шаблоне :) теперь есть еще вариант... |
|||
5
FIXXXL
19.04.24
✎
09:08
|
>Если у пользователя нет прав на чтение документа ИБ, то он отображается кракозябрами
а может стОит в форму кинуть на ДС свой запрос и добавить РАЗРЕШЕННЫЕ ;) |
|||
6
mikecool
19.04.24
✎
09:16
|
(4) производительный режим избавляет от этих запятых, но как его заставить работать - хз
сейчас тоже для нового документа по мануалу сделал все - и ничего не работает ) ключи не создаются, ограничения не работают )) |
|||
7
maxab72
19.04.24
✎
09:18
|
(0) Если в расширении, то забейте на типовой шаблон. Напишите свое правило. Оно будет компактное, легко читаемое и быстрое (если понимаете, что пишете). И сопровождать его будет легко.
|
|||
8
viraboy
19.04.24
✎
12:00
|
(0) Через обновление вспомогательных данных пробовали обновить все данные по ограничениям и ключи? Бывает при изменении шаблона БСП не видит изменений. И если убрать условие на пустые - что будет? По идее доступные документы должен только отображать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |