Нужна подсказка по оптимальной структуре запроса
Пытаюсь понять,какой структуры должен быть запрос для следующей задачи (упрощаю конечно, но смысл не меняется):
Есть остатки товаров в регистре ТоварыНаСкладахОстатки, например Шоколад, остаток 1000 штук. Необходимо подобрать ПОСЛЕДНИЕ поступления этого товара, на указанное количество.
То что могут быть расходны, возвраты и прочее не принимаем во внимание, нужны только последние поступления.
Вроде бы простая постановка, но, не могу понять, какая должна быть оптимальная структура запроса для такой задачи.
Буду рад помощи, хотя бы кратко, тезисно
Есть остатки товаров в регистре ТоварыНаСкладахОстатки, например Шоколад, остаток 1000 штук. Необходимо подобрать ПОСЛЕДНИЕ поступления этого товара, на указанное количество.
То что могут быть расходны, возвраты и прочее не принимаем во внимание, нужны только последние поступления.
Вроде бы простая постановка, но, не могу понять, какая должна быть оптимальная структура запроса для такой задачи.
Буду рад помощи, хотя бы кратко, тезисно
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) если нужны поступления, то смотреть нужно не остатки, а движения регистра ТоварыНаСкладах
лТекст = "
|ВЫБРАТЬ ПЕРВЫЕ 1
| ТоварыНаСкладах.Период КАК Период,
| ТоварыНаСкладах.Регистратор КАК Регистратор
|ИЗ
| РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
|ГДЕ
| ТоварыНаСкладах.ВидДвижения = &ВидДвижения
| И ТоварыНаСкладах.Количество = &Количество
|
|УПОРЯДОЧИТЬ ПО
| Период УБЫВ
|";
лЗапрос = Новый Запрос(лТекст);
// Присвоение значений переменным параметров.
ВидДвижения = Приход;
Количество = 1000;
// Установка параметров.
лЗапрос.УстановитьПараметр("ВидДвижения", ВидДвижения);
лЗапрос.УстановитьПараметр("Количество", Количество);
лВыборка = лЗапрос.Выполнить().Выбрать();
Показать
А вы точно про запрос? Я не понимаю как это сделать в рамках запроса, как соединять, группировать итд, или может быть такая задача решается только доп обработкой результатов запроса, и сразу получить готовую выборку не возможно?
Оптимальнее обработка результата запроса. Можно и так:
ВЫБРАТЬ
Т1.Период КАК Период,
Т1.Регистратор КАК Регистратор,
Т1.Количество КАК Количество
ИЗ
РегистрНакопления.ТоварыНаСкладах КАК Т1
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК Т2
ПО (Т1.Номенклатура = Т2.Номенклатура)
И (Т1.Период <= Т2.Период)
ГДЕ
Т1.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
И Т2.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
СГРУППИРОВАТЬ ПО
Т1.Период,
Т1.Регистратор,
Т1.Количество
ИМЕЮЩИЕ
СУММА(Т2.Количество) <= 1000
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот