Имя: Пароль:
1C
1С v8
Ошибка при доработке шаблона RLS
0 SOLO1C
 
07.11.12
14:23
В типовой УПП есть глюк - прих и расх ордера сделанные по перемещениям не видны пользователям, т.к. не заполнен контрагент при включенных отборах по контрагентам.
Соответсвенно пытаюсь отработать ситуацию проверкой типа таблицы и вида операции прих и расх ордера.
Столкнулся с проблемой при написании такого кода:
(привожу только проблемную часть с проверкой типа)

#Если  (&ИспользоватьОграничениеПоКонтрагенты И ( НЕ ТипЗначения(#ТекущаяТаблица.Ссылка) =ТИП(Документ.ПриходныйОрдерНаТовар))) ИЛИ &ИспользоватьОграничениеПоОрганизации ИЛИ &ИспользоватьОграничениеПоСклады #Тогда .....

Ошибка

Ошибка в ограничении доступа к данным.
объект: 'Документ.ПриходныйОрдерНаТовары', поле: 'Проведен'; право: 'Чтение'
Синтаксическая ошибка "Синтаксическая ошибка "ТипЗначения""
по причине:
Синтаксическая ошибка "Синтаксическая ошибка "ТипЗначения""


Пеерписка кода на
#Если  (&ИспользоватьОграничениеПоКонтрагенты И  НЕ #ТекущаяТаблица.Ссылка Ссылка Документ.ПриходныйОрдерНаТовар)
....
эффекта не дает
все равно синтаксическая ошибка...

Ошибка в ограничении доступа к данным.
объект: 'Документ.ПриходныйОрдерНаТовары', поле: 'Проведен'; право: 'Чтение'
Синтаксическая ошибка "Синтаксическая ошибка"
по причине:
Синтаксическая ошибка "Синтаксическая ошибка"

в чем она ?
1 Homer
 
07.11.12
14:32
Добавь к доступу пустого контрагента
2 SOLO1C
 
07.11.12
14:35
)) хороший вариант - толкьо в этом случае пользователь получит доступ  ко всем  контагентам.
3 SOLO1C
 
07.11.12
14:47
еще идеи ?
кстати ошибка в синтаксе была , нужно было
писать ПриходныйОрдерНаТоварЫ!

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

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