Имя: Пароль:
1C
1С v8
v8: Использование RLS
0 a_k47
 
25.11.13
19:17
Добрый день, коллеги.
В связи с рабочей необходимостью возник вопрос:
Есть документ "оценка сотрудника" с полем Сотрудник.
Есть 2 роли: Работник, Руководитель.

Роль Работник дает право смотреть документы только по себе и редактировать только 3 реквизита (Эту часть мне удалось реализовать)

Роль Руководитель дает право смотреть, создавать, изменять(все, кроме трех реквизитов) документы по подчиненным. но в то же время у руководителя есть свой Руководитель1, и руководитель помимо своих подчиненных должен видеть свою оценку(типа с ролью сотрудник).

Отдельно друг от друга РЛСы работают примерно так как и надо. Но когда Руководителю ставлю обе роли - он видит и может редактировать как документы с подчиненными, так и свой собственный.

Уже что тольок не пробовал - Хелп вобщем :)
1 a_k47
 
25.11.13
19:18
Платформа 8.3.3.721. Режим Такси
2 bahus
 
25.11.13
19:26
а руководитель не должен видеть и редактировать свою оценку?
3 a_k47
 
25.11.13
19:27
Видеть да, редактировать - нет.
Для своего документа он должен иметь права сотрудника
4 bahus
 
25.11.13
19:28
покажи запрос для руководителя
5 a_k47
 
25.11.13
19:32
ОценкаСотрудника ГДЕ
НЕ ОценкаСотрудника.Сотрудник В
                (ВЫБРАТЬ
                    СотрудникиОрганизаций.Ссылка
                ИЗ
                    Справочник.Пользователи КАК Пользователи
                        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                        ПО
                            Пользователи.Физлицо = СотрудникиОрганизаций.Физлицо
                ГДЕ
                    Пользователи.Ссылка = &ТекущийПользователь)
    И
     ОценкаСотрудника.Сотрудник В
            (ВЫБРАТЬ
                РаботникиОрганизаций.Сотрудник
            ИЗ
                (ВЫБРАТЬ
                    МАКСИМУМ(РаботникиОрганизаций.Период) КАК Период,
                    РаботникиОрганизаций.Сотрудник КАК Сотрудник
                ИЗ
                    РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                ГДЕ
                    РаботникиОрганизаций.Актуальность
                СГРУППИРОВАТЬ ПО
                    РаботникиОрганизаций.Сотрудник) КАК ВложенныйЗапрос
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                    ПО
                        ВложенныйЗапрос.Сотрудник = РаботникиОрганизаций.Сотрудник
                            И ВложенныйЗапрос.Период = РаботникиОрганизаций.Период
                            И РаботникиОрганизаций.Актуальность
            ГДЕ
                ВЫБОР
                    КОГДА ЕСТЬNULL(РаботникиОрганизаций.Должность.ФункциональныйРуководитель, ЗНАЧЕНИЕ(Справочник.ДолжностиОрганизаций.ПустаяСсылка)) = ЗНАЧЕНИЕ(Справочник.ДолжностиОрганизаций.ПустаяСсылка)
                        ТОГДА РаботникиОрганизаций.Подразделение.АдминистративныйРуководитель
                    ИНАЧЕ РаботникиОрганизаций.Должность.ФункциональныйРуководитель
                КОНЕЦ В
                    (ВЫБРАТЬ
                        РаботникиОрганизаций.Должность
                    ИЗ
                        (ВЫБРАТЬ
                            РаботникиОрганизаций.Сотрудник КАК Сотрудник,
                            МАКСИМУМ(РаботникиОрганизаций.Период) КАК Период
                        ИЗ
                            Справочник.Пользователи КАК Пользователи
                                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                                ПО
                                    Пользователи.Физлицо = РаботникиОрганизаций.Сотрудник.Физлицо
                                        И РаботникиОрганизаций.Период <= &ДатаНачалаСеанса
                                        И РаботникиОрганизаций.Актуальность
                        ГДЕ
                            Пользователи.Ссылка = &ТекущийПользователь
                        СГРУППИРОВАТЬ ПО
                            Пользователи.Физлицо,
                            РаботникиОрганизаций.Сотрудник) КАК ВложенныйЗапрос
                            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
                            ПО
                                ВложенныйЗапрос.Сотрудник = РаботникиОрганизаций.Сотрудник
                                    И ВложенныйЗапрос.Период = РаботникиОрганизаций.Период))
6 a_k47
 
25.11.13
19:34
Это на чтение,
на изменение просто
ОценкаСотрудника ГДЕ
  ОценкаСотрудника.Сотрудник НЕ В
                (ВЫБРАТЬ
                    СотрудникиОрганизаций.Ссылка
                ИЗ
                    Справочник.Пользователи КАК Пользователи
                        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                        ПО
                            Пользователи.Физлицо = СотрудникиОрганизаций.Физлицо
                ГДЕ
                    Пользователи.Ссылка = &ТекущийПользователь)
7 bahus
 
25.11.13
19:45
е##ть, и это под конец рабочего дня )

а зачем руководителю ограничение на чтение по текущему пользователю?
8 bahus
 
25.11.13
19:46
Может из первого запроса убрать эту часть?
(ВЫБРАТЬ
                    СотрудникиОрганизаций.Ссылка
                ИЗ
                    Справочник.Пользователи КАК Пользователи
                        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
                        ПО
                            Пользователи.Физлицо = СотрудникиОрганизаций.Физлицо
                ГДЕ
                    Пользователи.Ссылка = &ТекущийПользователь)
     И
9 a_k47
 
25.11.13
19:50
Убирал, ничего не поменялось.
Если ставить отдельно одну или вторую роль - отрабатывает корректно, но если поставить обе - дает право делать все
10 bahus
 
25.11.13
19:53
так а зачем руководителю права сотрудника, если он будет видеть свои документы? не ставь ему вторую роль.
11 a_k47
 
25.11.13
19:58
Руководитель должен видеть свою собственную оценку(по правам Сотрудник) и оценку подчиненных(по правам руководитель)
12 kosts
 
25.11.13
20:06
Может быть не хватает ролей?
13 bahus
 
25.11.13
20:08
мож я туплю
если ты уберешь фильтр по текущему пользователю из условия на чтение, то руководитель будет видеть свои документы, так ведь? если он будет видеть свои документы, то зачем ему еще роль сотрудника?
14 a_k47
 
25.11.13
20:15
Можно конечно убрать, но тогда прийдется не ограничивать возможность редактирования реквизитов ролями, а делать из модуля формы
15 bahus
 
25.11.13
20:18
Так в условии на редактирование-то отбор по текущему пользователю оставь )
Только из условия на чтение убери.
Тогда получится, что он видит свои документы, но редактировать не может. Профит?
16 a_k47
 
25.11.13
20:21
Редактировать может, но только реквизиты руководителя, а типа самооценку, которую заполняет сотрудник - не может :)))))
17 bahus
 
25.11.13
20:25
аааа!
а если для руководителя добавить еще одно ограничение на редактирование только для собственных документов с полями, аналогичными такому ограничению для сотрудника?
18 a_k47
 
26.11.13
11:42
Может у меня чего-то с руками, но в праве Редактировать у меня добавляется только одна строка с RLS :((
19 Hmster
 
26.11.13
11:49
(18) так вроде бы и должно быть
20 a_k47
 
26.11.13
11:52
Тогда пост 17 не поможет :(
Придется все-таки писать код в модуле формы :( а как хотелось сделать RLS-ами...
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn