Нужна помощь в не простом запросе

1. user817897 2 26.05.20 11:07 Сейчас в теме +2.5 $m
Добрый день. Очень нужна помощь. Есть запрос, он работает.По сути отображает списания как по FIFO. Выводит сумму и количество дней непогашенной дебиторской задолженности.Запрос делался в УТ 10.3
Но, не совсем корректно работает когда контрагенты группируются по ИНН
Так как в виртуальн.табл. - DN_НеЗакрытыеРеализации группировка происходит по договору,возможно из-за этого.
Пример на фото изображён:
там где один контрагент он один только в базе с ИНН - и отчёт по ним работает идеально.
а там где не перекрывается оплата на реализацию то таких контрагентов в базе 2 и более,они сгруппированы по ИНН,
и ситуация такова,что к примеру:
вася1 с инн 12345 долг 20000
вася2 с инн 12345 долг -25000

вот они между собой не перекрываются, тут ситуация такая что все оплаты приходят на вася2, и частично идут реализации на вася2, а на вася1 только реализации
Но так как группировка по ИНН должна быть обязательна, то должно отобразиться только те реализации,которые не оплачены (с учётом хвостика,который возможно оплачен в последней неоплаченной реализации).
Варианты оплаты раскидывать на двоих по равному,не предлагать,отчёт всё равно не сгруппируется правильно.
На картинке поставил два вопроса,что эти платёжки не перекрылись...


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

СГРУППИРОВАТЬ ПО
	Взаиморасчеты.Контрагент.ИНН
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ.Контрагент,
	ВТ.СуммаДолг,
	ВТ.КонтрагентИНН,
	ВТ.КонтрагентДнейОтсрочки
ПОМЕСТИТЬ вт_Долг_контрагента
ИЗ
	ВТ КАК ВТ
;

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

ИНДЕКСИРОВАТЬ ПО
	Взаиморасчеты.ДоговорКонтрагента
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	Дебиторка.ДоговорКонтрагента.Владелец КАК ДоговорКонтрагентаВладелец,
	Дебиторка.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК ДопустимоеЧислоДнейЗадолженности,
	Дебиторка.РасчетныйДокумент КАК Сделка,
	Дебиторка.РасчетныйДокумент.СуммаДокумента КАК СуммаДокумента,
	ВЫБОР
		КОГДА Дебиторка.СуммаОстатокВВалютеВзаиморасчетов > 0
				И Дебиторка.ДоговорКонтрагента.ВидДоговора = &ВидДоговораКонтрагентаСПокупателем
				И РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ) > 0
			ТОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ)
		КОГДА Дебиторка.СуммаОстатокВВалютеВзаиморасчетов < 0
				И Дебиторка.ДоговорКонтрагента.ВидДоговора = &ВидДоговораКонтрагентаСПоставщиком
				И РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ) > 0
			ТОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ)
		ИНАЧЕ 0
	КОНЕЦ КАК КвоДнейЗадолженности,
	Дебиторка.СуммаОстатокВВалютеВзаиморасчетов КАК СуммаДолга
ПОМЕСТИТЬ DN_НеЗакрытыеРеализации
{ВЫБРАТЬ
	ДоговорКонтрагентаВладелец.*,
	ДопустимоеЧислоДнейЗадолженности,
	Сделка.*,
	СуммаДокумента,
	КвоДнейЗадолженности,
	СуммаДолга}
ИЗ
	(ВЫБРАТЬ
		ДебиторскаяПриход.ДоговорКонтрагента КАК ДоговорКонтрагента,
		ДебиторскаяПриход.РасчетнаяДата КАК РасчетнаяДата,
		ДебиторскаяПриход.ДатаОплаты КАК ДатаОплаты,
		ДебиторскаяПриход.РасчетныйДокумент КАК РасчетныйДокумент,
		ДебиторскаяПриход.СуммаОстатокВВалютеВзаиморасчетов КАК СуммаОстатокВВалютеВзаиморасчетов
	ИЗ
		(ВЫБРАТЬ
			Остатки.ДоговорКонтрагента КАК ДоговорКонтрагента,
			НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ОсновнаяТаблицаРегистра.Период, ДЕНЬ), ДЕНЬ, Остатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), ДЕНЬ) КАК РасчетнаяДата,
			НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ОсновнаяТаблицаРегистра.Период, ДЕНЬ), ДЕНЬ, Остатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), ДЕНЬ) КАК ДатаОплаты,
			ОсновнаяТаблицаРегистра.Регистратор КАК РасчетныйДокумент,
			ВЫБОР
				КОГДА СУММА(ТаблицаПоследующихПриходов.СуммаВзаиморасчетов * ВЫБОР
							КОГДА ТаблицаПоследующихПриходов.ВидДвижения = ИСТИНА
									И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов > 0
									И ТаблицаПоследующихПриходов.Регистратор <> ОсновнаяТаблицаРегистра.Регистратор
								ТОГДА 1
							КОГДА ТаблицаПоследующихПриходов.ВидДвижения <> ИСТИНА
									И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов < 0
									И ТаблицаПоследующихПриходов.Регистратор <> ОсновнаяТаблицаРегистра.Регистратор
								ТОГДА -1
							ИНАЧЕ 0
						КОНЕЦ) > Остатки.СуммаВзаиморасчетовОстаток
					ТОГДА 0
				ИНАЧЕ ВЫБОР
						КОГДА СУММА(ТаблицаПоследующихПриходов.СуммаВзаиморасчетов * ВЫБОР
									КОГДА ТаблицаПоследующихПриходов.ВидДвижения = ИСТИНА
											И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов > 0
										ТОГДА 1
									КОГДА ТаблицаПоследующихПриходов.ВидДвижения <> ИСТИНА
											И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов < 0
										ТОГДА -1
									ИНАЧЕ 0
								КОНЕЦ) > Остатки.СуммаВзаиморасчетовОстаток
							ТОГДА СУММА(ВЫБОР
										КОГДА ОсновнаяТаблицаРегистра.Регистратор = ТаблицаПоследующихПриходов.Регистратор
											ТОГДА Остатки.СуммаВзаиморасчетовОстаток
										ИНАЧЕ 0
									КОНЕЦ) - СУММА(ТаблицаПоследующихПриходов.СуммаВзаиморасчетов * ВЫБОР
										КОГДА ТаблицаПоследующихПриходов.ВидДвижения = ИСТИНА
												И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов > 0
												И ОсновнаяТаблицаРегистра.Регистратор <> ТаблицаПоследующихПриходов.Регистратор
											ТОГДА 1
										КОГДА ТаблицаПоследующихПриходов.ВидДвижения <> ИСТИНА
												И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов < 0
												И ОсновнаяТаблицаРегистра.Регистратор <> ТаблицаПоследующихПриходов.Регистратор
											ТОГДА -1
										ИНАЧЕ 0
									КОНЕЦ)
						ИНАЧЕ СУММА(ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов * ВЫБОР
									КОГДА ОсновнаяТаблицаРегистра.ВидДвижения = ИСТИНА
											И ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов > 0
											И ОсновнаяТаблицаРегистра.Регистратор = ТаблицаПоследующихПриходов.Регистратор
										ТОГДА 1
									КОГДА ОсновнаяТаблицаРегистра.ВидДвижения <> ИСТИНА
											И ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов < 0
											И ОсновнаяТаблицаРегистра.Регистратор = ТаблицаПоследующихПриходов.Регистратор
										ТОГДА -1
									ИНАЧЕ 0
								КОНЕЦ)
					КОНЕЦ
			КОНЕЦ КАК СуммаОстатокВВалютеВзаиморасчетов
		ИЗ
			РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ДатаКон, {(ДоговорКонтрагента.Владелец).* КАК ДоговорКонтрагентаВладелец, (ДоговорКонтрагента).* КАК ДоговорКонтрагента}) КАК Остатки
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаРегистра КАК ОсновнаяТаблицаРегистра
					ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаРегистра КАК ТаблицаПоследующихПриходов
					ПО (ТаблицаПоследующихПриходов.ДоговорКонтрагента = ОсновнаяТаблицаРегистра.ДоговорКонтрагента)
						И (ТаблицаПоследующихПриходов.Период > ОсновнаяТаблицаРегистра.Период
							ИЛИ ТаблицаПоследующихПриходов.Период = ОсновнаяТаблицаРегистра.Период
								И ТаблицаПоследующихПриходов.Регистратор >= ОсновнаяТаблицаРегистра.Регистратор)
						И (ТаблицаПоследующихПриходов.ВидДвижения = ИСТИНА
								И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов > 0
							ИЛИ ТаблицаПоследующихПриходов.ВидДвижения <> ИСТИНА
								И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов < 0)
				ПО Остатки.ДоговорКонтрагента = ОсновнаяТаблицаРегистра.ДоговорКонтрагента
					И (ОсновнаяТаблицаРегистра.ВидДвижения = ИСТИНА
							И ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов > 0
						ИЛИ ОсновнаяТаблицаРегистра.ВидДвижения <> ИСТИНА
							И ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов < 0)
		ГДЕ
			Остатки.СуммаВзаиморасчетовОстаток <> 0
		
		СГРУППИРОВАТЬ ПО
			Остатки.ДоговорКонтрагента,
			ОсновнаяТаблицаРегистра.Период,
			ОсновнаяТаблицаРегистра.Регистратор,
			Остатки.СуммаВзаиморасчетовОстаток,
			НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ОсновнаяТаблицаРегистра.Период, ДЕНЬ), ДЕНЬ, Остатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), ДЕНЬ),
			НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ОсновнаяТаблицаРегистра.Период, ДЕНЬ), ДЕНЬ, Остатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), ДЕНЬ)) КАК ДебиторскаяПриход
	
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		ДебиторскаяРасход.ДоговорКонтрагента,
		ДебиторскаяРасход.РасчетнаяДата,
		ДебиторскаяРасход.ДатаОплаты,
		ДебиторскаяРасход.РасчетныйДокумент,
		-ДебиторскаяРасход.СуммаОстатокВВалютеВзаиморасчетов
	ИЗ
		(ВЫБРАТЬ
			Остатки.ДоговорКонтрагента КАК ДоговорКонтрагента,
			НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ОсновнаяТаблицаРегистра.Период, ДЕНЬ), ДЕНЬ, Остатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), ДЕНЬ) КАК РасчетнаяДата,
			НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ОсновнаяТаблицаРегистра.Период, ДЕНЬ), ДЕНЬ, Остатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), ДЕНЬ) КАК ДатаОплаты,
			ОсновнаяТаблицаРегистра.Регистратор КАК РасчетныйДокумент,
			ВЫБОР
				КОГДА СУММА(ТаблицаПоследующихПриходов.СуммаВзаиморасчетов * ВЫБОР
							КОГДА ТаблицаПоследующихПриходов.ВидДвижения = ЛОЖЬ
									И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов > 0
									И ТаблицаПоследующихПриходов.Регистратор <> ОсновнаяТаблицаРегистра.Регистратор
								ТОГДА 1
							КОГДА ТаблицаПоследующихПриходов.ВидДвижения <> ЛОЖЬ
									И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов < 0
									И ТаблицаПоследующихПриходов.Регистратор <> ОсновнаяТаблицаРегистра.Регистратор
								ТОГДА -1
							ИНАЧЕ 0
						КОНЕЦ) > -Остатки.СуммаВзаиморасчетовОстаток
					ТОГДА 0
				ИНАЧЕ ВЫБОР
						КОГДА СУММА(ТаблицаПоследующихПриходов.СуммаВзаиморасчетов * ВЫБОР
									КОГДА ТаблицаПоследующихПриходов.ВидДвижения = ЛОЖЬ
											И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов > 0
										ТОГДА 1
									КОГДА ТаблицаПоследующихПриходов.ВидДвижения <> ЛОЖЬ
											И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов < 0
										ТОГДА -1
									ИНАЧЕ 0
								КОНЕЦ) > -Остатки.СуммаВзаиморасчетовОстаток
							ТОГДА СУММА(ВЫБОР
										КОГДА ОсновнаяТаблицаРегистра.Регистратор = ТаблицаПоследующихПриходов.Регистратор
											ТОГДА -Остатки.СуммаВзаиморасчетовОстаток
										ИНАЧЕ 0
									КОНЕЦ) - СУММА(ТаблицаПоследующихПриходов.СуммаВзаиморасчетов * ВЫБОР
										КОГДА ТаблицаПоследующихПриходов.ВидДвижения = ЛОЖЬ
												И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов > 0
												И ОсновнаяТаблицаРегистра.Регистратор <> ТаблицаПоследующихПриходов.Регистратор
											ТОГДА 1
										КОГДА ТаблицаПоследующихПриходов.ВидДвижения <> ЛОЖЬ
												И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов < 0
												И ОсновнаяТаблицаРегистра.Регистратор <> ТаблицаПоследующихПриходов.Регистратор
											ТОГДА -1
										ИНАЧЕ 0
									КОНЕЦ)
						ИНАЧЕ СУММА(ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов * ВЫБОР
									КОГДА ОсновнаяТаблицаРегистра.ВидДвижения = ЛОЖЬ
											И ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов > 0
											И ОсновнаяТаблицаРегистра.Регистратор = ТаблицаПоследующихПриходов.Регистратор
										ТОГДА 1
									КОГДА ОсновнаяТаблицаРегистра.ВидДвижения <> ЛОЖЬ
											И ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов < 0
											И ОсновнаяТаблицаРегистра.Регистратор = ТаблицаПоследующихПриходов.Регистратор
										ТОГДА -1
									ИНАЧЕ 0
								КОНЕЦ)
					КОНЕЦ
			КОНЕЦ КАК СуммаОстатокВВалютеВзаиморасчетов
		ИЗ
			РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ДатаКон, {(ДоговорКонтрагента.Владелец).* КАК ДоговорКонтрагентаВладелец, (ДоговорКонтрагента).* КАК ДоговорКонтрагента}) КАК Остатки
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаРегистра КАК ОсновнаяТаблицаРегистра
					ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаРегистра КАК ТаблицаПоследующихПриходов
					ПО (ТаблицаПоследующихПриходов.ДоговорКонтрагента = ОсновнаяТаблицаРегистра.ДоговорКонтрагента)
						И (ТаблицаПоследующихПриходов.Период > ОсновнаяТаблицаРегистра.Период
							ИЛИ ТаблицаПоследующихПриходов.Период = ОсновнаяТаблицаРегистра.Период
								И ТаблицаПоследующихПриходов.Регистратор >= ОсновнаяТаблицаРегистра.Регистратор)
						И (ТаблицаПоследующихПриходов.ВидДвижения = ЛОЖЬ
								И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов > 0
							ИЛИ ТаблицаПоследующихПриходов.ВидДвижения <> ЛОЖЬ
								И ТаблицаПоследующихПриходов.СуммаВзаиморасчетов < 0)
				ПО Остатки.ДоговорКонтрагента = ОсновнаяТаблицаРегистра.ДоговорКонтрагента
					И (ОсновнаяТаблицаРегистра.ВидДвижения = ЛОЖЬ
							И ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов > 0
						ИЛИ ОсновнаяТаблицаРегистра.ВидДвижения <> ЛОЖЬ
							И ОсновнаяТаблицаРегистра.СуммаВзаиморасчетов < 0)
		ГДЕ
			Остатки.СуммаВзаиморасчетовОстаток <> 0
		
		СГРУППИРОВАТЬ ПО
			Остатки.ДоговорКонтрагента,
			ОсновнаяТаблицаРегистра.Период,
			ОсновнаяТаблицаРегистра.Регистратор,
			Остатки.СуммаВзаиморасчетовОстаток,
			НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ОсновнаяТаблицаРегистра.Период, ДЕНЬ), ДЕНЬ, Остатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), ДЕНЬ),
			НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(ОсновнаяТаблицаРегистра.Период, ДЕНЬ), ДЕНЬ, Остатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), ДЕНЬ)) КАК ДебиторскаяРасход) КАК Дебиторка
ГДЕ
	Дебиторка.СуммаОстатокВВалютеВзаиморасчетов <> 0
	И Дебиторка.ДоговорКонтрагента.Наименование = "Договор А"
{ГДЕ
	Дебиторка.ДоговорКонтрагента.Организация.* КАК Организация,
	Дебиторка.ДоговорКонтрагента.ВалютаВзаиморасчетов.* КАК ВалютаВзаиморасчетов,
	Дебиторка.ДоговорКонтрагента.ВидДоговора КАК ВидДоговора,
	Дебиторка.ДоговорКонтрагента.Владелец.* КАК ДоговорКонтрагентаВладелец,
	Дебиторка.ДоговорКонтрагента.* КАК ДоговорКонтрагента,
	Дебиторка.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности КАК ДопустимаяСуммаЗадолженности,
	Дебиторка.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК ДопустимоеЧислоДнейЗадолженности,
	Дебиторка.РасчетныйДокумент.* КАК Сделка,
	Дебиторка.РасчетныйДокумент.СуммаДокумента КАК СуммаДокумента,
	(ВЫБОР
			КОГДА Дебиторка.СуммаОстатокВВалютеВзаиморасчетов > 0
					И Дебиторка.ДоговорКонтрагента.ВидДоговора = &ВидДоговораКонтрагентаСПокупателем
				ТОГДА Дебиторка.РасчетнаяДата
			КОГДА Дебиторка.СуммаОстатокВВалютеВзаиморасчетов < 0
					И Дебиторка.ДоговорКонтрагента.ВидДоговора = &ВидДоговораКонтрагентаСПоставщиком
				ТОГДА Дебиторка.РасчетнаяДата
			ИНАЧЕ &ПустаяДата
		КОНЕЦ) КАК ПрогнозируемаяДатаОплаты,
	(ВЫБОР
			КОГДА Дебиторка.СуммаОстатокВВалютеВзаиморасчетов > 0
					И НАЧАЛОПЕРИОДА(Дебиторка.РасчетнаяДата, ДЕНЬ) >= НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ)
				ТОГДА Дебиторка.СуммаОстатокВВалютеВзаиморасчетов
			ИНАЧЕ 0
		КОНЕЦ) КАК СуммаТоварногоКредита,
	(ВЫБОР
			КОГДА Дебиторка.СуммаОстатокВВалютеВзаиморасчетов > 0
					И РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ) > 0
				ТОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ)
			ИНАЧЕ 0
		КОНЕЦ) КАК КвоДнейЗадолженности,
	(ВЫБОР
			КОГДА Дебиторка.СуммаОстатокВВалютеВзаиморасчетов > 0
					И НАЧАЛОПЕРИОДА(Дебиторка.РасчетнаяДата, ДЕНЬ) < НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ)
				ТОГДА Дебиторка.СуммаОстатокВВалютеВзаиморасчетов
			ИНАЧЕ 0
		КОНЕЦ) КАК СуммаПросроченнойЗадолженности,
	Дебиторка.СуммаОстатокВВалютеВзаиморасчетов КАК СуммаДолга,
	(ВЫБОР
			КОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ) > 0
					И Дебиторка.СуммаОстатокВВалютеВзаиморасчетов > 0
				ТОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ)
			ИНАЧЕ 0
		КОНЕЦ) КАК ЗадолженностьДней,
	(ВЫРАЗИТЬ(ВЫБОР
				КОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ) > 0
						И Дебиторка.СуммаОстатокВВалютеВзаиморасчетов > 0
					ТОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ)
				ИНАЧЕ 0
			КОНЕЦ КАК ЧИСЛО(15, 0))) КАК ЗадолженностьДень,
	(ВЫРАЗИТЬ(ВЫБОР
				КОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ) > 0
						И Дебиторка.СуммаОстатокВВалютеВзаиморасчетов > 0
					ТОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ)
				ИНАЧЕ 0
			КОНЕЦ / 7 КАК ЧИСЛО(15, 0))) КАК ЗадолженностьНеделя,
	(ВЫРАЗИТЬ(ВЫБОР
				КОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ) > 0
						И Дебиторка.СуммаОстатокВВалютеВзаиморасчетов > 0
					ТОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ)
				ИНАЧЕ 0
			КОНЕЦ / 30 КАК ЧИСЛО(15, 0))) КАК ЗадолженностьМесяц,
	(ВЫРАЗИТЬ(ВЫБОР
				КОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ) > 0
						И Дебиторка.СуммаОстатокВВалютеВзаиморасчетов > 0
					ТОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ)
				ИНАЧЕ 0
			КОНЕЦ / 90 КАК ЧИСЛО(15, 0))) КАК ЗадолженностьКвартал,
	(ВЫРАЗИТЬ(ВЫБОР
				КОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ) > 0
						И Дебиторка.СуммаОстатокВВалютеВзаиморасчетов > 0
					ТОГДА РАЗНОСТЬДАТ(Дебиторка.РасчетнаяДата, НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ), ДЕНЬ)
				ИНАЧЕ 0
			КОНЕЦ / 365 КАК ЧИСЛО(15, 0))) КАК ЗадолженностьГод,
	Дебиторка.ДатаОплаты КАК Период,
	(НАЧАЛОПЕРИОДА(Дебиторка.ДатаОплаты, ДЕНЬ)) КАК ПериодДень,
	(НАЧАЛОПЕРИОДА(Дебиторка.ДатаОплаты, НЕДЕЛЯ)) КАК ПериодНеделя,
	(НАЧАЛОПЕРИОДА(Дебиторка.ДатаОплаты, МЕСЯЦ)) КАК ПериодМесяц,
	(НАЧАЛОПЕРИОДА(Дебиторка.ДатаОплаты, КВАРТАЛ)) КАК ПериодКвартал,
	(НАЧАЛОПЕРИОДА(Дебиторка.ДатаОплаты, ГОД)) КАК ПериодГод}
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	вт_Долг_контрагента.Контрагент,
	ЕСТЬNULL(вт_Долг_контрагента.КонтрагентДнейОтсрочки, 0) КАК ДнейОтсрочки,
	вт_Долг_контрагента.КонтрагентИНН,
	DN_НеЗакрытыеРеализации.ДоговорКонтрагентаВладелец,
	DN_НеЗакрытыеРеализации.ДопустимоеЧислоДнейЗадолженности,
	DN_НеЗакрытыеРеализации.Сделка КАК СделкаСделка,
	DN_НеЗакрытыеРеализации.СуммаДокумента,
	DN_НеЗакрытыеРеализации.КвоДнейЗадолженности,
	DN_НеЗакрытыеРеализации.СуммаДолга,
	ЕСТЬNULL(РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(DN_НеЗакрытыеРеализации.Сделка.Дата, ДЕНЬ), НАЧАЛОПЕРИОДА(&ТекущаяДата, ДЕНЬ), ДЕНЬ), 0) КАК ДниТянущиеся,
	вт_Долг_контрагента.Контрагент.Менеджер КАК Менеджер
ИЗ
	вт_Долг_контрагента КАК вт_Долг_контрагента
		ЛЕВОЕ СОЕДИНЕНИЕ DN_НеЗакрытыеРеализации КАК DN_НеЗакрытыеРеализации
		ПО вт_Долг_контрагента.КонтрагентИНН = DN_НеЗакрытыеРеализации.ДоговорКонтрагентаВладелец.ИНН
Показать
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. uriah 17 26.05.20 11:23 Сейчас в теме
(1)
а там где не перекрывается оплата на реализацию то таких контрагентов в базе 2 и более,они сгруппированы по ИНН,

А КПП у этих контрагентов, с одинаковыми ИНН, разные?
5. user817897 2 26.05.20 12:19 Сейчас в теме
3. uno-c 235 26.05.20 12:09 Сейчас в теме
Почему Вы делаете соединение по ИНН ?
ПО вт_Долг_контрагента.КонтрагентИНН = DN_НеЗакрытыеРеализации.ДоговорКонтрагентаВладелец.ИНН

Хотите платежами одного контрагента долги другого перекрыть?
4. user817897 2 26.05.20 12:19 Сейчас в теме
(3) если они сгруппированы по ИНН, то да.
6. Aquashop 46 26.05.20 17:18 Сейчас в теме
Я бы переписал запрос через "Набор данных - Объект", там более гибко можно подойти к этому и уже сможешь вывести результаты по Контрагентам определить Дублирующих по ИНН, перекрывать долги и уже выводить в отчёт всё что нужно.
user817897; dkonakov; +2 Ответить
7. Jen1978 19 29.05.20 10:40 Сейчас в теме
тут вопрос по сути не про запрос, а про методологию.
8. Jen1978 19 29.05.20 10:41 Сейчас в теме
для начала нужно определить какой Вы хотите получить результат, а потом уже править под это запрос
9. Jen1978 19 29.05.20 10:43 Сейчас в теме
Результат первого пакета в запросе идентичен результату второго пакета в запросе - это так для сведения
10. Jen1978 19 29.05.20 10:56 Сейчас в теме
В УТ.10 в документах оплаты (приходный кассовый ордер и поступление на расчетный счет) уже существует таблица расшифровки платежа, в котором указывается ссылка на документ, который оплачивается. Чтобы понять оплачена реализация или нет, достаточно найти в расшифровках требуемый документ.
Для чего городить эти вычисления с тремя вложенными запросами.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)