Остатки на каждый день в запросе

Данный запрос формирует остатки на каждый день по регистру Товары на складах в УТ 11. В параметрах нужно задать Дата1 и Дата2, это период за который нужно получить остатки:

Сам запрос:

ВЫБРАТЬ
	0 КАК Цифра
ПОМЕСТИТЬ ВТЦифры
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
	1
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
	2
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
	3
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
	4
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
	5
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
	6
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
	7
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
	8
 
ОБЪЕДИНИТЬ ВСЕ
 
ВЫБРАТЬ
	9
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, ВТЦифры.Цифра + ВТЦифры1.Цифра * 10) КАК Дата
ПОМЕСТИТЬ ВТДаты
ИЗ
	ВТЦифры КАК ВТЦифры
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТЦифры КАК ВТЦифры1
		ПО (ИСТИНА)
ГДЕ
	ДОБАВИТЬКДАТЕ(&Дата1, ДЕНЬ, ВТЦифры.Цифра + ВТЦифры1.Цифра * 10) МЕЖДУ &Дата1 И &Дата2
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	КОНЕЦПЕРИОДА(ВТДаты.Дата, ДЕНЬ) КАК Дата,
	ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
	СУММА(ВЫБОР
			КОГДА ТоварыНаСкладахОстаткиИОбороты.Период = &Дата1
				ТОГДА ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток
			ИНАЧЕ ВЫБОР
					КОГДА ТоварыНаСкладахОстаткиИОбороты.Период <= ВТДаты.Дата
						ТОГДА ТоварыНаСкладахОстаткиИОбороты.ВНаличииОборот
					ИНАЧЕ 0
				КОНЕЦ
		КОНЕЦ) КАК Остаток
ИЗ
	ВТДаты КАК ВТДаты,
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , День, , ) КАК ТоварыНаСкладахОстаткиИОбороты
 
СГРУППИРОВАТЬ ПО
	ТоварыНаСкладахОстаткиИОбороты.Склад,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
	КОНЕЦПЕРИОДА(ВТДаты.Дата, ДЕНЬ)
 
УПОРЯДОЧИТЬ ПО
	Дата,
	Склад,
	Номенклатура

В первом запросе пакета выбираем все цифры от 0 до 9:

Во втором запросе формируем выборку дат за указанный период:

И наконец в третьем запросе получаем остатки на конец каждого дня из периода:

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями: