Оптимален ли запрос

В запросе есть проблемы корректности: у таблицы «Остатки» нет поля периода строки, а коррелированный подзапрос в показанном виде не следует переносить из SQL в язык запросов 1С.

Короткий ответ

Что ответить на собеседовании

В запросе есть проблемы корректности: у таблицы «Остатки» нет поля периода строки, а коррелированный подзапрос в показанном виде не следует переносить из SQL в язык запросов 1С.

Подробный разбор

Ответ с пояснениями

Условие

Оптимален ли запрос

Запрос.Текст = "ВЫБРАТЬ ОстаткиТоваров.Номенклатура КАК Номенклатура, Цены.Цена КАК ЦенаПрошлогоМесяца ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(...) КАК ОстаткиТоваров ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цена КАК Цены ПО Цены.Номенклатура = ОстаткиТоваров.Номенклатура И Цены.Период В ( ВЫБРАТЬ МАКСИМУМ(ЦеныПрошлогоМесяца.Период) ИЗ РегистрСведений.Цена КАК ЦеныПрошлогоМесяца ГДЕ ЦеныПрошлогоМесяца.Период < НАЧАЛОПЕРИОДА(ОстаткиТоваров.Период, МЕСЯЦ) И ЦеныПрошлогоМесяца.Номенклатура = ОстаткиТоваров.Номенклатура ) ГДЕ ОстаткиТоваров.Склад = &Склад";

Ответ

В запросе есть проблемы корректности: у таблицы «Остатки» нет поля периода строки, а коррелированный подзапрос в показанном виде не следует переносить из SQL в язык запросов 1С.

Для единой даты отчёта заранее рассчитайте последний момент предыдущего месяца. Цены получите через СрезПоследних, а склад передайте в параметры виртуальной таблицы остатков:

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

Пример предполагает периодический регистр цен, где номенклатура достаточна для однозначного выбора. Если есть вид цены, валюта или другие измерения, добавьте нужные отборы и связи, иначе строки размножатся. «Последняя известная цена к концу месяца» отличается от «цены, установленной именно в прошлом месяце»: это требование нужно уточнить.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее