#std733¶
Эффективное обращение к виртуальной таблице «Остатки»¶
Эта рекомендация дополняет #std657: Обращения к виртуальным таблицам и описывает практики для виртуальной таблицы Остатки регистров накопления и бухгалтерии.
При обращении к виртуальной таблице платформа формирует вложенный SQL-запрос. Самый эффективный вариант — чтение хранимой таблицы текущих остатков без группировки по измерениям.
Чтобы платформа построила такой вариант, одновременно выполняйте условия:
- получайте остатки без указания даты;
- не используйте режим разделения итогов;
- во внешнем запросе используйте все измерения виртуальной таблицы (в
ВЫБРАТЬи/или в условиях соединения).
Неправильно
ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Товар,
ЕСТЬNULL(ОстаткиТоваров.Остаток, 0) КАК Остаток
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(&СегодняшняяДата, Склад = &Склад) КАК ОстаткиТоваров
ПО ОстаткиТоваров.Номенклатура = СпрНоменклатура.Ссылка
В этом варианте передана дата и не использовано измерение Склад во внешнем запросе.
Правильно
ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Товар,
ЕСТЬNULL(ОстаткиТоваров.Остаток, 0) КАК Остаток
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(, Склад = &Склад) КАК ОстаткиТоваров
ПО ОстаткиТоваров.Номенклатура = СпрНоменклатура.Ссылка
И ОстаткиТоваров.Склад = &Склад
См. также¶
- #std657: Обращения к виртуальным таблицам
- #std664: Режим разделения итогов для регистров накопления
- #std663: Режим разделения итогов для регистров бухгалтерии
Проверки¶
#bslls:VirtualTableCallWithoutParameters