Запрос - Получить оборот между каждыми документами расхода

1. Hokum 4 08.02.23 12:29 Сейчас в теме
Ищу пути решения такой задачи:

РН остатки, измерение: Контрагент, ресурс: Сумма
Движения: приходная накладная (ПН), расходная накладная (РН)

Необходимо запросом получить оборот между каждой РН
Табличка типа:
Дата1 | Дата2 | Контрагент | 150
Дата2 | Дата3 | Контрагент | 0
Дата3 | Дата4 | Контрагент | 50
Дата4 | Дата5 | Контрагент | -100

Т.к. записей много, то подобный запрос в цикле получается неприемлим по времени:

ВЫБРАТЬ
	&НачалоПериода КАК НачалоПериода,
	&КонецПериода КАК КонецПериода,
	ДвиженияПоКонтрагенту.Контрагент КАК Контрагент,
	СУММА(ДвиженияПоКонтрагенту.СуммаОборот) КАК Сумма
ИЗ
	РегистрНакопления.ДвиженияПоКонтрагенту.Обороты(&НачалоПериода,&КонецПериода,,Контрагент = &Контрагент) КАК ДвиженияПоКонтрагенту

СГРУППИРОВАТЬ ПО
	ДвиженияПоКонтрагенту.Контрагент
Показать



Может кто-то встречался с подобной задачей?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. minarenko 08.02.23 13:11 Сейчас в теме +0.5 $m
Чтото типа такого, наведи красоту, добавь контрагента
ВЫБРАТЬ
	ВЫБОР
		КОГДА ДвиженияПоКонтрагентуОбороты.Регистратор ССЫЛКА Документ.РасходнаяНакладная
			ТОГДА "РН"
		ИНАЧЕ "Другое"
	КОНЕЦ КАК Поле1,
	ДвиженияПоКонтрагентуОбороты.Сумма КАК Сумма,
	ДвиженияПоКонтрагентуОбороты.Период КАК Период
ПОМЕСТИТЬ вт
ИЗ
	РегистрНакопления.ДвиженияПоКонтрагенту.Обороты(&дата1, &дата2, Регистратор, ) КАК ДвиженияПоКонтрагентуОбороты
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	вт.Период КАК Период,
	АВТОНОМЕРЗАПИСИ() КАК Поле1
ПОМЕСТИТЬ ВТ2
ИЗ
	вт КАК вт
ГДЕ
	вт.Поле1 = "РН"
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ2.Период КАК Период,
	ВТ21.Период КАК Период1,
	ВТ2.Поле1 КАК Поле1
ПОМЕСТИТЬ вт3
ИЗ
	ВТ2 КАК ВТ2
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ21
		ПО (ВТ2.Поле1 + 1 = ВТ21.Поле1)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	вт3.Период КАК Период,
	вт3.Период1 КАК Период1,
	СУММА(вт.Сумма) КАК Сумма
ИЗ
	вт3 КАК вт3
		ЛЕВОЕ СОЕДИНЕНИЕ вт КАК вт
		ПО вт3.Период <= вт.Период
			И вт3.Период1 > вт.Период

СГРУППИРОВАТЬ ПО
	вт3.Период,
	вт3.Период1
Показать
2. soft_wind 08.02.23 12:56 Сейчас в теме
в обороты, добавьте параметр детализации ПоРегистратору
4. Hokum 4 08.02.23 19:18 Сейчас в теме
(2) Это никак не решает проблему
5. Hokum 4 08.02.23 19:23 Сейчас в теме
(3) Близко, допилил, и даже работает когда один контрагент.
Сейчас думаю как разделить нумерацию строк в разрезе контрагентов, тогда должно взлететь ( АВТОНОМЕРЗАПИСИ делает сквозную )
6. minarenko 08.02.23 19:47 Сейчас в теме
(5)Да, с контрагентом засада, мыслей нет как это организовать в одном запросе.
Формируй отдельным запросом ТЗ Контрагент-ДатаРН, сортировка (Контрагент, Дата), и потом циклом пробежаться и сконвертировать в ТЗ Контрагент-Дата1-Дата2 и передавай ее в итоговый запрос.
Быстро должно работать, всяко лучше чем запрос в цикле
Оставьте свое сообщение

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