Имя: Пароль:
1C
1С v8
v8: RLS: Простенький, по одному регистру. По подразделениям
,
0 Alterife
 
10.06.13
11:12
В каждом документе есть реквизит "Подразделение".
Настройки пользователя из типовой УТ - план видов характеристик + регистр сведений.
Добавлен регистр сведений "ОграничениеПравПользователей" со следующими измерениями:
- Пользователь
- подразделение

Задача: создать RLS для документов по подразделениям, определённым в регистре для пользователя.

...Честно, я первый раз сталкиваюсь с созданием RLS с нуля, совсем запутался с препроцессором, со всякими "ТекущаяТаблица" и синтаксисом языка запросов в нём.

Help! Заранее спасибо.
1 Maxus43
 
10.06.13
11:18
возьми из типовой, скопипасти и всё. чуть подправив на измерение
2 IШаман
 
10.06.13
11:20
Я не первый раз с ними сталкиваюсь, но всегда ощущения примерно такие же.
3 Alterife
 
10.06.13
11:27
(1) Из какой типовой? По подразделениям нашёл в УПП, но там ТАКОЕ!!! О.о
4 Maxus43
 
10.06.13
11:30
(3) ну его и бери)
5 Alterife
 
10.06.13
11:34
(4) Нихачу.
6 zladenuw
 
10.06.13
11:34
(3) а что там не понятного.
а выбираешь объект. с права ограничение доступа к данным.
пишешь имя шаблона например #ВШапке("УровеньДоступа")

и сам шаблон
ТекущаяТаблица Из #ТекущаяТаблица КАК ТекущаяТаблица

ГДЕ ВЫБОР
           КОГДА  ТекущаяТаблица.#Параметр(1)  в (&УровеньДоступа) тогда Истина иначе Ложь конец
УровеньДоступа это параметр сеанса
7 zladenuw
 
10.06.13
11:34
(6) хотя можно вроде и без ВЫБОР КОГДА, а просто
ГДЕ ТекущаяТаблица.#Параметр(1)  в (&УровеньДоступа)
8 Alterife
 
10.06.13
11:37
(6), (7) Я с шаблонами и запутался. Препроцессоры, там, параметры всякие... Как я понял, в шаблон засунуть всегда можно. Мне бы для простоты хотя бы запрос, как он должен быть в правой части таблицы "Ограничение доступа".

Ещё вопрос: для каких полей накладывать ограничение? Подозреваю, что на поле "Ссылка". Да?
9 Kreont
 
10.06.13
11:38
попробуй сначала не шаблон делай, а через конструктор сделать для одного документа, а потом перенесешь
10 zladenuw
 
10.06.13
11:41
11 Alterife
 
10.06.13
11:41
(9) Вот это-то и надо! Что там как кого куда? Запрос "странный" получается, без заголовка. Как я понял, если по условию элементы из текущей таблицы попадают в него - они видны пользователю. Так?
12 Alterife
 
10.06.13
11:41
(10) Thanx a lot! ща пофтыкаю...
13 zladenuw
 
10.06.13
11:47
(12) а вообще погугли. статей много. может какие то из них тебе будут полезные
14 Alterife
 
10.06.13
11:48
(13) Погуглил. Создалось впечатление, что все эти статьи (за редким приведённым выше исключением) можно озаглавить "Гля, гля, как я могу! А ты - нет!".
15 fisher
 
10.06.13
11:51
(0) Хочешь добрый совет по производительности? Не делай как в типовых. Не определяй объекты доступа в самих RLS (хотя в новые типовые не заглядывал - может, там уже и не так). С группами доступа и другими наворотами (которые имеют тенденцию наслаиваться) сильно накладно получается. Как правило, результирующий список объектов доступа для пользователя относительно невелик.
Удобно определять списки объектов доступа однократно при старте системы и запихивать их в параметры сеанса типа "Фиксированный массив". А в RLS будет только простое условие на них.
(11) Да. Причем условия можно делать не обязательно в ГДЕ. Можно тупо джойнить. На самом деле, платформа всю эту бодягу суёт в ВЫБОР, а уже потом по нему условие накладывает.
16 Alterife
 
10.06.13
11:54
(0)
1. Конечно! Потому и "нихачу" выдёргивать из типовых. Тупо - свой "плоский" регистр и два измерения. Ну понадобится по организациям или складам - не беда, ещё измерений сделаю.
2. Вот тут-то у меня непонятки и возникают. ((
17 fisher
 
10.06.13
11:56
(16) Нифига ты не понял. Ну и хрен с тобой.
18 LehhaK
 
10.06.13
11:57
Пффф.. на чтение документа пишешь "Где подразделение в &ДоступныеПодразделенияПользователя" ДоступныеПодразделенияПользователя - это параметр сеанса. Устанавливай его при начале работы системы. и все
19 Alterife
 
10.06.13
12:00
(18) О! Миленько... Спасибо!
20 LehhaK
 
10.06.13
12:01
(19) В 15 тоже самое только подробнее описано
21 Alterife
 
10.06.13
12:01
(17) А у Вас, уважаемый, если не секрет, какого числа-месяца ДР?
22 fisher
 
10.06.13
12:15
(21) Секрет. Полишинеля.