Имя: Пароль:
1C
1С v8
RLS и пустое значение. Кто сталкивался?
0 artpi
 
02.02.12
10:01
Суть проблемы такая. Есть типовая конфигурация Комплексная автоматизация.
Решил настроить РЛС (доступ на уровне записи) и сталкнулся с такой фигнёй:

В документе ПриходныйОрдерНаТовары стоит ограничение по трём полям - #КонтрагентОрганизацияСклад
а поле Контрагент заполняется лишь в случае прихода от поставщика.
И кладовщик не видит документы где не указан контрагент.

Если для вида доступа «Контрагенты» предоставить доступ к пустому значению, то пользователь увидит документы, в которых реквизит «Контрагент» не заполнен.

Вопрос: Как это сделать?
1 le_
 
02.02.12
10:06
(0) В условии запроса можно использовать ВЫБОР.
2 artpi
 
02.02.12
10:13
Это как? Подскажи плиз на примере.
3 ДемонМаксвелла
 
02.02.12
10:19
Попробуй добавить пустую "группу доступа контрагентов" в права. Скорее всего не прокатит, но попробовать стоит. Не забудь поставить "Только для текущего права"
4 le_
 
02.02.12
10:20
Где
Выбор
Когда Контрагент = Значение(Справочник.Контрагенты.ПустаяСсылка) Тогда
   Ложь
Когда Контрагент в(&ДоступныеКонтрагенты) Тогда
   Истина
Иначе
  Ложь
Конец


Примерно так...
5 le_
 
02.02.12
10:23
+(4) Если не понятно, как работают Истина и Ложь в условиях, выполни такие запросы в консоли и посмотри, в чем разница.

выбрать 1 где истина

выбрать 1 где ложь
6 artpi
 
02.02.12
10:24
#Если &ИспользоватьОграничениеПоКонтрагенты ИЛИ &ИспользоватьОграничениеПоОрганизации ИЛИ &ИспользоватьОграничениеПоСклады #Тогда
ТекущаяТаблица
ИЗ
   #ТекущаяТаблица КАК ТекущаяТаблица
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
           СоставГруппы.Ссылка КАК ГруппаПользователей
       ИЗ
           Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы
       ГДЕ
           СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей
       ПО (ИСТИНА)
ГДЕ
НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL
И Не ТекущаяТаблица.#Параметр(1) ЕСТЬ NULL
И
   (НЕ 1 В
               (ВЫБРАТЬ ПЕРВЫЕ 1
                   1
               ИЗ
                   РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа
                                           
                   #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                   ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
                   ПО Контрагенты.Ссылка = ТекущаяТаблица.#Параметр(1)
                   #КонецЕсли                                                                              
                   
                   ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
                       ПО
                           НастройкиПравДоступаПользователей.ОбъектДоступа = ВЫБОР
                                   
                                   #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                                   КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                       ТОГДА ЕСТЬNULL(Контрагенты.ГруппаДоступаКонтрагента, ЗНАЧЕНИЕ(Справочник.ГруппыДоступаКонтрагентов.ПустаяСсылка))
                                   #КонецЕсли
                                   
                                   #Если &ИспользоватьОграничениеПоОрганизации #Тогда
                                   КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                       ТОГДА ТекущаяТаблица.#Параметр(2)
                                   #КонецЕсли
                                   
                                   #Если &ИспользоватьОграничениеПоСклады #Тогда
                                   КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Склады)
                                       ТОГДА ТекущаяТаблица.#Параметр(3)
                                   #КонецЕсли
                           
                               КОНЕЦ
                               И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа
                               И                              
                               НастройкиПравДоступаПользователей.ОбластьДанных =
                               #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                                   ВЫБОР КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                       ТОГДА ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДанные)
                                   ИНАЧЕ
                                       ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
                                   КОНЕЦ
                               #Иначе                                  
                                   ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка)
                               #КонецЕсли
                                                                                               
                               И НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей
               ГДЕ                
                    НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей
                          И НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа В (
                                                                                 ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ПустаяСсылка)
                                                                                 
                                                                                 #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда
                                                                                 , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты)
                                                                                 #КонецЕсли
                                                                                 
                                                                                 #Если &ИспользоватьОграничениеПоОрганизации #Тогда
                                                                                 , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации)
                                                                                 #КонецЕсли
                                                                                 
                                                                                 #Если &ИспользоватьОграничениеПоСклады #Тогда
                                                                                 , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Склады)
                                                                                 #КонецЕсли
                                                                                 
                                                                                 )
               
                   И НастройкиПравДоступаПользователей.ОбъектДоступа ЕСТЬ NULL))
#КонецЕсли
7 artpi
 
02.02.12
10:25
Вот такой там запрос
8 artpi
 
02.02.12
11:50
Как можно делать отладку кода RSL?