|
Вопрос по RLS | ☑ | ||
---|---|---|---|---|
0
Лялечка
15.03.12
✎
10:35
|
Добрый день! Помогите, пожалуйста, с запросом. Ситуация следующая.
На регистр сведений "БизнесПроцессы" прописано ограничение по правам доступа: ТекущаяТаблица Из #ТекущаяТаблица КАК ТекущаяТаблица ГДЕ ВЫБОР КОГДА ТекущаяТаблица.Ответственный = &ТекущийПользователь ИЛИ ТекущаяТаблица.Ответственный.Подразделение.Родитель = &ТекущееПодразделение ИЛИ ТекущаяТаблица.Ответственный.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ ТекущаяТаблица.Ответственный.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ИЛИ ТекущаяТаблица.Инициатор = &ТекущийПользователь ИЛИ ТекущаяТаблица.Инициатор.Подразделение.Родитель = &ТекущееПодразделение ИЛИ ТекущаяТаблица.Инициатор.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ ТекущаяТаблица.Инициатор.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ИЛИ ТекущаяТаблица.Исполнитель = &ТекущийПользователь ИЛИ ТекущаяТаблица.Исполнитель.Подразделение.Родитель = &ТекущееПодразделение ИЛИ ТекущаяТаблица.Исполнитель.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ ТекущаяТаблица.Исполнитель.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА ТекущаяТаблица.ПроектКО ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ ТекущаяТаблица.ПроектКО.УчастникиПроекта.УчастникПроекта = &ТекущийПользователь ИЛИ ТекущаяТаблица.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель = &ТекущееПодразделение ИЛИ ТекущаяТаблица.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ ТекущаяТаблица.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение КОНЕЦ КОНЕЦ Пользователь 1 является исполнителем бизнес-процесса. В регистре запись следующая: БизнесПроцесс| Исполнитель | ПроектКО | ------------------------------------------ Поручение 1 | Пользователь 1 | | ------------------------------------------ Выполняю этот запрос в консоли запросов и получается, что пользователь доступа к бизнес-процессу не имеет, хотя является его исполнителем. Что я делаю не так?:( Заранее благодарна. |
|||
1
golden-pack
15.03.12
✎
10:40
|
(0) Текст запроса из консоли
|
|||
2
Лялечка
15.03.12
✎
10:45
|
(1)
ВЫБРАТЬ БизнесПроцессы.БизнесПроцесс Из РегистрСведений.CRM_БизнесПроцессы КАК БизнесПроцессы ГДЕ ВЫБОР КОГДА БизнесПроцессы.Ответственный = &ТекущийПользователь ИЛИ БизнесПроцессы.Ответственный.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Ответственный.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Ответственный.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Инициатор = &ТекущийПользователь ИЛИ БизнесПроцессы.Инициатор.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Инициатор.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Инициатор.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Исполнитель = &ТекущийПользователь ИЛИ БизнесПроцессы.Исполнитель.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Исполнитель.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Исполнитель.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА БизнесПроцессы.ПроектКО ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта = &ТекущийПользователь ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение КОНЕЦ КОНЕЦ |
|||
3
golden-pack
15.03.12
✎
10:47
|
(2) В регистре Исполнитель - "Пользователь1" и &ТекущийПользователь = "Пользователь1" ?
Условие 100000% отработает ИЛИ БизнесПроцессы.Исполнитель = &ТекущийПользователь |
|||
4
Лялечка
15.03.12
✎
10:48
|
В регистре Исполнитель = Пользователь 1 и &ТекущийПользователь = Пользователь 1 я же сама его выбирала в консоли в параметры. Я вот тоже думала, что отработает, а не отрабатывает(((
|
|||
5
golden-pack
15.03.12
✎
10:50
|
(4) Не может быть.
|
|||
6
golden-pack
15.03.12
✎
10:51
|
Выбрать * ИЗ Справочник.Пользователи КАк Спр Где Спр.Ссылка = &ТекущийПользователь
? |
|||
7
Лялечка
15.03.12
✎
10:51
|
(5) ну я не знаю...вот оно не отрабатывает
|
|||
8
Лялечка
15.03.12
✎
10:53
|
(6) не поняла, что сделать?
|
|||
9
golden-pack
15.03.12
✎
10:53
|
(8) выполнить запрос из (6) в консоли
|
|||
10
Лялечка
15.03.12
✎
10:54
|
ну выполнила и что? пользователя моего выбирает
|
|||
11
Лялечка
15.03.12
✎
10:54
|
Пользователь в справочнике точно есть
|
|||
12
freddy_kind
15.03.12
✎
10:55
|
насколько я знаю, без фотки не заработает))
|
|||
13
golden-pack
15.03.12
✎
10:55
|
БизнесПроцессы.БизнесПроцесс Из РегистрСведений.CRM_БизнесПроцессы КАК БизнесПроцессы ГДЕ БизнесПроцессы.Исполнитель = &ТекущийПользователь
а так ? |
|||
14
Лялечка
15.03.12
✎
10:57
|
И так мое поручение выбирает
|
|||
15
Лялечка
15.03.12
✎
10:58
|
(12) держите фото)
|
|||
16
Лялечка
15.03.12
✎
10:58
|
(12) хотя сначала и без фотки заработало)
|
|||
17
freddy_kind
15.03.12
✎
10:59
|
(16))) все таки это как то связано)
|
|||
18
Лялечка
15.03.12
✎
10:59
|
(17) ты помочь можешь чем-нибудь?
|
|||
19
Лялечка
15.03.12
✎
11:01
|
(13) если в консоли принудительно не задавать текущее подразделение, то записи выбираются, но все равно не все, и те, которые нужны не попадают
|
|||
20
golden-pack
15.03.12
✎
11:09
|
(19) непонятно.
исходя из (6) и (13) ---> (2) должно работать |
|||
21
Лялечка
15.03.12
✎
11:10
|
Вот такой запрос отрабатывает правильно:
ВЫБРАТЬ БизнесПроцессы.БизнесПроцесс Из РегистрСведений.CRM_БизнесПроцессы КАК БизнесПроцессы ГДЕ ВЫБОР КОГДА БизнесПроцессы.Ответственный = &ТекущийПользователь ИЛИ БизнесПроцессы.Ответственный.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Ответственный.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Ответственный.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Инициатор = &ТекущийПользователь ИЛИ БизнесПроцессы.Инициатор.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Инициатор.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Инициатор.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Исполнитель = &ТекущийПользователь ИЛИ БизнесПроцессы.Исполнитель.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Исполнитель.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Исполнитель.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ Как только в ИНАЧЕ добавляю ВЫБОР КОГДА БизнесПроцессы.ПроектКО ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта = &ТекущийПользователь ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение КОНЕЦ Сразу все не работает((( |
|||
22
Лялечка
15.03.12
✎
11:14
|
почему он вообще в ИНАЧЕ лезет, если у меня испольнитель = Пользователь1
|
|||
23
Лялечка
15.03.12
✎
11:19
|
БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта = &ТекущийПользователь
ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение Эти 4 строчки все портят(( если вместо них ЛОЖЬ просто написать, то работает((( |
|||
24
Лялечка
15.03.12
✎
11:56
|
ни у кого больше нет соображений никаких?:( получается, что если поручение не привязано к проекту, то пользователь не имеет к нему доступа, даже если является исполнителем...кто подскажет как исправить запрос?
|
|||
25
Конфигуратор1с
15.03.12
✎
12:01
|
(23) "БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель = &ТекущееПодразделение
ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение" а почему не "БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение в иерархии(&ТекущееПодразделение)"? |
|||
26
Лялечка
15.03.12
✎
12:06
|
(24) потому что это RLS там В ИЕРАРХИИ нельзя использовать
|
|||
27
Конфигуратор1с
15.03.12
✎
12:07
|
(26)тогда сорри - я с рлс не работал
|
|||
28
Лялечка
15.03.12
✎
12:11
|
(27) да разницы практически никакой. Почему-то запрос все время выполняет секцию ИНАЧЕ...ну почему такое может быть?
|
|||
29
155153144627
15.03.12
✎
13:34
|
(21)
ВЫБОР КОГДА БизнесПроцессы.ПроектКО ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ Когда БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта = &ТекущийПользователь ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение Тогда Истина КОНЕЦ |
|||
30
Лялечка
15.03.12
✎
14:25
|
(29) ничего не изменилось, все так же не работает((
|
|||
31
Лялечка
15.03.12
✎
14:25
|
(29)
ИНАЧЕ ВЫБОР КОГДА БизнесПроцессы.ПроектКО ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ Выбор КОГДА БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта = &ТекущийПользователь ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ТОГДА ИСТИНА Конец КОНЕЦ КОНЕЦ |
|||
32
golden-pack
15.03.12
✎
16:59
|
(31) откуда БизнесПроцессы.ПроектКО ---> NULL ? Составной тип ?
|
|||
33
Лялечка
15.03.12
✎
17:02
|
(32) я уже поменяла на БизнесПроцессы.ПроектКО = ЗНАЧЕНИЕ(Справочник.ПроектыКО.ПустаяСсылка)
|
|||
34
Лялечка
15.03.12
✎
17:03
|
ограничение прописано на право "Чтение" и на строчке кода
НаборБП = РегистрыСведений.CRM_БизнесПроцессы.СоздатьНаборЗаписей(); НаборБП.Отбор.БизнесПроцесс.Установить(БизнесПроцесс.Ссылка); НаборБП.Прочитать(); все валится и выдается сообщение, недостаточно прав доступа. Я не понимаю в чем причина:( |
|||
38
Лялечка
15.03.12
✎
17:28
|
(35) ТекущийПользователь и ТекущееПодразделение это параметры сеанса
|
|||
39
Лялечка
15.03.12
✎
17:29
|
(36) результата никакого((
|
|||
41
vde69
15.03.12
✎
17:30
|
(0) АФИГЕТЬ!!!
БизнесПроцессы.Исполнитель.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение во первых в RLS просто нельзя юзать через две точки (будут тормоза) во вторых что вернет все условие если подразделение только 2 уровня? БизнесПроцессы.Исполнитель.Подразделение.Родитель.Родитель.Родитель - будет NULL а значит и все условие будет возвращать ложь |
|||
42
Лялечка
15.03.12
✎
17:32
|
(40) редактирую точно ту роль
|
|||
43
Лялечка
15.03.12
✎
17:33
|
(41) как проверить иерархию? нужно, чтобы пользователь, который по иерархии находится выше, имел доступ к бизнес-процессам
|
|||
44
Лялечка
15.03.12
✎
17:36
|
(36) если убрать условие:
ВЫБОР КОГДА ПроектКО.УчастникиПроекта.УчастникПроекта = &ТекущийПользователь ИЛИ ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель = &ТекущееПодразделение ИЛИ ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ то выводится то, что надо, но необходимо еще проверять наличие участника в проекте, и если он там есть, то он также должен видеть этот бизнес-процесс, даже, если он не инициатор, исполнитель или ответственный |
|||
46
Лялечка
15.03.12
✎
17:41
|
(45)да, табличная часть справочника
|
|||
48
Лялечка
15.03.12
✎
17:53
|
(47) ок, спасибо, завтра попробую, рабочий день закончен, да и голова уже готова взорваться
|
|||
49
Лялечка
16.03.12
✎
11:36
|
Добрый день! Обращаюсь по вчерашнему вопросу снова:( Никак ничего не получается(( Переписала запрос:
ВЫБРАТЬ БизнесПроцессы.БизнесПроцесс ИЗ РегистрСведений.CRM_БизнесПроцессы КАК БизнесПроцессы ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчастникиПроектаКО.СрезПоследних КАК УчастникиПроектаКОСрезПоследних ПО БизнесПроцессы.ПроектКО = УчастникиПроектаКОСрезПоследних.ПроектКО.Ссылка ГДЕ ВЫБОР КОГДА БизнесПроцессы.Ответственный = &ТекущийПользователь ИЛИ БизнесПроцессы.Ответственный.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Ответственный.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Ответственный.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Инициатор = &ТекущийПользователь ИЛИ БизнесПроцессы.Инициатор.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Инициатор.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Инициатор.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Исполнитель = &ТекущийПользователь ИЛИ БизнесПроцессы.Исполнитель.Подразделение.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Исполнитель.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ БизнесПроцессы.Исполнитель.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА БизнесПроцессы.ПроектКО <> ЗНАЧЕНИЕ(Справочник.ПроектыКО.ПустаяСсылка) ТОГДА УчастникиПроектаКОСрезПоследних.УчастникПроекта.Ссылка = &ТекущийПользователь ИЛИ УчастникиПроектаКОСрезПоследних.УчастникПроекта.Подразделение.Родитель = &ТекущееПодразделение ИЛИ УчастникиПроектаКОСрезПоследних.УчастникПроекта.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ УчастникиПроектаКОСрезПоследних.УчастникПроекта.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ Выполняю запрос в консоли ТекущийПользователь = Пользователь1. Все работает правильно. Пишу тот же запрос в RLS на чтение для регистра БизнесПроцессы. Захожу под Пользователем1 и пытаюсь выполнить отказ от задачи по бизнес-процессу "Поручение". На строчке кода: НаборБП = РегистрыСведений.CRM_БизнесПроцессы.СоздатьНаборЗаписей(); НаборБП.Отбор.БизнесПроцесс.Установить(БизнесПроцесс.Ссылка); НаборБП.Прочитать(); Выдается ошибка: У пользователя недостаточно прав на исполнение операции. Не понимаю, что не так. Кто-нибудь может помочь? Уже 2 дня бьюсь с проблемой(( Заранее благодарна. |
|||
50
vde69
16.03.12
✎
11:41
|
ВЫБРАТЬ
БизнесПроцессы.БизнесПроцесс ИЗ РегистрСведений.CRM_БизнесПроцессы КАК БизнесПроцессы ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчастникиПроектаКО.СрезПоследних КАК УчастникиПроектаКОСрезПоследних ПО БизнесПроцессы.ПроектКО = УчастникиПроектаКОСрезПоследних.ПроектКО.Ссылка ГДЕ ВЫБОР КОГДА БизнесПроцессы.Ответственный = &ТекущийПользователь ИЛИ БизнесПроцессы.Подразделение В &МассивТекущехПодразделений ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА БизнесПроцессы.ПроектКО <> ЗНАЧЕНИЕ(Справочник.ПроектыКО.ПустаяСсылка) ТОГДА УчастникиПроектаКОСрезПоследних.УчастникПроекта.Ссылка = &ТекущийПользователь ИЛИ ИЛИ УчастникиПроектаКОСрезПоследних.ПодразделениеУчастникаПроекта В &МассивТекущехПодразделений только структуру полей придется доработать и параметр сеанса |
|||
51
Лялечка
16.03.12
✎
11:45
|
(50) спасибо конечно...а в параметре сеанса, что будет содержаться?
|
|||
52
Лялечка
16.03.12
✎
11:47
|
(50) так почему может такое получиться, что в консоли все выполняется нормально, а в RLS запросе не выполняется??(( блин, не думала, что такая простая задача, как проверить 3 условия, может вызвать столько проблем... При чем эта фигня только при отказе от задачи...если задачу выполнить, а не отказаться, то все хорошо... может все же в чем-то еще причина, а не в запросе совсем...
|
|||
53
vde69
16.03.12
✎
12:03
|
(51) фиксированый массив разрешенного подразделения и всех его родителей.
(52) по тому, что чумадан... RLS вообще сложная штука для понимания |
|||
54
155153144627
16.03.12
✎
12:05
|
ТекущаяТаблица Из #ТекущаяТаблица КАК ТекущаяТаблица
ГДЕ ВЫБОР КОГДА ТекущаяТаблица.Ответственный = &ТекущийПользователь ИЛИ ТекущаяТаблица.Ответственный.Подразделение В &ТекущееПодразделение ИЛИ ТекущаяТаблица.Инициатор = &ТекущийПользователь ИЛИ ТекущаяТаблица.Инициатор.Подразделение В &ТекущееПодразделение ИЛИ ТекущаяТаблица.Исполнитель = &ТекущийПользователь ИЛИ ТекущаяТаблица.Исполнитель.Подразделение В &ТекущееПодразделение ТОГДА ИСТИНА КОГДА ТекущаяТаблица.ПроектКО.УчастникиПроекта.УчастникПроекта = &ТекущийПользователь ИЛИ ТекущаяТаблица.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение В &ТекущееПодразделение ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ |
|||
55
Лялечка
16.03.12
✎
12:16
|
(54) Нельзя проверять только подразделение текущего пользователя. Нужно, чтобы руководитель пользователя, так же имел доступ к бизнес-процессам подчиненного, а руководитель в орг.структуре стоит выше
|
|||
56
Лялечка
16.03.12
✎
12:19
|
(53) спасибо. По сути просто добавить еще параметр сеанса и установить его, так я поняла?
|
|||
57
155153144627
16.03.12
✎
12:29
|
(55) Ну так у руководителя "текущее подразделение" должно и быть выше в структуре подразделений. И если бизнес процесс ввел его подчиненный, то подразделение подчиненного будет входить в группу - подразделение руководителя.
|
|||
58
155153144627
16.03.12
✎
12:31
|
ИЛИ ТекущаяТаблица.Ответственный.Подразделение В &ТекущееПодразделение
ИЛИ ТекущаяТаблица.Инициатор.Подразделение В &ТекущееПодразделение ИЛИ ТекущаяТаблица.Исполнитель.Подразделение В &ТекущееПодразделение ИЛИ ТекущаяТаблица.ПроектКО.УчастникиПроекта.УчастникПроекта.Подразделение В &ТекущееПодразделение - вот эти условия же дают доступ руководителю. |
|||
59
Лялечка
16.03.12
✎
12:36
|
(58) логично конечно...сейчас попробую...только в RLS все равно ничего не хочет работать:(((
|
|||
60
155153144627
16.03.12
✎
12:37
|
Опаньки и не только ему, а всем кто входит в подразделение выше...
|
|||
61
155153144627
16.03.12
✎
12:40
|
У меня был случай, когда я тоже два дня колупал RLS, а потом оказалось другой прог назначил всем пользователям дополнительно еще одну роль, которая открывала все что я пытался заблокировать...
|
|||
62
Лялечка
16.03.12
✎
12:40
|
(60) вот вот...уже попробовала
|
|||
63
Лялечка
16.03.12
✎
12:41
|
(61) я один программист на эту конфигурацию, так что не может быть такого варианта
|
|||
64
155153144627
16.03.12
✎
12:42
|
(59) "Не хочет работать" - ошибку выдает или не блокирует записи?
|
|||
65
Лялечка
16.03.12
✎
12:46
|
(59) выдает ошибку у пользователя не достаточно прав((
|
|||
66
Лялечка
16.03.12
✎
12:49
|
(64) в консоли запрос работает, но при программном доступе к регистру сведений, метод Прочитать(), выдается ошибка "У пользователя недостаточно прав". Ошибку закрываю, задачу выполняю (вариант выполнения "Отказ") и все ок, без ошибки. Но при этом у бизнес процесса не проставляется вариант завершения "Неудачно"
|
|||
67
155153144627
16.03.12
✎
12:51
|
А у данного пользователя есть право на чтение ПроектКО и его полей? Если нет, то надо дать, и закрывать через RLS.
|
|||
68
Лялечка
16.03.12
✎
12:52
|
На справочник ПроектКО тоже права на чтение ограничены:
ПроектыКО ГДЕ (ПроектыКО.УчастникиПроекта.УчастникПроекта = &ТекущийПользователь ИЛИ ПроектыКО.ЭтоГруппа = ИСТИНА ИЛИ ПроектыКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель = &ТекущееПодразделение ИЛИ ПроектыКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель = &ТекущееПодразделение ИЛИ ПроектыКО.УчастникиПроекта.УчастникПроекта.Подразделение.Родитель.Родитель.Родитель = &ТекущееПодразделение) |
|||
69
Лялечка
16.03.12
✎
12:55
|
А вот в RLS когда права ограничены, нужно выбрать поля, если стоит "Прочие поля" что это значит?
|
|||
70
Мыш
16.03.12
✎
13:18
|
(69) Выбери поле "Ссылка" и по нему убери ограничение. Добавь ещё одну строку. Там будет "Прочие" - это все остальные. На них ограничение ставь.
Это нужно чтоб некоторые поля всегда были доступны. |
|||
71
Лялечка
16.03.12
✎
13:20
|
(70) на регистре нет поля ссылка
|
|||
72
Мыш
16.03.12
✎
13:25
|
(71) В курсе. Эт я для примера, сори. Чтоб было понимание, откуда берутся "Прочие". Это все поля, кроме указанных явно.
|
|||
73
Лялечка
16.03.12
✎
13:26
|
(72) спасибо.
|
|||
74
Лялечка
16.03.12
✎
13:27
|
(73) я уже начинаю думать, что моя задача неразрешима...
|
|||
75
vde69
16.03.12
✎
13:27
|
прочие поля - это те которые не идентифицируют обьект
для справочника - все кроме ссылки для регистра - все кроме измерений |
|||
76
vde69
16.03.12
✎
13:28
|
(74) твоя задача довольно проста и банальна, я ее тебе уже расписал, нужно только немного ручками поработать
|
|||
77
155153144627
16.03.12
✎
13:33
|
"Недостаточно прав" ругается же если предприятие, что пользователь пытается открыть то что ему запрещено в конфигураторе. RLS же просто не покажет данные.
Проверяй права пользователя на доступ к Участникам проекта и справочнику Подразделения. |
|||
78
Лялечка
16.03.12
✎
13:39
|
(77) к справочнику Подразделения доступ вообще не ограничен, к Участникам проекта он имеет доступ, если имеет доступ к проекту. Если он в проекте участвует, то доступ к проекту он уже имеет
|
|||
79
Лялечка
16.03.12
✎
14:46
|
(76) ох, спасибо тебе большое. Все же добавила параметр сеанса, прописала ограничения и вроде как отказы стали обрабатываться:)))) (ура!), правда с доступом к регистру все равно что-то не так, что-то лишнее мне выводит, надо проверить еще запрос.
Еще маленький вопросик, а если пользователю поменять подразделение во время сеанса, то получится небольшой косячок... |
|||
80
vde69
16.03.12
✎
15:15
|
(79) если хочешь иметь RLS которые будут отслеживать изменения прав в течении дня, то или делаешь переодическое перезаполнение параметра или нужно будет перейти на РС и с ним джойнить
параметр сеанса быстрее работает и с ним все более читабельно, РС более универсален зато более тормозной |
|||
81
Лялечка
16.03.12
✎
15:18
|
(80) и все же права ограничены неправильно. Строчка:
ИЛИ БизнесПроцессы.Подразделение В &МассивТекущехПодразделений дает пользователю из отдела1 видеть все поручения всех остальных сотрудников из отдела1 |
|||
82
Лялечка
16.03.12
✎
15:19
|
(80) но все равно огромное спасибо!) что-то хоть стало яснее
|
|||
83
Лялечка
16.03.12
✎
17:46
|
Не работает:( Параметр сеанса установила:
МассивЗначений = ПолучитьПодразделенияДляДоступа(); ПараметрыСеанса.МассивДоступныхПодразделений = Новый ФиксированныйМассив(МассивЗначений); Функция ПолучитьПодразделенияДляДоступа() Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Подразделения.Ссылка КАК Подразделение |ИЗ | Справочник.Подразделения КАК Подразделения |ГДЕ | Подразделения.Ссылка В ИЕРАРХИИ(&ПользовательПодразделение)"; Запрос.УстановитьПараметр("ПользовательПодразделение", ПараметрыСеанса.ТекущийПользователь.Подразделение); ВыборкаПодразделений = Запрос.Выполнить().Выбрать(); МассивПодразделений = Новый Массив; Пока ВыборкаПодразделений.Следующий() Цикл МассивПодразделений.Добавить(ВыборкаПодразделений.Подразделение); КонецЦикла; Возврат МассивПодразделений; КонецФункции Запрос RLS: ТекущаяТаблица Из #ТекущаяТаблица КАК ТекущаяТаблица ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчастникиПроектаКО КАК УчастникиПроектаКО ПО ТекущаяТаблица.ПроектКО = УчастникиПроектаКО.ПроектКО ГДЕ ВЫБОР КОГДА ТекущаяТаблица.Исполнитель = &ТекущийПользователь ИЛИ ТекущаяТаблица.Исполнитель.Подразделение В (&МассивДоступныхПодразделений) ИЛИ ТекущаяТаблица.Инициатор = &ТекущийПользователь ИЛИ ТекущаяТаблица.Инициатор.Подразделение.Родитель В (&МассивДоступныхПодразделений) ИЛИ ТекущаяТаблица.Ответственный = &ТекущийПользователь ИЛИ ТекущаяТаблица.Ответственный.Подразделение.Родитель В (&МассивДоступныхПодразделений) ТОГДА ИСТИНА ИНАЧЕ ВЫБОР КОГДА ТекущаяТаблица.ПроектКО <> ЗНАЧЕНИЕ(Справочник.ПроектыКО.ПустаяСсылка) ТОГДА УчастникиПроектаКО.УчастникПроекта.Ссылка = &ТекущийПользователь ИЛИ УчастникиПроектаКО.УчастникПроекта.Подразделение.Родитель В (&МассивДоступныхПодразделений) КОНЕЦ КОНЕЦ Пользователь1 = ТекущийПользователь, он же является ИсполнителемЗадачи. В &МассивДоступныхПодразделений подразделение текущего пользователя. При отказе от задачи ошибка "Недостаточно прав доступа! (НаборРС.Прочитать())". Если в &МассивДоступныхПодразделений добавить все подразделения, то все работает. Ничего не изменилось(( |
|||
84
155153144627
16.03.12
✎
19:17
|
Такой вопрос, а исполнитель, инициатор и ответственный являются участниками проекта?
|
|||
85
155153144627
16.03.12
✎
19:20
|
Если да, тогда создайте новую роль, поставьте полные права.
И на чтение бизнес процесса поставьте ТекущаяТаблица Из #ТекущаяТаблица КАК ТекущаяТаблица ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УчастникиПроектаКО КАК УчастникиПроектаКО ПО ТекущаяТаблица.ПроектКО = УчастникиПроектаКО.ПроектКО ГДЕ УчастникиПроектаКО.УчастникПроекта.Ссылка = &ТекущийПользователь ИЛИ УчастникиПроектаКО.УчастникПроекта.Подразделение.Родитель В (&МассивДоступныхПодразделений) |
|||
86
vde69
16.03.12
✎
22:46
|
(83) блин да сколько раз говорить, что в RLS НЕЛЬЗЯ использовать неразыменованые значения (более одной точки), точнее можно тольке финя получается :)
лажа: ТекущаяТаблица.Инициатор.Подразделение.Родитель ТекущаяТаблица.Ответственный.Подразделение.Родитель |
|||
87
Лялечка
19.03.12
✎
09:23
|
(84) в том и дело, что если в поручении проект заполнен, то все ок работает, а вот если проект не заполнен, то получается фигня.
|
|||
88
Лялечка
19.03.12
✎
09:40
|
(86) блин, я не хочу регистр переделывать, он используется очень часто в других объектах. К тому же половина закрытых функций, которые касаются бизнес-процессов. Не хватало, чтобы у меня еще из-за этого косяки полезли другие
|
|||
89
155153144627
19.03.12
✎
10:03
|
А может сделать так, в параметре сеанса хранить список пользователей: текущего и тех кто под ним?
И запрос упростить: ТекущаяТаблица Из #ТекущаяТаблица КАК ТекущаяТаблица ГДЕ ТекущаяТаблица.Ответственный В &СписПользователей ИЛИ ТекущаяТаблица.Инициатор В &СписПользователей ИЛИ ТекущаяТаблица.Исполнитель В &СписПользователей |
|||
90
Лялечка
19.03.12
✎
10:04
|
(89) я уже так и сделала
ТекущаяТаблица.Исполнитель.Подразделение В (&МассивДоступныхПодразделений) только не список пользователей храню, а список доступных подразделений |
|||
91
Лялечка
19.03.12
✎
10:07
|
параметр сеанса заполняется правильно, только вот если в поручении нет проекта, то почему-то не проверяется, является пользователь исполнителем, инициатором или ответственным, а ему сразу закрыт доступ к строке регистра. А вот если пользователю разрешить доступ ко всем подразделениям, то все работает хорошо, только тогда у него есть доступ ко всем записям регистра "Бизнес-процессы", а это плохо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |