Помогите оптимизировать запрос к бухгалтерскому регистру!!
Запрос к бухгалтерскому регистру остатков выполняется больше секунды, хотя ничего крамольного в нем не вижу.
При проведении документа "Возврат от покупателя" время выполнения этого запроса составляет 43% от общего. Можно ли что-либо сделать?
ВЫБРАТЬ
Остатки.Счет,
Остатки.Субконто1,
Остатки.Субконто2,
Остатки.Субконто3,
ВЫРАЗИТЬ(СУММА(ВЫБОР
КОГДА Остатки.СуммаОстаток ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ Остатки.СуммаОстаток
КОНЕЦ) КАК ЧИСЛО) КАК СуммаОстаток,
ВЫБОР
КОГДА Остатки.Счет.Валютный = ИСТИНА
ТОГДА Остатки.Валюта
ИНАЧЕ НЕОПРЕДЕЛЕНО
КОНЕЦ КАК Валюта,
ВЫРАЗИТЬ(СУММА(ВЫБОР
КОГДА Остатки.ВалютнаяСуммаОстаток ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ Остатки.ВалютнаяСуммаОстаток
КОНЕЦ) КАК ЧИСЛО) КАК ВалютнаяСуммаОстаток
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(
&Период,
Счет = &Счет,
,
Организация = &Организация
И Субконто1 = &Субконто1
И Субконто2 = &Субконто2) КАК Остатки
СГРУППИРОВАТЬ ПО
Остатки.Счет,
Остатки.Субконто1,
Остатки.Субконто2,
Остатки.Субконто3,
Остатки.Валюта,
ВЫБОР
КОГДА Остатки.Счет.Валютный = ИСТИНА
ТОГДА Остатки.Валюта
ИНАЧЕ НЕОПРЕДЕЛЕНО
КОНЕЦ
УПОРЯДОЧИТЬ ПО
Остатки.Счет,
Остатки.Субконто1,
Остатки.Субконто2,
Остатки.Субконто3,
Валюта
ПоказатьПри проведении документа "Возврат от покупателя" время выполнения этого запроса составляет 43% от общего. Можно ли что-либо сделать?
По теме из базы знаний
Найденные решения
Короче где-то так:
ВЫБРАТЬ
Остатки.Счет,
Остатки.Субконто1,
Остатки.Субконто2,
Остатки.Субконто3,
Остатки.СуммаОстаток КАК СуммаОстаток,
ЕСТЬNULL(Остатки.Валюта, НЕОПРЕДЕЛЕНО) КАК Валюта,
Остатки.ВалютнаяСуммаОстаток КАК ВалютнаяСуммаОстаток
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(
&Период,
Счет = &Счет,
&ВидыСубконто,
Организация = &Организация
И Субконто1 = &Субконто1
И Субконто2 = &Субконто2) КАК Остатки
УПОРЯДОЧИТЬ ПО
Остатки.Счет,
Остатки.Субконто1,
Остатки.Субконто2,
Остатки.Субконто3,
Валюта
ПоказатьОстальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Зачем данная конструкция? Null в остатках не будет
Также установите массив видов субконто.
Также сортировка по Счету, Субконто1, Субконто2 тоже лишние, вы их устанавливаете параметром, значит они будут однозначные. Можно их также в запрос не выбирать, если они устанавливаются параметром. Валютный ли счет можно узнать вне запроса, счет то есть. И да. группировки не нужны.
ВЫРАЗИТЬ(СУММА(ВЫБОР
КОГДА Остатки.СуммаОстаток ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ Остатки.СуммаОстаток
КОНЕЦ) КАК ЧИСЛО) КАК СуммаОстаток,
КОГДА Остатки.СуммаОстаток ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ Остатки.СуммаОстаток
КОНЕЦ) КАК ЧИСЛО) КАК СуммаОстаток,
Зачем данная конструкция? Null в остатках не будет
Также установите массив видов субконто.
Также сортировка по Счету, Субконто1, Субконто2 тоже лишние, вы их устанавливаете параметром, значит они будут однозначные. Можно их также в запрос не выбирать, если они устанавливаются параметром. Валютный ли счет можно узнать вне запроса, счет то есть. И да. группировки не нужны.
(9) я вижу что нет. А у пользователя есть полные права или нет?
Я столкнулся с диким падением производительности в простейших запросах в УТ из-за того, что 1с-ники "оптимизировали" rls под postgre sql.
Теперь с нетерпением жду обещанное исправление. Проявляется если у пользователя нет полных прав.
Я столкнулся с диким падением производительности в простейших запросах в УТ из-за того, что 1с-ники "оптимизировали" rls под postgre sql.
Теперь с нетерпением жду обещанное исправление. Проявляется если у пользователя нет полных прав.
Подозреваю, что нужны остатки по субконто с определенным типом. Используйте выражение Выразить( Остатки.Субконто1 Как Справочник.Номенклатура) или что оно там должно быть.
И да, конструкция типа "СУММА(ВЫБОР
КОГДА Остатки.ВалютнаяСуммаОстаток ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ Остатки.ВалютнаяСуммаОстаток
КОНЕЦ) " - полный бред.
И да, конструкция типа "СУММА(ВЫБОР
КОГДА Остатки.ВалютнаяСуммаОстаток ЕСТЬ NULL
ТОГДА 0
ИНАЧЕ Остатки.ВалютнаяСуммаОстаток
КОНЕЦ) " - полный бред.
Короче где-то так:
ВЫБРАТЬ
Остатки.Счет,
Остатки.Субконто1,
Остатки.Субконто2,
Остатки.Субконто3,
Остатки.СуммаОстаток КАК СуммаОстаток,
ЕСТЬNULL(Остатки.Валюта, НЕОПРЕДЕЛЕНО) КАК Валюта,
Остатки.ВалютнаяСуммаОстаток КАК ВалютнаяСуммаОстаток
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(
&Период,
Счет = &Счет,
&ВидыСубконто,
Организация = &Организация
И Субконто1 = &Субконто1
И Субконто2 = &Субконто2) КАК Остатки
УПОРЯДОЧИТЬ ПО
Остатки.Счет,
Остатки.Субконто1,
Остатки.Субконто2,
Остатки.Субконто3,
Валюта
ПоказатьИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(
&Период,
Счет = &Счет,
,
Организация = &Организация
И Субконто1 = &Субконто1
И Субконто2 = &Субконто2) КАК Остатки
РегистрБухгалтерии.Хозрасчетный.Остатки(
&Период,
Счет = &Счет,
,
Организация = &Организация
И Субконто1 = &Субконто1
И Субконто2 = &Субконто2) КАК Остатки
Вижу у запроса параметры... Запрос совершенно случайно не в цикле выполняется для каждой строки документа возврата?
С учетом всех советов получилось:
Время выполнения уменьшилось в 3 раза. Спасибо огромное всем!!!
ВЫБРАТЬ
Остатки.Счет,
Остатки.Субконто1,
Остатки.Субконто2,
ЕСТЬNULL(Остатки.СуммаОстаток, 0) КАК СуммаОстаток,
ВЫБОР
КОГДА Остатки.Счет.Валютный = ИСТИНА
ТОГДА Остатки.Валюта
ИНАЧЕ НЕОПРЕДЕЛЕНО
КОНЕЦ КАК Валюта,
ЕСТЬNULL(Остатки.ВалютнаяСуммаОстаток, 0) КАК ВалютнаяСуммаОстаток
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(
&Период,
Счет = &Счет,
&ВидыСубконто,
Организация = &Организация
И ПодразделениеОрганизации = &ПодразделениеОрганизации
И флагБУ = &флагБУ
И ФлагУУ
И Субконто1 = &Субконто1
И Субконто2 = &Субконто2) КАК Остатки
ПоказатьВремя выполнения уменьшилось в 3 раза. Спасибо огромное всем!!!
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)