Имя: Пароль:
1C
1С v8
Как настроить RLS к табличной части
,
0 vde69
 
18.10.21
21:28
есть справочник А у него ТЧ с реквизитами ПВХ и ЗначениеПВХ

есть где-то регистр аналогичной структуры в котором у каждого пользователя проставлены разрешенные ему типы и значения ПВХ

необходимо состряпать запрос (для RLS, а там есть ограничения) который будет выдавать элементы А у которого все возможные виды ПВХ имеют хотя-бы по одному разрешенному значению, видов ПВХ ограниченое количество, по этому можно на каждый вид делать отдельный джойн.


хитрость в том, что
1. нельзя делать вложенный запрос с группировкой (справочник большой...)
2. нельзя использовать агрегатные функции в условиях ждойна (это ограничения RLS)
3. соединения выходят многое ко многим и не выходит собрать вместе даже пару разных типов

примерно это так
эл справочника А имеет ТЧ в которой есть такие записи
Размер-Средний
Размер-Маленький
Цвет-Зеленый
Цвет-Красный

регистр прав для пользователя содержит
Размер-Средний
Цвет-Синий
Цвет-Зеленый
Цвет-Красный

совпадают размер и цвет

Штатно задача вроде не решается, нужно придумать что-то хитрое,
1 pechkin
 
18.10.21
21:47
Если есть 1 недоступный, то вся тч и с ней документ недоступен?
2 H A D G E H O G s
 
18.10.21
22:09
ВЫБРАТЬ
    НоменклатураХарактеристики.Ссылка КАК Ссылка
ИЗ
    Справочник.Номенклатура.Характеристики КАК НоменклатураХарактеристики
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Фильтр КАК Фильтр
        ПО (Фильтр.Свойство = НоменклатураХарактеристики.Свойство)
            И (Фильтр.Значение = НоменклатураХарактеристики.Значение)

СГРУППИРОВАТЬ ПО
    НоменклатураХарактеристики.Ссылка

ИМЕЮЩИЕ
    СУММА(1) = &КоличествоХарактеристик

КоличествоХарактеристик вычислять в Модуле сеанса, хранить в параметрах сеанса
3 RomanYS
 
18.10.21
22:09
Если количество свойств известно заранее

Справочник ГДЕ Справочник.Ссылка В
            (ВЫБРАТЬ
                ТЧ.Ссылка КАК Ссылка
            ИЗ
                Справочник.Справочник4.ТЧ КАК ТЧ
                    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСведений2 КАК Рег
                    ПО
                        ТЧ.А = Рег.А
                            И ТЧ.Б = Рег.Б
            СГРУППИРОВАТЬ ПО
                ТЧ.Ссылка
            ИМЕЮЩИЕ
                СУММА(1) = &КоличествоСвойств)
4 H A D G E H O G s
 
18.10.21
22:09
Но план запроса надо смотреть
5 pechkin
 
18.10.21
22:16
Может лучше вычислять доступные, как в "быстром" рлс?
6 vde69
 
19.10.21
09:01
(1) да
(2) ИМЕЮЩИЕ - разве можно использовать в RLS?
7 Ненавижу 1С
 
гуру
19.10.21
09:02
(6) это обычный оператор SQL, почему нет?
8 vde69
 
19.10.21
09:04
пока рассматриваю такой вариант

делаем доп регистр,
измерение
1. ссылка
реквизиты
1. размер
2. цвет
3.
4. - другие виды

при записи жлемента справочника записывать все возможные комбинации в этот регистр
9 vde69
 
19.10.21
09:18
(3) не пойдет, в примере (0) вернет 3 а не 2, то есть если доступ будет по нескольким полям одного типа то будет врать
10 RomanYS
 
19.10.21
11:47
(9) ну значит Сумма(1) заменить на количество(различные ТЧ.Свойство)