Перейти к содержанию
#std733

Эффективное обращение к виртуальной таблице «Остатки»

Эта рекомендация дополняет #std657: Обращения к виртуальным таблицам и описывает практики для виртуальной таблицы Остатки регистров накопления и бухгалтерии.

При обращении к виртуальной таблице платформа формирует вложенный SQL-запрос. Самый эффективный вариант — чтение хранимой таблицы текущих остатков без группировки по измерениям.

Чтобы платформа построила такой вариант, одновременно выполняйте условия:

  • получайте остатки без указания даты;
  • не используйте режим разделения итогов;
  • во внешнем запросе используйте все измерения виртуальной таблицы (в ВЫБРАТЬ и/или в условиях соединения).

Неправильно

ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Товар,
    ЕСТЬNULL(ОстаткиТоваров.Остаток, 0) КАК Остаток
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(&СегодняшняяДата, Склад = &Склад) КАК ОстаткиТоваров
    ПО ОстаткиТоваров.Номенклатура = СпрНоменклатура.Ссылка

В этом варианте передана дата и не использовано измерение Склад во внешнем запросе.

Правильно

ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Товар,
    ЕСТЬNULL(ОстаткиТоваров.Остаток, 0) КАК Остаток
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(, Склад = &Склад) КАК ОстаткиТоваров
    ПО ОстаткиТоваров.Номенклатура = СпрНоменклатура.Ссылка
       И ОстаткиТоваров.Склад = &Склад
См. также
Проверки

#bslls:VirtualTableCallWithoutParameters

Источник

https://its.1c.ru/db/v8std#content:733