Остатки на каждый день

1. Deals 11.09.18 12:19 Сейчас в теме
Доброго времени суток! Извините, что скидываю этот код сюда в таком виде, уже замучился и не понимаю. Хочу получить остатки на каждый конец дня. А оно мне выдает остатки на начало дня. Передаю периоды как КонецДня.
ВЫБРАТЬ
	ВЫБОР
		КОГДА КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, t.n), ДЕНЬ) > &КонецПериода
			ТОГДА КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
		ИНАЧЕ НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, t.n), ДЕНЬ)
	КОНЕЦ КАК Дата,
	Номенклатура.Ссылка КАК Номенклатура,
	Склады.Ссылка КАК Склад
ПОМЕСТИТЬ ТаблицаДат
ИЗ
	(ВЫБРАТЬ
		40 * (t1.a - 1) + t2.b - 1 КАК n
	ИЗ
		(ВЫБРАТЬ
			1 КАК a
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			2
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			3
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			4
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			5
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			6
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			7
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			8
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			9
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			10
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			11
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			12
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			13
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			14
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			15
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			16
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			17
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			18
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			19
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			20
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			21
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			22
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			23
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			24
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			25
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			26
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			27
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			28
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			29
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			30
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			31
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			32
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			33
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			34
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			35
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			36
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			37
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			8
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			39
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			40) КАК t1
			ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
				1 КАК b
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				2
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				3
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				4
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				5
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				6
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				7
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				8
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				9
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				10
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				11
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				12
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				13
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				14
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				15
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				16
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				17
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				18
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				19
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				20
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				21
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				22
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				23
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				24
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				25
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				26
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				27
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				28
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				29
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				30
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				31
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				32
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				33
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				34
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				35
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				36
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				37
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				8
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				39
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				40) КАК t2
			ПО (ИСТИНА)) КАК t,
	Справочник.Номенклатура КАК Номенклатура,
	Справочник.Склады КАК Склады
ГДЕ
	t.n <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
	И Номенклатура.Ссылка В ИЕРАРХИИ(&Номенклатура)
	И НЕ Номенклатура.ЭтоГруппа
	И Склады.Ссылка В ИЕРАРХИИ(&Склады)

СГРУППИРОВАТЬ ПО
	Склады.Ссылка,
	Номенклатура.Ссылка,
	ВЫБОР
		КОГДА КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, t.n), ДЕНЬ) > &КонецПериода
			ТОГДА КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
		ИНАЧЕ НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, t.n), ДЕНЬ)
	КОНЕЦ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВложенныйЗапрос.НачалоПериода,
	ВложенныйЗапрос.Номенклатура,
	ВложенныйЗапрос.Склад,
	СУММА(ВЫБОР
			КОГДА ЕСТЬNULL(ВложенныйЗапрос.Количество, 0) = 0
				ТОГДА ВложенныйЗапрос.КоличествоНаНачалоПериода
			ИНАЧЕ ВложенныйЗапрос.Количество
		КОНЕЦ) КАК Количество
ПОМЕСТИТЬ ОстаткиНаДату
ИЗ
	(ВЫБРАТЬ
		ВложенныйЗапрос.НачалоПериода КАК НачалоПериода,
		ВложенныйЗапрос.Склад КАК Склад,
		ВложенныйЗапрос.Номенклатура КАК Номенклатура,
		СУММА(ВложенныйЗапрос.Количество) КАК Количество,
		СУММА(ВложенныйЗапрос.КоличествоНаНачалоПериода) КАК КоличествоНаНачалоПериода
	ИЗ
		(ВЫБРАТЬ
			&НачалоПериода КАК НачалоПериода,
			ТоварыНаСкладахОстатки.Склад КАК Склад,
			ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
			0 КАК Количество,
			ТоварыНаСкладахОстатки.ВНаличииОстаток КАК КоличествоНаНачалоПериода
		ИЗ
			РегистрНакопления.ТоварыНаСкладах.Остатки(
					&НачалоПериода,
					Номенклатура В ИЕРАРХИИ (&Номенклатура)
						И Склад В ИЕРАРХИИ (&Склады)) КАК ТоварыНаСкладахОстатки
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			КОНЕЦПЕРИОДА(ТоварыНаСкладахОстаткиИОбороты.Период, ДЕНЬ),
			ТоварыНаСкладахОстаткиИОбороты.Склад,
			ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
			ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток,
			0
		ИЗ
			РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
					&НачалоПериода,
					&КонецПериода,
					День,
					,
					Номенклатура В ИЕРАРХИИ (&Номенклатура)
						И Склад В ИЕРАРХИИ (&Склады)) КАК ТоварыНаСкладахОстаткиИОбороты) КАК ВложенныйЗапрос
	
	СГРУППИРОВАТЬ ПО
		ВложенныйЗапрос.НачалоПериода,
		ВложенныйЗапрос.Склад,
		ВложенныйЗапрос.Номенклатура) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
	ВложенныйЗапрос.Номенклатура,
	ВложенныйЗапрос.НачалоПериода,
	ВложенныйЗапрос.Склад
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВложенныйЗапрос.НачалоПериода,
	ВложенныйЗапрос.КонецПериода,
	ВложенныйЗапрос.Номенклатура,
	ВложенныйЗапрос.Склад,
	ВложенныйЗапрос.Количество
ПОМЕСТИТЬ ОстаткиПериодами
ИЗ
	(ВЫБРАТЬ
		Остатки.НачалоПериода КАК НачалоПериода,
		МИНИМУМ(ЕСТЬNULL(ОстаткиКонец.НачалоПериода, ДОБАВИТЬКДАТЕ(КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), СЕКУНДА, 1))) КАК КонецПериода,
		Остатки.Номенклатура КАК Номенклатура,
		Остатки.Склад КАК Склад,
		Остатки.Количество КАК Количество
	ИЗ
		ОстаткиНаДату КАК Остатки
			ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиНаДату КАК ОстаткиКонец
			ПО Остатки.Номенклатура = ОстаткиКонец.Номенклатура
				И Остатки.Склад = ОстаткиКонец.Склад
				И Остатки.НачалоПериода < ОстаткиКонец.НачалоПериода
	
	СГРУППИРОВАТЬ ПО
		Остатки.НачалоПериода,
		Остатки.Номенклатура,
		Остатки.Количество,
		Остатки.Склад) КАК ВложенныйЗапрос
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ТаблицаДат.Дата,
	ТаблицаДат.Номенклатура.Код КАК Код,
	СУММА(ЕСТЬNULL(ОстаткиПериодами.Количество, 0)) КАК Количество
ИЗ
	ТаблицаДат КАК ТаблицаДат
		ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиПериодами КАК ОстаткиПериодами
		ПО (ТаблицаДат.Дата МЕЖДУ ОстаткиПериодами.НачалоПериода И ОстаткиПериодами.КонецПериода)
			И ТаблицаДат.Номенклатура = ОстаткиПериодами.Номенклатура
			И ТаблицаДат.Склад = ОстаткиПериодами.Склад
ГДЕ
	ОстаткиПериодами.Количество >= 1

СГРУППИРОВАТЬ ПО
	ТаблицаДат.Дата,
	ТаблицаДат.Номенклатура.Код

УПОРЯДОЧИТЬ ПО
	ТаблицаДат.Дата,
	Код
Показать
По теме из базы знаний
Найденные решения
14. YannikAlx 43 11.09.18 15:47 Сейчас в теме
А вообще я даже в кошмарном сне бы такой запрос не увидел....
Вот нормальный запрос

ВЫБРАТЬ
	ВЫБОР
		КОГДА КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, t.n), ДЕНЬ) > &КонецПериода
			ТОГДА КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
		ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, t.n), ДЕНЬ)
	КОНЕЦ КАК Дата
