Имя: Пароль:
1C
1С v8
Ограничение доступа! RLS
,
0 KonstantinK90
 
09.06.17
05:55
Всем привет! комплексная 1.1. настроил права на уровне записи чтобы пользователь видел только своих контрагентов. Все нормально работает за исключением пользователь не может создать заявку на доставку из документа перемещение. В журнале регистрации смотрю событие "Доступ. Отказ в доступе - чтение". В конфигураторе код ограничение доступа как его исправить чтобы ошибка не выходила. Текст ошибка "У пользователя не достаточно прав на выполнение операции над базой данных." Всем спасибо!
#Если &ИспользоватьОграничениеПоКонтрагенты ИЛИ &ИспользоватьОграничениеПоОрганизации ИЛИ &ИспользоватьОграничениеПоСклады #Тогда
ТекущаяТаблица
ИЗ
    #ТекущаяТаблица КАК ТекущаяТаблица
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
            СоставГруппы.Ссылка КАК ГруппаПользователей
        ИЗ
            Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
        ГДЕ
            СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
        ПО (ИСТИНА)
ГДЕ
НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL
И
    (НЕ 1 В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    1
                ИЗ
                    РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
                                            
                    #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
                    ПО Контрагенты.Ссылка = ТекущаяТаблица.#Параметр(1)
                    #КонецЕсли                                                                              
                    
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                        ПО
                            НастройкиПравДоступаПользователей.ОбъектДоступа = ВЫБОР
                                    
                                    #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                                    КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                        ТОГДА ЕСТЬNULL(Контрагенты.ГруппаДоступаКонтрагента, ЗНАЧЕНИЕ(Справочник.ГруппыДоступаКонтрагентов.ПустаяСсылка))
                                    #КонецЕсли
                                    
                                    #Если &ИспользоватьОграничениеПоОрганизации #Тогда
                                    КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                        ТОГДА ТекущаяТаблица.#Параметр(2)
                                    #КонецЕсли
                                    
                                    #Если &ИспользоватьОграничениеПоСклады #Тогда
                                    КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Склады)
                                        ТОГДА ТекущаяТаблица.#Параметр(3)
                                    #КонецЕсли
                            
                                КОНЕЦ
                                И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа
                                И
                                НастройкиПравДоступаПользователей.ОбластьДанных =
                                #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                                    ВЫБОР КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                        ТОГДА ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДанные)
                                    ИНАЧЕ
                                        ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
                                    КОНЕЦ
                                #Иначе                                    
                                    ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
                                #КонецЕсли
                                                                                                
                                И НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей
                ГДЕ                
                     НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                           И НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа В (
                                                                                  ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ПустаяСсылка)
                                                                                  
                                                                                  #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                                                                                  , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                                                                  #КонецЕсли
                                                                                  
                                                                                  #Если &ИспользоватьОграничениеПоОрганизации #Тогда
                                                                                  , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                                                                  #КонецЕсли
                                                                                  
                                                                                  #Если &ИспользоватьОграничениеПоСклады #Тогда
                                                                                  , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Склады)
                                                                                  #КонецЕсли
                                                                                  
                                                                                  )
                
                    И НастройкиПравДоступаПользователей.ОбъектДоступа ЕСТЬ NULL))
#КонецЕсли
1 KonstantinK90
 
09.06.17
06:16
есть мысли?
2 KonstantinK90
 
09.06.17
06:20
вообще этот запрос как то можно в предприятии отладить
3 ИС-2
 
naïve
09.06.17
06:52
в тексте RLS на заявку на доставку прописано этот RLS?
4 KonstantinK90
 
09.06.17
06:52
не понял вас что где должно быть прописано?
5 ИС-2
 
naïve
09.06.17
06:53
какой RLS в у заявки на доставку?
6 KonstantinK90
 
09.06.17
06:56
В предприятии настроил rls на доступ к контрагентам. а при создании заявки выходит ошибка недостаточно прав доступа на чтение. И не пойму что делать. в документе на вкладке права есть право чтение вот внем отказ
7 KonstantinK90
 
09.06.17
06:56
непойму что делать
8 KonstantinK90
 
09.06.17
06:57
первый раз столкнулся с этим
9 SiAl-chel
 
09.06.17
06:58
(0) Когда-то давным дано было такое. Если в справочнике автонумерация кодов, то "код" справочника надо как-то исключить из контроля RLS. Но вот как, уже не помню. Лет десять назад с таким сталкивался.
10 ИС-2
 
naïve
09.06.17
06:59
в праве на чтение прописан какой-то RLS ? Или просто стоит галка?
11 SiAl-chel
 
09.06.17
07:00
(0) +(9)  А для документов надо добиться игнора RLS для номера документа.
12 KonstantinK90
 
09.06.17
07:08
в праве на чтение прописан RLS код я его выше скидывал
13 DrZombi
 
гуру
09.06.17
07:12
(6) Код посмотреть не пробовал?
Найти какой либо запрос :)
14 DrZombi
 
гуру
09.06.17
07:13
(9) Поместить в привилегированный модуль, нет? :)
15 DrZombi
 
гуру
09.06.17
07:14
(12) Добавить в настройку прав видеть документы, где не указан Контрагент.
Т.е. добавить право видеть пустую ссылку :)
16 DrZombi
 
гуру
09.06.17
07:15
+ и будет вам счастье :)
17 KonstantinK90
 
09.06.17
07:15
Добавить в настройку прав видеть документы, где не указан Контрагент.
Т.е. добавить право видеть пустую ссылку :)
А где это добавляется????
18 DrZombi
 
гуру
09.06.17
07:17
(17) Ты когда создаешь документ у него не указан контрагент.

