ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток ПОМЕСТИТЬ ВТ_Отгрузки ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты( , , Регистратор, , ДоговорКонтрагента.ВедениеВзаиморасчетов = ЗНАЧЕНИЕ(Перечисление.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом) И ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом = ЛОЖЬ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты ГДЕ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОбороты.Период, ВзаиморасчетыСКонтрагентамиОбороты.Регистратор, ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход ПОМЕСТИТЬ ВТ_Оплаты ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты( , , Регистратор, ДоговорКонтрагента.ВедениеВзаиморасчетов = ЗНАЧЕНИЕ(Перечисление.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом) И ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом = ЛОЖЬ) КАК ВзаиморасчетыСКонтрагентамиОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Отгрузки.Период, ВТ_Отгрузки.Регистратор, ВТ_Отгрузки.ДоговорКонтрагента, ВТ_Отгрузки.СуммаВзаиморасчетовКонечныйОстаток, ВТ_Оплаты.Период КАК ПериодОплаты, ВТ_Оплаты.Регистратор КАК РегистраторОплаты, ВТ_Оплаты.СуммаВзаиморасчетовРасход, СУММА(ЕСТЬNULL(ВТ_ОплатыНарастающийИтог.СуммаВзаиморасчетовРасход, 0)) КАК СуммаРасходНарастающийИтог ПОМЕСТИТЬ ВТ_ОплатыОтгрузки ИЗ ВТ_Отгрузки КАК ВТ_Отгрузки ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Оплаты КАК ВТ_Оплаты ПО ВТ_Отгрузки.ДоговорКонтрагента = ВТ_Оплаты.ДоговорКонтрагента И (ВТ_Отгрузки.СуммаВзаиморасчетовКонечныйОстаток > 0) И (ВТ_Отгрузки.Период < ВТ_Оплаты.Период ИЛИ ВТ_Отгрузки.Период < ВТ_Оплаты.Период И ВТ_Оплаты.Регистратор.МоментВремени > ВТ_Отгрузки.Регистратор.МоментВремени) ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Оплаты КАК ВТ_ОплатыНарастающийИтог ПО ВТ_Отгрузки.ДоговорКонтрагента = ВТ_ОплатыНарастающийИтог.ДоговорКонтрагента И (ВТ_Отгрузки.СуммаВзаиморасчетовКонечныйОстаток > 0) И (ВТ_Отгрузки.Период < ВТ_ОплатыНарастающийИтог.Период ИЛИ ВТ_Отгрузки.Период < ВТ_ОплатыНарастающийИтог.Период И ВТ_ОплатыНарастающийИтог.Регистратор.МоментВремени > ВТ_Отгрузки.Регистратор.МоментВремени) И (ВТ_Оплаты.Период > ВТ_ОплатыНарастающийИтог.Период ИЛИ ВТ_Оплаты.Период < ВТ_ОплатыНарастающийИтог.Период И ВТ_ОплатыНарастающийИтог.Регистратор.МоментВремени < ВТ_Оплаты.Регистратор.МоментВремени) СГРУППИРОВАТЬ ПО ВТ_Оплаты.Период, ВТ_Отгрузки.Регистратор, ВТ_Отгрузки.Период, ВТ_Отгрузки.ДоговорКонтрагента, ВТ_Оплаты.Регистратор, ВТ_Отгрузки.СуммаВзаиморасчетовКонечныйОстаток, ВТ_Оплаты.СуммаВзаиморасчетовРасход ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ОплатыОтгрузки.Регистратор, ВТ_ОплатыОтгрузки.ДоговорКонтрагента, ЕСТЬNULL(ВТ_ОплатыОтгрузки.ПериодОплаты, ВТ_ОплатыОтгрузки.Период) КАК ДатаОплаты, ВТ_ОплатыОтгрузки.СуммаВзаиморасчетовКонечныйОстаток, ВТ_ОплатыОтгрузки.СуммаВзаиморасчетовРасход, ВТ_ОплатыОтгрузки.СуммаРасходНарастающийИтог, ВТ_ОплатыОтгрузки.Период КАК ДатаОтгрузки, ВТ_ОплатыОтгрузки.РегистраторОплаты ПОМЕСТИТЬ ВТ_НарастающийИтог ИЗ ВТ_ОплатыОтгрузки КАК ВТ_ОплатыОтгрузки ГДЕ (ВТ_ОплатыОтгрузки.СуммаВзаиморасчетовКонечныйОстаток <> 0 ИЛИ ВТ_ОплатыОтгрузки.СуммаВзаиморасчетовКонечныйОстаток > ВТ_ОплатыОтгрузки.СуммаРасходНарастающийИтог И ВТ_ОплатыОтгрузки.СуммаВзаиморасчетовКонечныйОстаток <= ВТ_ОплатыОтгрузки.СуммаВзаиморасчетовРасход + ВТ_ОплатыОтгрузки.СуммаРасходНарастающийИтог) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_НарастающийИтог.Регистратор, ВТ_НарастающийИтог.ДатаОплаты, МАКСИМУМ(ВТ_НарастающийИтог1.ДатаОплаты) КАК ДатаОплатыПред, ВТ_НарастающийИтог.ДатаОтгрузки КАК ДатаОтгрузки, ВТ_НарастающийИтог.СуммаВзаиморасчетовКонечныйОстаток, ВТ_НарастающийИтог.СуммаВзаиморасчетовРасход, ВТ_НарастающийИтог.СуммаРасходНарастающийИтог, ВТ_НарастающийИтог.ДоговорКонтрагента, ВТ_НарастающийИтог.СуммаВзаиморасчетовКонечныйОстаток - ВТ_НарастающийИтог.СуммаРасходНарастающийИтог КАК ОстатокДолга ПОМЕСТИТЬ ВТ_ПредДатаОплаты ИЗ ВТ_НарастающийИтог КАК ВТ_НарастающийИтог ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_НарастающийИтог КАК ВТ_НарастающийИтог1 ПО ВТ_НарастающийИтог.Регистратор = ВТ_НарастающийИтог1.Регистратор И ВТ_НарастающийИтог.ДатаОплаты > ВТ_НарастающийИтог1.ДатаОплаты СГРУППИРОВАТЬ ПО ВТ_НарастающийИтог.ДатаОплаты, ВТ_НарастающийИтог.СуммаВзаиморасчетовКонечныйОстаток, ВТ_НарастающийИтог.СуммаВзаиморасчетовРасход, ВТ_НарастающийИтог.СуммаРасходНарастающийИтог, ВТ_НарастающийИтог.Регистратор, ВТ_НарастающийИтог.ДатаОтгрузки, ВТ_НарастающийИтог.ДоговорКонтрагента ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 1 ВТ_НарастающийИтог.Регистратор, ВТ_НарастающийИтог.ДоговорКонтрагента, ВТ_НарастающийИтог.ДатаОплаты КАК ДатаОплаты, ВТ_НарастающийИтог.СуммаВзаиморасчетовКонечныйОстаток, ВТ_НарастающийИтог.СуммаВзаиморасчетовРасход, ВТ_НарастающийИтог.СуммаРасходНарастающийИтог, ВТ_НарастающийИтог.ДатаОтгрузки, ВТ_НарастающийИтог.ДатаОтгрузки КАК ДатаОплатыПред, ВТ_НарастающийИтог.СуммаВзаиморасчетовКонечныйОстаток - ВТ_НарастающийИтог.СуммаРасходНарастающийИтог КАК Суммадолга ПОМЕСТИТЬ ВТ_ПериодМеждуОтгрузкойИПервойОплатой ИЗ ВТ_НарастающийИтог КАК ВТ_НарастающийИтог УПОРЯДОЧИТЬ ПО ДатаОплаты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_НарастающийИтог.Регистратор, ВТ_НарастающийИтог.ДоговорКонтрагента, ВТ_НарастающийИтог.ДатаОтгрузки КАК ДатаОтгрузки, ВТ_НарастающийИтог.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток, СУММА(ВТ_НарастающийИтог.СуммаВзаиморасчетовРасход) КАК СуммаВзаиморасчетовРасход, СУММА(ВТ_НарастающийИтог.СуммаРасходНарастающийИтог) КАК СуммаРасходНарастающийИтог, МАКСИМУМ(ВТ_НарастающийИтог.ДатаОплаты) КАК ДатаОплатыПред, ВТ_НарастающийИтог.СуммаВзаиморасчетовКонечныйОстаток - СУММА(ВТ_НарастающийИтог.СуммаВзаиморасчетовРасход) КАК ОстатокДолга, МАКСИМУМ(ВТ_НарастающийИтог1.ДатаОплаты) КАК ДатаОплаты ПОМЕСТИТЬ ВТ_ПоследнийПериод ИЗ ВТ_НарастающийИтог КАК ВТ_НарастающийИтог ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_НарастающийИтог КАК ВТ_НарастающийИтог1 ПО ВТ_НарастающийИтог.Регистратор = ВТ_НарастающийИтог1.Регистратор И ВТ_НарастающийИтог.ДатаОплаты = ВТ_НарастающийИтог1.ДатаОплаты СГРУППИРОВАТЬ ПО ВТ_НарастающийИтог.Регистратор, ВТ_НарастающийИтог.ДоговорКонтрагента, ВТ_НарастающийИтог.ДатаОтгрузки, ВТ_НарастающийИтог.СуммаВзаиморасчетовКонечныйОстаток ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПредДатаОплаты.Регистратор КАК Регистратор, ВТ_ПредДатаОплаты.ДоговорКонтрагента КАК ДоговорКонтрагента, ВТ_ПредДатаОплаты.ДатаОплаты КАК ДатаОплаты, ВТ_ПредДатаОплаты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток, ВТ_ПредДатаОплаты.СуммаВзаиморасчетовРасход КАК СуммаВзаиморасчетовРасход, ВТ_ПредДатаОплаты.СуммаРасходНарастающийИтог КАК СуммаРасходНарастающийИтог, ВТ_ПредДатаОплаты.ДатаОтгрузки КАК ДатаОтгрузки, ВТ_ПредДатаОплаты.ДатаОплатыПред КАК ДатаОплатыПред, ВТ_ПредДатаОплаты.ОстатокДолга, РАЗНОСТЬДАТ(ВТ_ПредДатаОплаты.ДатаОплатыПред, ВТ_ПредДатаОплаты.ДатаОплаты, ДЕНЬ) КАК КолвоДней ИЗ ВТ_ПредДатаОплаты КАК ВТ_ПредДатаОплаты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВТ_ПериодМеждуОтгрузкойИПервойОплатой.Регистратор, ВТ_ПериодМеждуОтгрузкойИПервойОплатой.ДоговорКонтрагента, ВТ_ПериодМеждуОтгрузкойИПервойОплатой.ДатаОплаты, ВТ_ПериодМеждуОтгрузкойИПервойОплатой.СуммаВзаиморасчетовКонечныйОстаток, ВТ_ПериодМеждуОтгрузкойИПервойОплатой.СуммаВзаиморасчетовРасход, ВТ_ПериодМеждуОтгрузкойИПервойОплатой.СуммаРасходНарастающийИтог, ВТ_ПериодМеждуОтгрузкойИПервойОплатой.ДатаОтгрузки, ВТ_ПериодМеждуОтгрузкойИПервойОплатой.ДатаОплатыПред, ВТ_ПериодМеждуОтгрузкойИПервойОплатой.Суммадолга, РАЗНОСТЬДАТ(ВТ_ПериодМеждуОтгрузкойИПервойОплатой.ДатаОплатыПред, ВТ_ПериодМеждуОтгрузкойИПервойОплатой.ДатаОплаты, ДЕНЬ) ИЗ ВТ_ПериодМеждуОтгрузкойИПервойОплатой КАК ВТ_ПериодМеждуОтгрузкойИПервойОплатой ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВТ_ПоследнийПериод.Регистратор, ВТ_ПоследнийПериод.ДоговорКонтрагента, ВЫБОР КОГДА ВТ_ПоследнийПериод.ОстатокДолга = 0 ТОГДА КОНЕЦПЕРИОДА(ВТ_ПоследнийПериод.ДатаОплаты, МЕСЯЦ) ИНАЧЕ ВТ_ПоследнийПериод.ДатаОплаты КОНЕЦ, ВТ_ПоследнийПериод.СуммаВзаиморасчетовКонечныйОстаток, ВТ_ПоследнийПериод.СуммаВзаиморасчетовРасход, ВТ_ПоследнийПериод.СуммаРасходНарастающийИтог, ВТ_ПоследнийПериод.ДатаОтгрузки, ВТ_ПоследнийПериод.ДатаОплатыПред, ВТ_ПоследнийПериод.ОстатокДолга, РАЗНОСТЬДАТ(ВТ_ПоследнийПериод.ДатаОплатыПред, ВЫБОР КОГДА ВТ_ПоследнийПериод.ОстатокДолга = 0 ТОГДА КОНЕЦПЕРИОДА(ВТ_ПоследнийПериод.ДатаОплаты, МЕСЯЦ) ИНАЧЕ ВТ_ПоследнийПериод.ДатаОплаты КОНЕЦ, ДЕНЬ) ИЗ ВТ_ПоследнийПериод КАК ВТ_ПоследнийПериод УПОРЯДОЧИТЬ ПО ДоговорКонтрагента, ДатаОплаты