ПОМЕСТИТЬ ТаблицаДат
ИЗ
	(ВЫБРАТЬ
		40 * (t1.a - 1) + t2.b - 1 КАК n
	ИЗ
		(ВЫБРАТЬ
			1 КАК a
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			2
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			3
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			4
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			5
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			6
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			7
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			8
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			9
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			10
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			11
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			12
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			13
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			14
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			15
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			16
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			17
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			18
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			19
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			20
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			21
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			22
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			23
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			24
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			25
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			26
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			27
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			28
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			29
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			30
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			31
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			32
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			33
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			34
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			35
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			36
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			37
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			8
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			39
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			40) КАК t1
			ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
				1 КАК b
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				2
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				3
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				4
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				5
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				6
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				7
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				8
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				9
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				10
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				11
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				12
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				13
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				14
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				15
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				16
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				17
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				18
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				19
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				20
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				21
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				22
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				23
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				24
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				25
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				26
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				27
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				28
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				29
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				30
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				31
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				32
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				33
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				34
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				35
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				36
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				37
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				8
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				39
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				40) КАК t2
			ПО (ИСТИНА)) КАК t
ГДЕ
	t.n <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Движения.Номенклатура КАК Номенклатура,
	ДНИ.Дата КАК Дата,
	СУММА(ВЫБОР
			КОГДА Движения.Период = &НачалоПериода
				ТОГДА Движения.ВНаличииКонечныйОстаток
			ИНАЧЕ ВЫБОР
					КОГДА Движения.Период <= ДНИ.Дата
						ТОГДА Движения.ВНаличииОборот
					ИНАЧЕ 0
				КОНЕЦ
		КОНЕЦ) КАК КоличествоКонечныйОстаток
ИЗ
	ТаблицаДат КАК ДНИ,
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
			&НачалоПериода,
			&КонецПериода,
			День,
			,
			Номенклатура В ИЕРАРХИИ (&Номенклатура)
				И Склад В ИЕРАРХИИ (&Склады)) КАК Движения

СГРУППИРОВАТЬ ПО
	Движения.Номенклатура,
	ДНИ.Дата
Показать
7. YannikAlx 43 11.09.18 14:42 Сейчас в теме
Не совсем понял в каком случае было верно...

Но следующий вопрос - зачем использовать ОстаткиИОбороты вместо Остатков?
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. YannikAlx 43 11.09.18 14:09 Сейчас в теме
А вы видели что у вас получается в ТаблицеДат???
Там и есть начала дней
И передаете вы именно начала вусех дней кроме последнего в периоде
4. Deals 11.09.18 14:16 Сейчас в теме
(2)Как исправить? Я в той таблице уже везде ставил КОНЕЦПЕРИОДА не помогает. Спасибо!
3. YannikAlx 43 11.09.18 14:15 Сейчас в теме
Вот с таким
текстом даст концы

ВЫБРАТЬ
ВЫБОР
КОГДА КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, t.n), ДЕНЬ) > &КонецПериода
ТОГДА КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, t.n), ДЕНЬ)
КОНЕЦ КАК Дата
5. YannikAlx 43 11.09.18 14:18 Сейчас в теме
НачалоПЕРИОДА
05.09.2018 0:00:00
06.09.2018 0:00:00
07.09.2018 0:00:00
08.09.2018 0:00:00
09.09.2018 0:00:00
10.09.2018 0:00:00
11.09.2018 23:59:59

КОНЕЦПЕРИОДА
05.09.2018 23:59:59
06.09.2018 23:59:59
07.09.2018 23:59:59
08.09.2018 23:59:59
09.09.2018 23:59:59
10.09.2018 23:59:59
11.09.2018 23:59:59
6. Deals 11.09.18 14:27 Сейчас в теме
(5)Да, в ТаблицеДат получается именно так, но запрос почему-то выдает значения которые не соответствуют действительности. Т. е. в первом варианте когда выдавало начало периода и если отчетный период брать на день позже, тогда значения были верны, но период ширить на 1 день вперед не нужно. Непонятно где ошибка или что там не так(
7. YannikAlx 43 11.09.18 14:42 Сейчас в теме
Не совсем понял в каком случае было верно...

Но следующий вопрос - зачем использовать ОстаткиИОбороты вместо Остатков?
10. Deals 11.09.18 15:14 Сейчас в теме
(7)ОстаткиИОбороты убрал и все стало хорошо. Спасибо большое)
8. YannikAlx 43 11.09.18 15:05 Сейчас в теме
и кстати вы видели результаты временных таблиц ОстаткиПериодами и ОстаткиНаДату?
В них как-то странно вообще все.. на начало и на конец периодов
Вы сами запрос-то писали?
11. Deals 11.09.18 15:15 Сейчас в теме
(8)Нет запрос не мой, результаты видел сидел тоже удивлялся. Была ошибка по выгрузке сказали посмотреть
9. YannikAlx 43 11.09.18 15:09 Сейчас в теме
Откуда запрос по вашему берет данные для 5 и 6 января?
Прикрепленные файлы:
12. YannikAlx 43 11.09.18 15:22 Сейчас в теме
Кроме того вы запутались во вложенных запросах

Номенклатура В ИЕРАРХИИ (&Номенклатура)
                        И Склад В ИЕРАРХИИ (&Склады)) КАК ТоварыНаСкладахОстаткиИОбороты) КАК ВложенныйЗапрос
    
    СГРУППИРОВАТЬ ПО
        ВложенныйЗапрос.НачалоПериода,
        ВложенныйЗапрос.Склад,
        ВложенныйЗапрос.Номенклатура) КАК ВложенныйЗапрос
13. Deals 11.09.18 15:26 Сейчас в теме
(12)Спасибо, поправил вроде как выгружаются правильные данные
14. YannikAlx 43 11.09.18 15:47 Сейчас в теме
А вообще я даже в кошмарном сне бы такой запрос не увидел....
Вот нормальный запрос

ВЫБРАТЬ
	ВЫБОР
		КОГДА КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, t.n), ДЕНЬ) > &КонецПериода
			ТОГДА КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
		ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, t.n), ДЕНЬ)
	КОНЕЦ КАК Дата
ПОМЕСТИТЬ ТаблицаДат
ИЗ
	(ВЫБРАТЬ
		40 * (t1.a - 1) + t2.b - 1 КАК n
	ИЗ
		(ВЫБРАТЬ
			1 КАК a
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			2
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			3
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			4
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			5
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			6
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			7
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			8
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			9
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			10
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			11
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			12
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			13
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			14
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			15
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			16
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			17
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			18
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			19
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			20
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			21
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			22
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			23
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			24
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			25
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			26
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			27
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			28
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			29
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			30
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			31
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			32
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			33
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			34
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			35
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			36
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			37
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			8
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			39
		
		ОБЪЕДИНИТЬ ВСЕ
		
		ВЫБРАТЬ
			40) КАК t1
			ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
				1 КАК b
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				2
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				3
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				4
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				5
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				6
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				7
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				8
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				9
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				10
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				11
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				12
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				13
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				14
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				15
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				16
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				17
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				18
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				19
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				20
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				21
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				22
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				23
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				24
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				25
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				26
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				27
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				28
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				29
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				30
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				31
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				32
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				33
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				34
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				35
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				36
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				37
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				8
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				39
			
			ОБЪЕДИНИТЬ ВСЕ
			
			ВЫБРАТЬ
				40) КАК t2
			ПО (ИСТИНА)) КАК t
ГДЕ
	t.n <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Движения.Номенклатура КАК Номенклатура,
	ДНИ.Дата КАК Дата,
	СУММА(ВЫБОР
			КОГДА Движения.Период = &НачалоПериода
				ТОГДА Движения.ВНаличииКонечныйОстаток
			ИНАЧЕ ВЫБОР
					КОГДА Движения.Период <= ДНИ.Дата
						ТОГДА Движения.ВНаличииОборот
					ИНАЧЕ 0
				КОНЕЦ
		КОНЕЦ) КАК КоличествоКонечныйОстаток
ИЗ
	ТаблицаДат КАК ДНИ,
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
			&НачалоПериода,
			&КонецПериода,
			День,
			,
			Номенклатура В ИЕРАРХИИ (&Номенклатура)
				И Склад В ИЕРАРХИИ (&Склады)) КАК Движения

СГРУППИРОВАТЬ ПО
	Движения.Номенклатура,
	ДНИ.Дата
Показать
Оставьте свое сообщение

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