+Добавляется в регистре  РегистрСведений.НазначениеВидовОбъектовДоступа
19 DrZombi
 
гуру
09.06.17
07:17
+(17) типо тама :)
20 DrZombi
 
гуру
09.06.17
07:18
+ типовой РЛС из УПП

#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
ТекущаяТаблица
ИЗ
    #ТекущаяТаблица КАК ТекущаяТаблица
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
            СоставГруппы.Ссылка КАК ГруппаПользователей
        ИЗ
            Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
        ГДЕ
            СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
        ПО (ИСТИНА)
ГДЕ
НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL
И
    (НЕ 1 В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    1
                ИЗ
                    РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
                                                                
                    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
                    ПО Контрагенты.Ссылка = ТекущаяТаблица.#Параметр(1)                
                    
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                        ПО
                            НастройкиПравДоступаПользователей.ОбъектДоступа = ЕСТЬNULL(Контрагенты.ГруппаДоступаКонтрагента, ЗНАЧЕНИЕ(Справочник.ГруппыДоступаКонтрагентов.ПустаяСсылка))
                                    
                                И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа
                                И НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДанные)
                                                                                                
                                И НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей
                ГДЕ                
                     НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                           И НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа В (ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты))
                
                    И НастройкиПравДоступаПользователей.ОбъектДоступа ЕСТЬ NULL))
#КонецЕсли
21 DrZombi
 
гуру
09.06.17
07:19
+ 1С использовала РС РегистрСведений.НастройкиПравДоступаПользователей
22 KonstantinK90
 
09.06.17
07:20
Добавляется в регистре  РегистрСведений.НазначениеВидовОбъектовДоступа
здесь нету "ВидОбъекта доступа" - документы
23 DrZombi
 
гуру
09.06.17
07:21
(22) Смотри в (21)
24 KonstantinK90
 
09.06.17
07:24
РегистрСведений.НазначениеВидовОбъектовДоступа как там указать документы что бы видел пустую ссылку. подскажите?
25 KonstantinK90
 
09.06.17
07:24
в нем указывается группа пользователей и вид объекта доступа
26 DrZombi
 
гуру
09.06.17
07:40
(24) в УПП есть неплохой интерфейс.
Вам придется руками писать запись :)

+(25) увы, тут я не вдавался в столь обширные подробности :)
27 DrZombi
 
гуру
09.06.17
07:42
+(24) По вашему запросу, у вас все уже есть.

                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                        ПО
                            НастройкиПравДоступаПользователей.ОбъектДоступа = ВЫБОР
                                    
                                    #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда

                                    КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                        ТОГДА ЕСТЬNULL(Контрагенты.ГруппаДоступаКонтрагента, ЗНАЧЕНИЕ(Справочник.ГруппыДоступаКонтрагентов.ПустаяСсылка))
                                    #КонецЕсли

                                    
                                    #Если &ИспользоватьОграничениеПоОрганизации #Тогда

                                    КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                        ТОГДА ТекущаяТаблица.#Параметр(2)

                                    #КонецЕсли

                                    
                                    #Если &ИспользоватьОграничениеПоСклады #Тогда

                                    КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Склады)
                                        ТОГДА ТекущаяТаблица.#Параметр(3)

                                    #КонецЕсли

                            
                                КОНЕЦ
                                И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа
                                И
                                НастройкиПравДоступаПользователей.ОбластьДанных =
                                #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда

                                    ВЫБОР КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                        ТОГДА ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДанные)
                                    ИНАЧЕ
                                        ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
                                    КОНЕЦ
                                #Иначе                                    

                                    ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
                                #КонецЕсли

                                                                                                
                                И НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей
28 KonstantinK90
 
09.06.17
07:59
все равно не понял что мне делать! Объясните!
29 2083
 
09.06.17
08:16
(28) добавь права на пустого контрагента, не делай мозг...
30 KonstantinK90
 
09.06.17
08:21
добавь права на пустого контрагента, 'это в конфигураторе галочка "Установить права для новых объектов"- ????
31 2083
 
09.06.17
08:23
(30) факингщет.... это в РС Настройки прав доступа
32 KonstantinK90
 
09.06.17
08:26
в этом регистре у меня стоят галочки "Запись," "Вид наследования" - только для текущего права здесь нету такого поля указать пустого контрагента
33 KonstantinK90
 
09.06.17
08:29
как указать пустого контрагента в рс
34 KonstantinK90
 
09.06.17
08:30
скажите как? не пойму!
35 DrZombi
 
гуру
09.06.17
08:51
(30) Нет, это в режиме предприятия, заполняешь регистр сведений, через интерфейс, он должен быть :)
36 DrZombi
 
гуру
09.06.17
08:52
(33) Просто, выбираешь тип, но не выбираешь значение :)
37 KonstantinK90
 
09.06.17
08:55
рс настройки прав доступа пользователей имеет поля : Объект доступа,вид объекта, область данных, группа пользователей, владелец прав доступа, наследовать от всех пользователей, чтение, запись, вид наследования права.
38 KonstantinK90
 
09.06.17
08:55
в каком поле нужно выбрать тип но не выбирать значение
39 KonstantinK90
 
09.06.17
08:58
вот настройка моего регистра
http://www.fotolink.su/v.php?id=3a2dc568639567ba2ffe656112537b09
40 Serg_1960
 
09.06.17
09:20
Нечто подобное из v8: Доступ на уровне записей:

"в группе доступа за закладке контрагенты укажи вид доступа - пустое значение, вид наследования прав доступа - только для текущего права и поставь все галки."
41 KonstantinK90
 
09.06.17
10:37
все спасибо разобрался. дописал запрос где
#Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                        И Контрагенты.Ссылка <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)                                                                                  
                     #КонецЕсли