Имя: Пароль:
1C
1С v8
RLS не распознает ТекущаяТаблица
0 Altanzar
 
16.03.16
12:41
Конфигурация УПП 1.3, создан шаблон ограничений для регистра накопления "Продажи" на основе типового шаблона КонтрагентОрганизацияПодразделение. При попытке формирования отчета выдает следующую ошибку:

Ошибка в ограничении доступа к данным.
объект: 'РегистрНакопления.Продажи', поле: 'Номенклатура'; право: 'Чтение'
{(14, 37)}: Поле не найдено "ТекущаяТаблица.ДокументПродажи.Скрытый"
И НЕ ТекущаяТаблица.ДокументПродажи.<<?>>Скрытый
по причине:
{(14, 37)}: Поле не найдено "ТекущаяТаблица.ДокументПродажи.Скрытый"
И НЕ ТекущаяТаблица.ДокументПродажи.<<?>>Скрытый

При этом если закомментарить это условие, то отчет формируется нормально (как по типовому шаблону). Текст запроса шаблона:

#Если &ИспользоватьОграничениеПоКонтрагенты ИЛИ &ИспользоватьОграничениеПоОрганизации ИЛИ &ИспользоватьОграничениеПоПодразделения #Тогда
ТекущаяТаблица
ИЗ
    #ТекущаяТаблица КАК ТекущаяТаблица
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
            СоставГруппы.Ссылка КАК ГруппаПользователей
        ИЗ
            Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
        ГДЕ
            СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
        ПО (ИСТИНА)
ГДЕ
НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL
И НЕ ТекущаяТаблица.#Параметр(4).Скрытый
И
    (НЕ 1 В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    1
                ИЗ
                    РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
                                            
                    #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
                    ПО Контрагенты.Ссылка = ТекущаяТаблица.#Параметр(1)
                    #КонецЕсли                                                                              
                    
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                        ПО
                            НастройкиПравДоступаПользователей.ОбъектДоступа = ВЫБОР
                                    
                                    #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                                    КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                        ТОГДА ЕСТЬNULL(Контрагенты.ГруппаДоступаКонтрагента, ЗНАЧЕНИЕ(Справочник.ГруппыДоступаКонтрагентов.ПустаяСсылка))
                                    #КонецЕсли
                                    
                                    #Если &ИспользоватьОграничениеПоОрганизации #Тогда
                                    КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                        ТОГДА ТекущаяТаблица.#Параметр(2)
                                    #КонецЕсли
                                    
                                    #Если &ИспользоватьОграничениеПоПодразделения #Тогда
                                    КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Подразделения)
                                        ТОГДА ТекущаяТаблица.#Параметр(3)
                                    #КонецЕсли
                            
                                КОНЕЦ
                                И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа
                                И
                                НастройкиПравДоступаПользователей.ОбластьДанных =
                                #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                                    ВЫБОР КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                        ТОГДА ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДанные)
                                    ИНАЧЕ
                                        ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
                                    КОНЕЦ
                                #Иначе                                    
                                    ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
                                #КонецЕсли
                                                                                                
                                И НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей
                ГДЕ                
                     НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                           И НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа В (
                                                                                  ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ПустаяСсылка)
                                                                                  
                                                                                  #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                                                                                  , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                                                                  #КонецЕсли
                                                                                  
                                                                                  #Если &ИспользоватьОграничениеПоОрганизации #Тогда
                                                                                  , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                                                                  #КонецЕсли
                                                                                  
                                                                                  #Если &ИспользоватьОграничениеПоПодразделения #Тогда
                                                                                  , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Подразделения)
                                                                                  #КонецЕсли
                                                                                  
                                                                                  )
                
                    И НастройкиПравДоступаПользователей.ОбъектДоступа ЕСТЬ NULL))
#КонецЕсли

В чем корень ошибки?
1 shuhard
 
16.03.16
12:42
(0) ну нет у документа такой ТЧ
2 ViSo76
 
16.03.16
12:44
1. Сбрось кэш
2. Попробуй по кускам вставлять, постепенно ограничивая права.
3 Altanzar
 
16.03.16
12:54
(1) Оно говорит что не знает именно поле ТекущаяТаблица. Хотя это поле определено парой строк выше, да и потом используется.

(2) Кэш сбрасывал, не помогло. Делал тестирование и исправление - тоже безрезультатно.

Там по сути все предельно просто - запрещено читать записи регистра, где у документа продажи стоит реквизит "Скрытый", даже нечего на куски разложить.
4 mikecool
 
16.03.16
12:55
(3)  где в ошибке про ТекущаяТаблица?
5 Altanzar
 
16.03.16
12:58
(4) Когда в запросе была проверка
ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ТекущаяТаблица) = ТИП(РегистрНакопления.Продажи) ТОГДА
...
КОНЕЦ

оно тоже ругалось на ТекущаяТаблица.
6 Fragster
 
гуру
16.03.16
12:59
правильным решением был бы перенос реквизита в реквизит регистра и заполнении его при фомировании движений.
Независимо от того, куда вы едете — это в гору и против ветра!