|
Как настроить разграничение доступа к документам в зависимости | ☑ | ||
---|---|---|---|---|
0
MP-40
27.07.12
✎
12:38
|
Привет!
Подскажите, как настроить разграничение доступа к документам в зависимости от реквизитов в карточке пользователей? База - старая переделенная торговля на 1с81. В карточке пользователей есть реквизит подразделение, так вот, необходимо чтобы пользователи могли открывать только документы с совпадающим значением подразделения (или подразделением подчиненным подразделению пользователя). Может есть какие типовые механизмы, чтобы такое сделать? |
|||
1
John83
27.07.12
✎
12:40
|
насколько помню, типовых механизмов ограничений по подразделениям нет...
смотри, как сделано по тем же организациям |
|||
2
IronDemon
27.07.12
✎
12:44
|
"В карточке" - в РС ПраваДоступаПользователей?
|
|||
3
MP-40
27.07.12
✎
12:47
|
(2) не, это реквизит справочника Пользователи.
|
|||
4
MP-40
27.07.12
✎
12:50
|
В регистре права доступа пользователей вроде ссылки на конкретные объекты, а не на тип объекта (т.е. например - документ вида Заказ покупателя). Планирую потом сделать дополнительное разграничение и еще по какому-то реквизиту. Только не найду как это сделать по простому.
|
|||
5
IronDemon
27.07.12
✎
12:51
|
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
ГДЕ ВЫБОР КОГДА 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 КАК ПолеОтбора ГДЕ ВЫБОР КОГДА ТекущаяТаблица.#Параметр(1) ССЫЛКА Справочник.Подразделения И (НЕ ТекущаяТаблица.#Параметр(1) = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)) ТОГДА ВЫБОР КОГДА 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 КАК ПолеОтбора ИЗ (ВЫБРАТЬ 1 КАК ПолеОтбора ) КАК Оптимизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК ПраваДоступаПользователей ПО ПраваДоступаПользователей.Пользователь В (&ГруппыТекущегоПользователя) И ПраваДоступаПользователей.ОбластьДанных = &ОбластьДанныхМенеджераПоПродажам И ВЫРАЗИТЬ(ПраваДоступаПользователей.ОбъектДоступа КАК Справочник.Склады).Подразделение В (ВЫБРАТЬ Подразделения.Ссылка ИЗ Справочник.Подразделения КАК Подразделения ГДЕ Подразделения.Ссылка = ТекущаяТаблица.#Параметр(1) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Подразделения.Родитель ИЗ Справочник.Подразделения КАК Подразделения ГДЕ Подразделения.Ссылка = ТекущаяТаблица.#Параметр(1) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Подразделения.Родитель.Родитель ИЗ Справочник.Подразделения КАК Подразделения ГДЕ Подразделения.Ссылка = ТекущаяТаблица.#Параметр(1))) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ ИНАЧЕ ИСТИНА КОНЕЦ) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ Меняй шаблон :) |
|||
6
MP-40
27.07.12
✎
12:56
|
(5) я с этим никогда не работал, эм.. это шаблон ограничения для роли так?
|
|||
7
IronDemon
27.07.12
✎
13:07
|
Да, чтобы в каждом ограничении не писать запрос.
|
|||
8
IronDemon
27.07.12
✎
13:08
|
Запрос для изменения:
ВЫБРАТЬ Оптимизация.ПолеОтбора ИЗ (ВЫБРАТЬ 1 КАК ПолеОтбора) КАК Оптимизация ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК ПраваДоступаПользователей ПО (ПраваДоступаПользователей.Пользователь В (&ГруппыТекущегоПользователя)) И (ПраваДоступаПользователей.ОбластьДанных = &ОбластьДанныхМенеджераПоПродажам) И (ВЫРАЗИТЬ(ПраваДоступаПользователей.ОбъектДоступа КАК Справочник.Склады).Подразделение В (ВЫБРАТЬ Подразделения.Ссылка ИЗ Справочник.Подразделения КАК Подразделения ГДЕ Подразделения.Ссылка = &Параметр ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Подразделения.Родитель ИЗ Справочник.Подразделения КАК Подразделения ГДЕ Подразделения.Ссылка = &Параметр ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Подразделения.Родитель.Родитель ИЗ Справочник.Подразделения КАК Подразделения ГДЕ Подразделения.Ссылка = &Параметр)) |
|||
9
MP-40
27.07.12
✎
13:12
|
(8) а зачем один и тот же запрос с самим собой объединять?
|
|||
10
MP-40
27.07.12
✎
13:12
|
т.е. :
ВЫБРАТЬ Подразделения.Родитель ИЗ Справочник.Подразделения КАК Подразделения ГДЕ Подразделения.Ссылка = &Параметр ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Подразделения.Родитель.Родитель ИЗ Справочник.Подразделения КАК Подразделения ГДЕ Подразделения.Ссылка = &Параметр |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |