Запрос, соединение записи регистра накопления со следующей записью по времени и по одному документу расчетов

1. TokarevV 30 11.08.22 12:51 Сейчас в теме
Добрый день!
УТ 10.3. Необходимо создать запрос, который будет получать данные из регистра накопления
"ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов". Необходимы сроки и суммы просроченной задолженности. Надо соединить по полям "ДокументРасчетовСКонтрагентом" и ПериодДень одной таблицы больше ПериодДень другой таблицы. Но к одной записи первой таблицы, при левом соединении, присоединяется множество записей из второй (все, где дата больше). Не могу придумать условие, чтобы соединялись записи только со следующей, а не со всеми следующими.
Первый запрос чтобы разобраться, второй для конкретного применения.
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Запрос 1
ВЫБРАТЬ
	ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.Регистратор,
	ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ПериодДень,
	ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДокументРасчетовСКонтрагентом.Дата
ПОМЕСТИТЬ ВТ_ДатыВсе
ИЗ
	РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(
			&НачалоПериода,
			&КонецПериода,
			Авто,
			,
			ДоговорКонтрагента = &ДоговорКонтрагента
				И ДокументРасчетовСКонтрагентом = &ДокументРасчетовСКонтрагентом) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты
;

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

////////////////////////////////////////////////////////////­/////////////////////////////////////Запрос2
ВЫБРАТЬ
	ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДокументРасчетовСКонтрагентом,
	-ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.СуммаВзаиморасчетовОборот + ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовОборот,
	ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.СуммаВзаиморасчетовКонечныйОстаток,
	ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДокументРасчетовСКонтрагентом.Дата, ДЕНЬ), ДЕНЬ, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности + 1) КАК ПериодПросрочкиНачало,
	ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.Регистратор.Дата, ДЕНЬ, -1) КАК ПериодПросрочкиКонец,
	ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДокументРасчетовСКонтрагентом.Дата, ДЕНЬ, 1) КАК ПериодПросрочкиНачалоСледующегоДня,
	РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДокументРасчетовСКонтрагентом.Дата, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.Регистратор.Дата, ДЕНЬ) - ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности - 1 КАК ЧислоДнейПросрочки,
	РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДокументРасчетовСКонтрагентом.Дата, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.Регистратор.Дата, ДЕНЬ) - 1 КАК ЧислоДнейПользованияКредитом,
	ВЫРАЗИТЬ((-ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.СуммаВзаиморасчетовОборот + ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.СуммаВзаиморасчетовКонечныйОстаток) * ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДоговорКонтрагента.ПроцентПоДоговору / 100 * (РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДокументРасчетовСКонтрагентом.Дата, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.Регистратор.Дата, ДЕНЬ) - 1) КАК ЧИСЛО(15, 2)) КАК ПоДоговору,
	ВЫРАЗИТЬ((-ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.СуммаВзаиморасчетовОборот + ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.СуммаВзаиморасчетовКонечныйОстаток) * ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДоговорКонтрагента.Пени / 100 * (РАЗНОСТЬДАТ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДокументРасчетовСКонтрагентом.Дата, ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.Регистратор.Дата, ДЕНЬ) - ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности - 1) КАК ЧИСЛО(15, 2)) КАК Пени,
	ВТ_ОстатокПоРеализацииНаТекущуюДату.ОстатокПоРеализацииНаТекущуюДату,
	ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДоговорКонтрагента.ПроцентПоДоговору КАК ПроцентПоДоговору,
	ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДоговорКонтрагента.Пени КАК ПроцентПени
ИЗ
	ВТ_ОстатокПоРеализацииНаТекущуюДату КАК ВТ_ОстатокПоРеализацииНаТекущуюДату
		ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(
				&НачалоПериода,
				&КонецПериода,
				Авто,
				,
				ДоговорКонтрагента = &ДоговорКонтрагента
					И ДокументРасчетовСКонтрагентом = &ДокументРасчетовСКонтрагентом) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты
		ПО ВТ_ОстатокПоРеализацииНаТекущуюДату.ДокументРасчетовСКонтрагентом = ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ДокументРасчетовСКонтрагентом
ГДЕ
	ТИПЗНАЧЕНИЯ(ВЫРАЗИТЬ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.Регистратор КАК Документ.ПлатежноеПоручениеВходящее)) = ТИП(Документ.ПлатежноеПоручениеВходящее)

УПОРЯДОЧИТЬ ПО
	ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо­ты.ПериодДень
Показать

Условие на конкретный документ расчета с контрагентом добавил для наглядности.
На картинках записи регистра
Результаты первого и второго запросов.
Нужно получить периоды когда контрагент был должен:
02.11.21-27.12.21 долг 628272,1
27.12.21-29.12.21 долг 423214,1
29.12.21-10.01.21 долг 123214,1
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
3. nomad_irk 76 11.08.22 13:40 Сейчас в теме +0.6 $m
(1)Необходима группировка по Регистратор, ПериодДень с МИНИМУМ(ПериодДень1) и повторное соединение с таблицей регистра
MikhailDr; WasiliyMay; +2 Ответить
5. MikhailDr 11.08.22 13:54 Сейчас в теме +0.4 $m
(4) Вот пример для документа "Авансовый ответ"

ВЫБРАТЬ
	АвансовыйОтчет.Ссылка КАК Ссылка,
	МИНИМУМ(СледующийАвансовыйОтчет.Дата) КАК Дата
ПОМЕСТИТЬ ДатаСледующегоДокумента
ИЗ
	Документ.АвансовыйОтчет КАК АвансовыйОтчет
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет КАК СледующийАвансовыйОтчет
		ПО (АвансовыйОтчет.Дата < СледующийАвансовыйОтчет.Дата)

СГРУППИРОВАТЬ ПО
	АвансовыйОтчет.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДатаСледующегоДокумента.Ссылка КАК Документ,
	АвансовыйОтчет.Ссылка КАК СледующийДокумент
ИЗ
	ДатаСледующегоДокумента КАК ДатаСледующегоДокумента
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет КАК АвансовыйОтчет
		ПО (ДатаСледующегоДокумента.Дата = АвансовыйОтчет.Дата)
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. nomad_irk 76 11.08.22 13:40 Сейчас в теме +0.6 $m
(1)Необходима группировка по Регистратор, ПериодДень с МИНИМУМ(ПериодДень1) и повторное соединение с таблицей регистра
MikhailDr; WasiliyMay; +2 Ответить
2. Alexei_Siva 184 11.08.22 13:40 Сейчас в теме
Добрый день, вот вам идея - в таблице с кучей записей больше текущего периода сделать группировку с выявлением минимального периода - потом опять соединить с таблицей и получить нужную таблицу с ближайшим периодом
4. TokarevV 30 11.08.22 13:47 Сейчас в теме
5. MikhailDr 11.08.22 13:54 Сейчас в теме +0.4 $m
(4) Вот пример для документа "Авансовый ответ"

ВЫБРАТЬ
	АвансовыйОтчет.Ссылка КАК Ссылка,
	МИНИМУМ(СледующийАвансовыйОтчет.Дата) КАК Дата
ПОМЕСТИТЬ ДатаСледующегоДокумента
ИЗ
	Документ.АвансовыйОтчет КАК АвансовыйОтчет
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет КАК СледующийАвансовыйОтчет
		ПО (АвансовыйОтчет.Дата < СледующийАвансовыйОтчет.Дата)

СГРУППИРОВАТЬ ПО
	АвансовыйОтчет.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДатаСледующегоДокумента.Ссылка КАК Документ,
	АвансовыйОтчет.Ссылка КАК СледующийДокумент
ИЗ
	ДатаСледующегоДокумента КАК ДатаСледующегоДокумента
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет КАК АвансовыйОтчет
		ПО (ДатаСледующегоДокумента.Дата = АвансовыйОтчет.Дата)
Показать
6. TokarevV 30 12.08.22 14:06 Сейчас в теме
Оставьте свое сообщение

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