Остатки в регистре накопления

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. CHELLL 53 28.03.16 20:37 Сейчас в теме
Доброе время суток. Есть самописная конфигурация на платформе 8.3.6. В ней есть документ многорежимный: приход, расход, перемещение материалов между участками. Сейчас пробую сделать отчет на СКД с начальными остатками, приходом, расходом и конечными остатками в разрезе номенклатуры. Все было хорошо, но необходимо исключить из оборотов документы с перемещением и сформировать "картину" по всему цеху. Написал такой запрос:
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ОстаткиНаУчасткахОстаткиИОбороты.Регистратор
ПОМЕСТИТЬ ВТ_Перемещения
ИЗ
	РегистрНакопления.ОстаткиНаУчастках.ОстаткиИОбороты(
			&НачСутокФакт,
			&КонСутокФакт,
			Авто,
			,
			Груз.РазрезУчета В (&РазрезУчета)
				И НЕ Участок В (&Участок_ЦПШ)) КАК ОстаткиНаУчасткахОстаткиИОбороты
ГДЕ
	ОстаткиНаУчасткахОстаткиИОбороты.Регистратор.ТипДокумента = &Перемещение
;

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

СГРУППИРОВАТЬ ПО
	ОстаткиНаУчасткахОстаткиИОбороты.Груз,
	ОстаткиНаУчасткахОстаткиИОбороты.Регистратор,
	ОстаткиНаУчасткахОстаткиИОбороты.ПериодСекунда
Показать


В итоге обороты задваиваются. Если убрать режим Авто, сопутствующие реквизиты и условие с отбором,то все становится на свои места. Вот ломаю голову как выйти из ситуации. Может кто сталкивался с аналогичной проблемой,
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
6. kasper076 105 29.03.16 08:26 Сейчас в теме
(4) CHELLL, так делай 2 запроса. Первый по остаткам, второй по оборотам и соединяй их результаты.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1490 28.03.16 21:46 Сейчас в теме
(1) CHELLL, вместо различные сгруппировать может?
4. CHELLL 53 28.03.16 22:09 Сейчас в теме
(2) Xershi, "различные" не влияют на результата, а группировку и суммирование я уже сдала, итоговую группировку мне не надо, а если и делаю то начальные и конечные остатки задваиваются.
Вот пару строк из результат запроса:
29.02.2016 20:00:00 5Б1 105,867 0 0 105,867
28.03.2016 8:00:00 5Б1 105,867 0 0 105,867
Получается если нет оборотов за период то он выводит две строчки - начало и конец периода, а при сворачивании сумма удваивается.
6. kasper076 105 29.03.16 08:26 Сейчас в теме
(4) CHELLL, так делай 2 запроса. Первый по остаткам, второй по оборотам и соединяй их результаты.
7. AnryMc 849 29.03.16 09:15 Сейчас в теме
OFF Вообще то тема не "Складской учет и логистика", "программирование ..."

Мое виденье решения проблемы совпадает с (6) kasper076,
8. CHELLL 53 29.03.16 11:31 Сейчас в теме
(6) kasper076, похоже на правду. Сейчас запрос такой:
ВЫБРАТЬ
	ОстаткиНаУчасткахОстаткиИОбороты.Регистратор
ПОМЕСТИТЬ ВТ_Перемещения
ИЗ
	РегистрНакопления.ОстаткиНаУчастках.ОстаткиИОбороты(
			&НачСутокФакт,
			&КонСутокФакт,
			Авто,
			,
			Груз.РазрезУчета В (&РазрезУчета)
				И НЕ Участок В (&Участок_ЦПШ)) КАК ОстаткиНаУчасткахОстаткиИОбороты
ГДЕ
	ОстаткиНаУчасткахОстаткиИОбороты.Регистратор.ТипДокумента = &Перемещение
;

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

СГРУППИРОВАТЬ ПО
	ОстаткиНаУчасткахОстаткиИОбороты.Груз,
	ОстаткиНаУчасткахОстаткиИОбороты.Участок,
	ОстаткиНаУчасткахОстаткиИОбороты.ВидЗапаса
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ОстаткиНаУчасткахОбороты.Груз,
	ОстаткиНаУчасткахОбороты.Участок,
	ОстаткиНаУчасткахОбороты.ВидЗапаса,
	СУММА(ОстаткиНаУчасткахОбороты.ВесПриход) КАК ВесПриход,
	СУММА(ОстаткиНаУчасткахОбороты.ВесРасход) КАК ВесРасход
ПОМЕСТИТЬ ВТ_Обороты
ИЗ
	РегистрНакопления.ОстаткиНаУчастках.Обороты(
			&НачСутокФакт,
			&КонСутокФакт,
			Регистратор,
			Груз.РазрезУчета В (&РазрезУчета)
				И НЕ Участок В (&Участок_ЦПШ)) КАК ОстаткиНаУчасткахОбороты
ГДЕ
	НЕ ОстаткиНаУчасткахОбороты.Регистратор В
				(ВЫБРАТЬ
					ВТ_Перемещения.Регистратор
				ИЗ
					ВТ_Перемещения КАК ВТ_Перемещения)

СГРУППИРОВАТЬ ПО
	ОстаткиНаУчасткахОбороты.Груз,
	ОстаткиНаУчасткахОбороты.Участок,
	ОстаткиНаУчасткахОбороты.ВидЗапаса
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Остатки.Груз КАК Груз,
	ВТ_Остатки.Участок КАК Участок,
	ВТ_Остатки.ВидЗапаса КАК ВидЗапаса,
	ВТ_Остатки.ВесНачальныйОстаток КАК ВесНачальныйОстаток,
	0 КАК ВесПриход,
	0 КАК ВесРасход,
	ВТ_Остатки.ВесКонечныйОстаток КАК ВесКонечныйОстаток
ПОМЕСТИТЬ ВТ
ИЗ
	ВТ_Остатки КАК ВТ_Остатки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ_Обороты.Груз,
	ВТ_Обороты.Участок,
	ВТ_Обороты.ВидЗапаса,
	0,
	ВТ_Обороты.ВесПриход,
	ВТ_Обороты.ВесРасход,
	0
ИЗ
	ВТ_Обороты КАК ВТ_Обороты
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ.Груз КАК Груз,
	ВТ.ВидЗапаса,
	СУММА(ВТ.ВесНачальныйОстаток) КАК ВесНачальныйОстаток,
	СУММА(ВТ.ВесПриход) КАК ВесПриход,
	СУММА(ВТ.ВесРасход) КАК ВесРасход,
	СУММА(ВТ.ВесКонечныйОстаток) КАК ВесКонечныйОстаток
ИЗ
	ВТ КАК ВТ

СГРУППИРОВАТЬ ПО
	ВТ.Груз,
	ВТ.ВидЗапаса

УПОРЯДОЧИТЬ ПО
	Груз
АВТОУПОРЯДОЧИВАНИЕ
Показать


результат проверяю сейчас
9. kasper076 105 29.03.16 13:48 Сейчас в теме
(8) CHELLL, а не проще использовать в запросе таблицы Остатки и Обороты? Если остатки нужны на начало и конец периода, то придется 2 раза их считать, но думаю что на границы стандартных периодов посчитается быстро, т.к. данные уже хранятся в таблице итогов.
3. red_october 28.03.16 21:56 Сейчас в теме
CHELLL, извините, что возможно не в тему, но почему вы не исключили документы с перемещением так?
ГДЕ (НЕ ОстаткиНаУчасткахОстаткиИОбороты.Регистратор Ссылка Документ.НазваниеДокументаПеремещения)
5. CHELLL 53 28.03.16 22:14 Сейчас в теме
(3) red_october, так тоже пробовал, но суть в том что как только я "достаю" регистратор сразу появляются доп строчки и результат искажается.
Оставьте свое сообщение

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