0
Gera1t
02.02.23
✎
10:39
|
Здравствуйте!
Вот такой запрос:
ВЫБРАТЬ
ЗаказПокупателяЗапасы.Номенклатура КАК Номенклатура,
ЗаказПокупателяЗапасы.Характеристика КАК Характеристика,
СпецификацииСостав.Номенклатура КАК Комплектующее,
СпецификацииСостав.Характеристика КАК КомплектующееХарактеристика,
СпецификацииСостав.Количество КАК Количество
ПОМЕСТИТЬ ВТ
ИЗ
Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Спецификации.Состав КАК СпецификацииСостав
ПО (ЗаказПокупателяЗапасы.Спецификация = СпецификацииСостав.Ссылка)
ГДЕ
ЗаказПокупателяЗапасы.Ссылка = &Ссылка
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Закупки.Номенклатура КАК Номенклатура,
Закупки.Характеристика КАК Характеристика,
Закупки.Сумма / Закупки.Количество КАК Стоимость
ИЗ
РегистрНакопления.Закупки КАК Закупки
ГДЕ
Закупки.Номенклатура В
(ВЫБРАТЬ
ВТ.Комплектующее КАК Комплектующее
ИЗ
ВТ КАК ВТ)
И Закупки.Период <= &Период
УПОРЯДОЧИТЬ ПО
Закупки.Период УБЫВ
Задача выбрать последнюю закупку. Но если делаю так, то в запрос попадает не только последняя закупка, но и вся закупка за период меньше указанной даты.
Сейчас решил путем разделения этого запроса на 2.
Сначала вот так:
ВЫБРАТЬ
ЗаказПокупателяЗапасы.Номенклатура КАК Номенклатура,
ЗаказПокупателяЗапасы.Характеристика КАК Характеристика,
СпецификацииСостав.Номенклатура КАК Комплектующее,
СпецификацииСостав.Характеристика КАК КомплектующееХарактеристика,
СпецификацииСостав.Количество КАК Количество
ПОМЕСТИТЬ ВТ
ИЗ
Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Спецификации.Состав КАК СпецификацииСостав
ПО (ЗаказПокупателяЗапасы.Спецификация = СпецификацииСостав.Ссылка)
ГДЕ
ЗаказПокупателяЗапасы.Ссылка = &Ссылка
;
а потом вот так:
ВЫБРАТЬ ПЕРВЫЕ 1
Закупки.Номенклатура,
Закупки.Характеристика,
Закупки.Сумма / Закупки.Количество КАК Стоимость,
Закупки.Период КАК Период
ИЗ
РегистрНакопления.Закупки КАК Закупки
ГДЕ
Закупки.Номенклатура = &Номенклатура
И Закупки.Характеристика = &Характеристика
И Закупки.Период <= &Период
УПОРЯДОЧИТЬ ПО
Период УБЫВ
Подскажите пожалуйста, можно ли как то это реализовать в 1 запросе?
|
|
4
eddy_n
02.02.23
✎
11:00
|
В итоговом запросе рядом с полем номенклатуры (и возможно характеристикой) рядом должно присутствовать только поле периода и больше ничего. ИНАЧЕ БУДЕТ МИЛЛИОН ПЕРВЫХ ЗАПИСЕЙ. Сворачивай подзапросами предварительно, если стоит условие сделать всё в одном флаконе.
|
|
6
eddy_n
02.02.23
✎
11:25
|
(5) Если так, то не используй подзапросы на больших выборках. ВРЕМЕННЫЕ ТАБЛИЦЫ помогут. У подзапросов нет Плана, выражаясь языком СУБД. Статистики тоже естественно нет. Это - кот в мешке.
|
|