Привет Всем!

Есть самописный отчет с кучей запросов, в которых есть куча вложенных запросов. Создана роль, с ограничением на уровне записей. И пользователь с этой ролью не может открыть отчет. В журнале регистрации указывается на проблемы с доступом к справочникам к которым ограничен доступ.

Есть ли способ решить проблемы с доступом без переписывания всего отчета? Или способ попроще.

P.S. Пробовал "ВЫБРАТЬ РАЗРЕШЕННЫЕ". Но эта фишка работает только с первым запросом.
---
Есть ли способ решить проблемы с доступом без переписывания всего отчета? Или способ попроще.
Самый простой, но не самый правильный. Перед запросом- УстановитьПривилегированныйРежим(Истина);
---
Если отчет совсем не открывается, то у роли нет доступа к справочникам вообще, РАЗРЕШЕННЫЕ в данном случае не поможет.
В любом случае от вложенных запросов нужно избавляться, переводя их в запросы пакета.
---
Есть там замудренный запрос. И не могу придумать как его привести в нормальный вид:

```1c
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВложенныйЗапрос.Регистратор КАК Документ,
    ВложенныйЗапрос.Регистратор.Номер КАК НомерДокумента,
    ВложенныйЗапрос.Регистратор.Дата КАК ДатаДокумента,
    ВЫБОР
    КОГДА -ВложенныйЗапрос.СуммаОборот < 0
    ТОГДА -ВложенныйЗапрос.СуммаОборот
    КОНЕЦ КАК СуммаРасход,
    ВЫБОР
    КОГДА -ВложенныйЗапрос.СуммаОборот > 0
    ТОГДА -ВложенныйЗапрос.СуммаОборот
    КОНЕЦ КАК СуммаПриход
    ИЗ
    (ВЫБРАТЬ
    ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка КАК Регистратор,
    СУММА(ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Сумма) КАК СуммаОборот
    ИЗ
    Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОтчетОРозничныхПродажахОплатаПлатежнымиКартами
    ГДЕ
    ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Склад = &Склад
    И ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Проведен
    И ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

    СГРУППИРОВАТЬ ПО
    ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ЧекККМОплатаПлатежнымиКартами.Ссылка,
    СУММА(ЧекККМОплатаПлатежнымиКартами.Сумма)
    ИЗ
    Документ.ЧекККМ.ОплатаПлатежнымиКартами КАК ЧекККМОплатаПлатежнымиКартами
    ГДЕ
    ЧекККМОплатаПлатежнымиКартами.Ссылка.Склад = &Склад
    И НЕ ЧекККМОплатаПлатежнымиКартами.Ссылка.Архивный
    И ЧекККМОплатаПлатежнымиКартами.Ссылка.Проведен
    И ЧекККМОплатаПлатежнымиКартами.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

    СГРУППИРОВАТЬ ПО
    ЧекККМОплатаПлатежнымиКартами.Ссылка

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка,
    СУММА(-1 * ЧекККМВозвратОплатаПлатежнымиКартами.Сумма)
    ИЗ
    Документ.ЧекККМВозврат.ОплатаПлатежнымиКартами КАК ЧекККМВозвратОплатаПлатежнымиКартами
    ГДЕ
    ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Склад = &Склад
    И НЕ ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Архивный
    И ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Проведен
    И ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

    СГРУППИРОВАТЬ ПО
    ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка,
    СУММА(-1 * ОтчетБанкаПоОперациямЭквайрингаПокупки.Сумма)
    ИЗ
    Документ.ОтчетБанкаПоОперациямЭквайринга.Покупки КАК ОтчетБанкаПоОперациямЭквайрингаПокупки
    ГДЕ
    ОтчетБанкаПоОперациямЭквайрингаПокупки.ЭквайринговыйТерминал В(&ЭквайринговыйТерминал)
    И ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка.Проведен
    И ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

    СГРУППИРОВАТЬ ПО
    ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка,
    СУММА(ОтчетБанкаПоОперациямЭквайрингаВозвраты.Сумма)
    ИЗ
    Документ.ОтчетБанкаПоОперациямЭквайринга.Возвраты КАК ОтчетБанкаПоОперациямЭквайрингаВозвраты
    ГДЕ
    ОтчетБанкаПоОперациямЭквайрингаВозвраты.ЭквайринговыйТерминал В(&ЭквайринговыйТерминал)
    И ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка.Проведен
    И ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

    СГРУППИРОВАТЬ ПО
    ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка) КАК ВложенныйЗапрос
```

(4)
Не правильно это и не думаю что поможет.
(2)
(5)
1. Доступ к справочникам есть. Но ограничен доступ к элементам справочника на уровне записей.
2. Оператор "Разрешенные" работает только на верхнем уровне запроса.
---
Вложенный запрос вынести в пакет запроса, выбрать из результата пакета1.

```1c
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка КАК Регистратор,
    СУММА(ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Сумма) КАК СуммаОборот
    ПОМЕСТИТЬ ВТ_Данные
    ИЗ
    Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОтчетОРозничныхПродажахОплатаПлатежнымиКартами
    ГДЕ
    ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Склад = &Склад
    И ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Проведен
    И ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

    СГРУППИРОВАТЬ ПО
    ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ЧекККМОплатаПлатежнымиКартами.Ссылка,
    СУММА(ЧекККМОплатаПлатежнымиКартами.Сумма)
    ИЗ
    Документ.ЧекККМ.ОплатаПлатежнымиКартами КАК ЧекККМОплатаПлатежнымиКартами
    ГДЕ
    ЧекККМОплатаПлатежнымиКартами.Ссылка.Склад = &Склад
    И НЕ ЧекККМОплатаПлатежнымиКартами.Ссылка.Архивный
    И ЧекККМОплатаПлатежнымиКартами.Ссылка.Проведен
    И ЧекККМОплатаПлатежнымиКартами.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

    СГРУППИРОВАТЬ ПО
    ЧекККМОплатаПлатежнымиКартами.Ссылка

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка,
    СУММА(-1 * ЧекККМВозвратОплатаПлатежнымиКартами.Сумма)
    ИЗ
    Документ.ЧекККМВозврат.ОплатаПлатежнымиКартами КАК ЧекККМВозвратОплатаПлатежнымиКартами
    ГДЕ
    ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Склад = &Склад
    И НЕ ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Архивный
    И ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Проведен
    И ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

    СГРУППИРОВАТЬ ПО
    ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка,
    СУММА(-1 * ОтчетБанкаПоОперациямЭквайрингаПокупки.Сумма)
    ИЗ
    Документ.ОтчетБанкаПоОперациямЭквайринга.Покупки КАК ОтчетБанкаПоОперациямЭквайрингаПокупки
    ГДЕ
    ОтчетБанкаПоОперациямЭквайрингаПокупки.ЭквайринговыйТерминал В(&ЭквайринговыйТерминал)
    И ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка.Проведен
    И ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

    СГРУППИРОВАТЬ ПО
    ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка,
    СУММА(ОтчетБанкаПоОперациямЭквайрингаВозвраты.Сумма)
    ИЗ
    Документ.ОтчетБанкаПоОперациямЭквайринга.Возвраты КАК ОтчетБанкаПоОперациямЭквайрингаВозвраты
    ГДЕ
    ОтчетБанкаПоОперациямЭквайрингаВозвраты.ЭквайринговыйТерминал В(&ЭквайринговыйТерминал)
    И ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка.Проведен
    И ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

    СГРУППИРОВАТЬ ПО
    ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка
    ;

    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВложенныйЗапрос.Регистратор КАК Документ,
    ВложенныйЗапрос.Регистратор.Номер КАК НомерДокумента,
    ВложенныйЗапрос.Регистратор.Дата КАК ДатаДокумента,
    ВЫБОР
    КОГДА -ВложенныйЗапрос.СуммаОборот < 0
    ТОГДА -ВложенныйЗапрос.СуммаОборот
    КОНЕЦ КАК СуммаРасход,
    ВЫБОР
    КОГДА -ВложенныйЗапрос.СуммаОборот > 0
    ТОГДА -ВложенныйЗапрос.СуммаОборот
    КОНЕЦ КАК СуммаПриход
    ИЗ ВТ_Данные КАК ВложенныйЗапрос
```
---
переделал запросы. Но отчет всё равно ругается на доступ к справочнику "Эквайринговые терминалы".

Журнал регистрации:

При этом запрос в консоли запросов работает:
---
Есть ли способ решить проблемы с доступом без переписывания всего отчета? Или способ попроще.
Самый простой, но не самый правильный. Перед запросом- УстановитьПривилегированныйРежим(Истина);
---
к сожалению отчет надо переписывать полностью. Пока работает по вашему варианту.
---
Ничего оптимизировать не надо. РЛС работает само по себе. "Разрешенные" должно быть в каждом запросе, пробовать ничего не надо, просто дописать и все.
---
Можете дать права на чтение справочника, тогда запрос отработает корректно, но посмотреть результат по справочникам не сможет, но это и не надо, если они не выводятся.
---
Сообщение об ошибке написал бы.. посмотрим, какой такой Сухов.