8.х Запросы в RLS

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем DmitryV, 17 мар 2013.

  1. TopicStarter Overlay
    DmitryV
    Offline

    DmitryV

    Регистрация:
    17 апр 2011
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте!
    Помогите разобраться почему один и тот же запрос написанный в консоли запросов и через ограничение в роли пользователя дает разные результаты?
    Это в RLS
    Код:
    Склады ИЗ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
    ПО (Склады.Ссылка = НастройкиПравДоступаПользователей.ОбъектДоступа)
    ГДЕ НастройкиПравДоступаПользователей.Пользователь.ПользователиГруппы.Пользователь = &ТекущийПользователь
    И НастройкиПравДоступаПользователей.СкладОтгрузка
    Это в консоли
    Код:
    ВЫБРАТЬ
    Склады.Наименование
    ИЗ
    РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
    ПО Склады.Ссылка = НастройкиПравДоступаПользователей.ОбъектДоступа
    ГДЕ
    НастройкиПравДоступаПользователей.Пользователь.ПользователиГруппы.Пользователь = &Пользователь
    И НастройкиПравДоступаПользователей.СкладОтгрузка
    В консоли запрос ограничевает доступ к складу, а в RLS нет. Спасибо!
  2. TopicStarter Overlay
    DmitryV
    Offline

    DmitryV

    Регистрация:
    17 апр 2011
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    а если поставить ВНУТРЕННЕЕ СОЕДИНЕНИЕ в RLS то результат одинаковый
  3. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    именно внутреннее соединение и будет в результирующем запросе к базе, когда на таблице действует rls
  4. TopicStarter Overlay
    DmitryV
    Offline

    DmitryV

    Регистрация:
    17 апр 2011
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Голову уже сломал не понимаю, сделал установил ПараметрыСеанса как фиксированный массив из складов
    Код:
    Склады ГДЕ Склады.Ссылка В(&ДоступныеСкладыПросмотр)
    И (НЕ Склады.ЭтоГруппа)
    И если какой нибудь склад находится в группе, то его не читает, подскажите как сделать чтобы читались склады в группе?
    условие на группу пробывал убирать - тоже не читает

    Я так понимаю запрос сначала читает группы, т.к. она не входит в массив он ее отбрасывает, а вместе с ней и склады в нее входящие
  5. TopicStarter Overlay
    DmitryV
    Offline

    DmitryV

    Регистрация:
    17 апр 2011
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Все разобрался, сначала поставил условие на группу, а потом на вхождение в массив
    Код:
    Склады ГДЕ Склады.ЭтоГруппа
    ИЛИ Склады.Ссылка В(&ДоступныеСкладыПросмотр)
  6. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    в условии "И" если первый аргумент ложь, то второй даже не вычисляется

    также в условии "ИЛИ" если первый - истина, то второй не вычисляется

Поделиться этой страницей