Имя: Пароль:
1C
1С v8
RLS, ограничение по номенклатуре
0 AntonH851
 
09.01.13
14:53
Добрый день!
Написал правило ограничения по номенклатуры:

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

Вопрос: почему ругается на поле Ссылка при попытке добавить этот шаблон в ограничение для справочника Номенклатура. Но там же есть поле Ссылка, в чем дело?
1 ИС-2
 
naïve
09.01.13
15:00
(0)  м_ПроектыНоменклатуры.Номенклатура В ИЕРАРХИИ (ТекущаяТаблица.Ссылка) - В ИЕРАРХИИ нельзя использовать. Для теста убери эту строку.
2 AntonH851
 
09.01.13
15:03
(1) Да я уже и "=" пробовал ставить, дело не в этом
3 Lexusss
 
09.01.13
15:21
Конструкции В ИЕРАРХИИ не приемлит в качестве параметра поля запроса, только параметры запроса.
Конструция В ИЕРАРХИИ вообще отсутствует в языке RLS.
Вообще за такую конструкцию я бы дал в глаз. Что такое "Пользователи."?
Я так понимаю, это RLS на сам справочник номенклатуры? За что ты над ним так издеваешься.
4 Lexusss
 
09.01.13
15:28
Т ИЗ Т КАК Т
ГДЕ НЕ &ИспользоватьОграниченияПравДоступаНаУровнеЗаписей
ИЛИ
Ссылка В (
    ВЫБРАТЬ Номенклатура
    ИЗ РегистрСведений.м_ПроектыНоменклатуры
    ГДЕ Проект В
          (
          ВЫБРАТЬ Проект
          ИЗ
          ГДЕ Пользователь = &ТекущийПользователь
          )
)
5 AntonH851
 
10.01.13
15:11
(4) Написал я так, теперь при открытии справочника Номенклатура мне выдается такая ошибка:

Ошибка в ограничении доступа к данным.
объект: 'Справочник.Номенклатура', поле: 'Родитель'; право: 'Чтение'
Ошибка SDBL:
Создание временной таблицы возможно только в рамках транзакции. (pos=24)
по причине:
Ошибка SDBL:
Создание временной таблицы возможно только в рамках транзакции. (pos=24)
Независимо от того, куда вы едете — это в гору и против ветра!