Нужна подсказка по оптимальной структуре запроса

1. user1532282 16.06.21 07:42 Сейчас в теме
Пытаюсь понять,какой структуры должен быть запрос для следующей задачи (упрощаю конечно, но смысл не меняется):
Есть остатки товаров в регистре ТоварыНаСкладахОстатки, например Шоколад, остаток 1000 штук. Необходимо подобрать ПОСЛЕДНИЕ поступления этого товара, на указанное количество.
То что могут быть расходны, возвраты и прочее не принимаем во внимание, нужны только последние поступления.
Вроде бы простая постановка, но, не могу понять, какая должна быть оптимальная структура запроса для такой задачи.
Буду рад помощи, хотя бы кратко, тезисно
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 16.06.21 07:51 Сейчас в теме
(1)тезисно:
Нарастающим итогом собираете все поступления, начиная с самого последнего назад, и ограничиваете нужным вам количеством.
7. blockcode 40 16.06.21 10:40 Сейчас в теме
(1) если нужны поступления, то смотреть нужно не остатки, а движения регистра ТоварыНаСкладах

	лТекст = "
		|ВЫБРАТЬ ПЕРВЫЕ 1
		|	ТоварыНаСкладах.Период КАК Период,
		|	ТоварыНаСкладах.Регистратор КАК Регистратор
		|ИЗ
		|	РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
		|ГДЕ
		|	ТоварыНаСкладах.ВидДвижения = &ВидДвижения
		|	И ТоварыНаСкладах.Количество = &Количество
		|
		|УПОРЯДОЧИТЬ ПО
		|	Период УБЫВ
		|";

	лЗапрос = Новый Запрос(лТекст);

	// Присвоение значений переменным параметров.

	ВидДвижения = Приход;
	Количество = 1000;

	// Установка параметров.
	лЗапрос.УстановитьПараметр("ВидДвижения", ВидДвижения);
	лЗапрос.УстановитьПараметр("Количество", Количество);


	лВыборка = лЗапрос.Выполнить().Выбрать();
Показать
3. user1532282 16.06.21 08:42 Сейчас в теме
А вы точно про запрос? Я не понимаю как это сделать в рамках запроса, как соединять, группировать итд, или может быть такая задача решается только доп обработкой результатов запроса, и сразу получить готовую выборку не возможно?
4. nomad_irk 76 16.06.21 08:57 Сейчас в теме
(3)Точно про запрос. Если квалификации не хватает сделать запросом, то делайте с допобработкой.
Принцип = списание партий FIFO.

В этом случае вам нужна Таблица

Номенклатура, КоличествоПоступления, ДокументПоступления, МоментВремениДокумента
5. ilnur75 16.06.21 09:08 Сейчас в теме
сортировка УБЫВ по МоментВремени
6. user1532282 16.06.21 09:59 Сейчас в теме
(4) так я как раз и задаю вопрос, потому что квалификации не хватает, и имею желание ее повысить)
все таки хочется принципа запрсоа с нужной мне выборкой.
8. SlavaKron 16.06.21 10:47 Сейчас в теме
Оптимальнее обработка результата запроса. Можно и так:
ВЫБРАТЬ
	Т1.Период КАК Период,
	Т1.Регистратор КАК Регистратор,
	Т1.Количество КАК Количество
ИЗ
	РегистрНакопления.ТоварыНаСкладах КАК Т1
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах КАК Т2
		ПО (Т1.Номенклатура = Т2.Номенклатура)
			И (Т1.Период <= Т2.Период)
ГДЕ
	Т1.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
	И Т2.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)

СГРУППИРОВАТЬ ПО
	Т1.Период,
	Т1.Регистратор,
	Т1.Количество

ИМЕЮЩИЕ
	СУММА(Т2.Количество) <= 1000
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот