Как оптимизировать запросы с вложенными запросами под ограничение на уровне записей?
Привет Всем!
Есть самописный отчет с кучей запросов, в которых есть куча вложенных запросов. Создана роль, с ограничением на уровне записей. И пользователь с этой ролью не может открыть отчет. В журнале регистрации указывается на проблемы с доступом к справочникам к которым ограничен доступ.
Есть ли способ решить проблемы с доступом без переписывания всего отчета? Или способ попроще.
P.S. Пробовал "ВЫБРАТЬ РАЗРЕШЕННЫЕ". Но эта фишка работает только с первым запросом.
Есть самописный отчет с кучей запросов, в которых есть куча вложенных запросов. Создана роль, с ограничением на уровне записей. И пользователь с этой ролью не может открыть отчет. В журнале регистрации указывается на проблемы с доступом к справочникам к которым ограничен доступ.
Есть ли способ решить проблемы с доступом без переписывания всего отчета? Или способ попроще.
P.S. Пробовал "ВЫБРАТЬ РАЗРЕШЕННЫЕ". Но эта фишка работает только с первым запросом.
По теме из базы знаний
- 115 полезностей по курсу СКД Евгения Гилёва
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Highload-оптимизация 1С: теория и практика на примере консолидированной отчетности группы "Магнит" и розничной аптечной сети "Магнит"
- Исправляем проблемы производительности в конфигурации ERP - 7 примеров
- Быстрый фронт в базе размером 6.8 терабайт – наши стандарты при разработке и рефакторинге запросов
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
Есть там замудренный запрос. И не могу придумать как его привести в нормальный вид:
(4)
Не правильно это и не думаю что поможет.
(2)
(5)
1. Доступ к справочникам есть. Но ограничен доступ к элементам справочника на уровне записей.
2. Оператор "Разрешенные" работает только на верхнем уровне запроса.
Есть там замудренный запрос. И не могу придумать как его привести в нормальный вид:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВложенныйЗапрос.Регистратор КАК Документ,
ВложенныйЗапрос.Регистратор.Номер КАК НомерДокумента,
ВложенныйЗапрос.Регистратор.Дата КАК ДатаДокумента,
ВЫБОР
КОГДА -ВложенныйЗапрос.СуммаОборот < 0
ТОГДА -ВложенныйЗапрос.СуммаОборот
КОНЕЦ КАК СуммаРасход,
ВЫБОР
КОГДА -ВложенныйЗапрос.СуммаОборот > 0
ТОГДА -ВложенныйЗапрос.СуммаОборот
КОНЕЦ КАК СуммаПриход
ИЗ
(ВЫБРАТЬ
ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка КАК Регистратор,
СУММА(ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Сумма) КАК СуммаОборот
ИЗ
Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОтчетОРозничныхПродажахОплатаПлатежнымиКартами
ГДЕ
ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Склад = &Склад
И ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Проведен
И ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЧекККМОплатаПлатежнымиКартами.Ссылка,
СУММА(ЧекККМОплатаПлатежнымиКартами.Сумма)
ИЗ
Документ.ЧекККМ.ОплатаПлатежнымиКартами КАК ЧекККМОплатаПлатежнымиКартами
ГДЕ
ЧекККМОплатаПлатежнымиКартами.Ссылка.Склад = &Склад
И НЕ ЧекККМОплатаПлатежнымиКартами.Ссылка.Архивный
И ЧекККМОплатаПлатежнымиКартами.Ссылка.Проведен
И ЧекККМОплатаПлатежнымиКартами.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ЧекККМОплатаПлатежнымиКартами.Ссылка
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка,
СУММА(-1 * ЧекККМВозвратОплатаПлатежнымиКартами.Сумма)
ИЗ
Документ.ЧекККМВозврат.ОплатаПлатежнымиКартами КАК ЧекККМВозвратОплатаПлатежнымиКартами
ГДЕ
ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Склад = &Склад
И НЕ ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Архивный
И ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Проведен
И ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка,
СУММА(-1 * ОтчетБанкаПоОперациямЭквайрингаПокупки.Сумма)
ИЗ
Документ.ОтчетБанкаПоОперациямЭквайринга.Покупки КАК ОтчетБанкаПоОперациямЭквайрингаПокупки
ГДЕ
ОтчетБанкаПоОперациямЭквайрингаПокупки.ЭквайринговыйТерминал В(&ЭквайринговыйТерминал)
И ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка.Проведен
И ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка,
СУММА(ОтчетБанкаПоОперациямЭквайрингаВозвраты.Сумма)
ИЗ
Документ.ОтчетБанкаПоОперациямЭквайринга.Возвраты КАК ОтчетБанкаПоОперациямЭквайрингаВозвраты
ГДЕ
ОтчетБанкаПоОперациямЭквайрингаВозвраты.ЭквайринговыйТерминал В(&ЭквайринговыйТерминал)
И ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка.Проведен
И ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка) КАК ВложенныйЗапрос
Показать(4)
Не правильно это и не думаю что поможет.
(2)
(5)
1. Доступ к справочникам есть. Но ограничен доступ к элементам справочника на уровне записей.
2. Оператор "Разрешенные" работает только на верхнем уровне запроса.
(6)Вложенный запрос вынести в пакет запроса, выбрать из результата пакета1.
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка КАК Регистратор,
СУММА(ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Сумма) КАК СуммаОборот
ПОМЕСТИТЬ ВТ_Данные
ИЗ
Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОтчетОРозничныхПродажахОплатаПлатежнымиКартами
ГДЕ
ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Склад = &Склад
И ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Проведен
И ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЧекККМОплатаПлатежнымиКартами.Ссылка,
СУММА(ЧекККМОплатаПлатежнымиКартами.Сумма)
ИЗ
Документ.ЧекККМ.ОплатаПлатежнымиКартами КАК ЧекККМОплатаПлатежнымиКартами
ГДЕ
ЧекККМОплатаПлатежнымиКартами.Ссылка.Склад = &Склад
И НЕ ЧекККМОплатаПлатежнымиКартами.Ссылка.Архивный
И ЧекККМОплатаПлатежнымиКартами.Ссылка.Проведен
И ЧекККМОплатаПлатежнымиКартами.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ЧекККМОплатаПлатежнымиКартами.Ссылка
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка,
СУММА(-1 * ЧекККМВозвратОплатаПлатежнымиКартами.Сумма)
ИЗ
Документ.ЧекККМВозврат.ОплатаПлатежнымиКартами КАК ЧекККМВозвратОплатаПлатежнымиКартами
ГДЕ
ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Склад = &Склад
И НЕ ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Архивный
И ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Проведен
И ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ЧекККМВозвратОплатаПлатежнымиКартами.Ссылка
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка,
СУММА(-1 * ОтчетБанкаПоОперациямЭквайрингаПокупки.Сумма)
ИЗ
Документ.ОтчетБанкаПоОперациямЭквайринга.Покупки КАК ОтчетБанкаПоОперациямЭквайрингаПокупки
ГДЕ
ОтчетБанкаПоОперациямЭквайрингаПокупки.ЭквайринговыйТерминал В(&ЭквайринговыйТерминал)
И ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка.Проведен
И ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ОтчетБанкаПоОперациямЭквайрингаПокупки.Ссылка
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка,
СУММА(ОтчетБанкаПоОперациямЭквайрингаВозвраты.Сумма)
ИЗ
Документ.ОтчетБанкаПоОперациямЭквайринга.Возвраты КАК ОтчетБанкаПоОперациямЭквайрингаВозвраты
ГДЕ
ОтчетБанкаПоОперациямЭквайрингаВозвраты.ЭквайринговыйТерминал В(&ЭквайринговыйТерминал)
И ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка.Проведен
И ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
ОтчетБанкаПоОперациямЭквайрингаВозвраты.Ссылка
;
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВложенныйЗапрос.Регистратор КАК Документ,
ВложенныйЗапрос.Регистратор.Номер КАК НомерДокумента,
ВложенныйЗапрос.Регистратор.Дата КАК ДатаДокумента,
ВЫБОР
КОГДА -ВложенныйЗапрос.СуммаОборот < 0
ТОГДА -ВложенныйЗапрос.СуммаОборот
КОНЕЦ КАК СуммаРасход,
ВЫБОР
КОГДА -ВложенныйЗапрос.СуммаОборот > 0
ТОГДА -ВложенныйЗапрос.СуммаОборот
КОНЕЦ КАК СуммаПриход
ИЗ ВТ_Данные КАК ВложенныйЗапрос
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот