А если через временные таблицы и операторы ВЫБОР КОГДА ... ТОГДА ... ИНАЧЕ. Нашёл на просторах интернета следующее решение, но запутался в его логике. Может быть глянете: "ВЫБРАТЬ ДАТАВРЕМЯ(2016, 1, 1) КАК Дата, "№1" КАК Документ, 15 КАК Сумма ПОМЕСТИТЬ ВТ ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2016, 1, 2), "№2", 10 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(2016, 1, 3), "№3", 13 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ДАТАВРЕМЯ(3999, 12, 31), "<документ не определен>", ВЫРАЗИТЬ(&СуммаКПогашению КАК ЧИСЛО) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Дата, ВТ.Документ, СУММА(ВТКопия.Сумма) - ВТ.Сумма КАК СуммаДо, ВТ.Сумма, СУММА(ВТКопия.Сумма) КАК СуммаПосле ПОМЕСТИТЬ ВТ1 ИЗ ВТ КАК ВТ ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТКопия ПО ВТ.Дата >= ВТКопия.Дата СГРУППИРОВАТЬ ПО ВТ.Дата, ВТ.Документ, ВТ.Сумма ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ1.Дата, ВТ1.Документ, ВТ1.СуммаДо, ВТ1.Сумма, ВТ1.СуммаПосле, (ВЫРАЗИТЬ(&СуммаКПогашению КАК ЧИСЛО)) - ВТ1.СуммаДо КАК ОстатокДолгаПоНакладной ПОМЕСТИТЬ ВТ2 ИЗ ВТ1 КАК ВТ1 ГДЕ (ВЫРАЗИТЬ(&СуммаКПогашению КАК ЧИСЛО)) > ВТ1.СуммаДо И (ВЫРАЗИТЬ(&СуммаКПогашению КАК ЧИСЛО)) <= ВТ1.СуммаПосле ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Дата, ВТ.Документ, ВТ.Сумма КАК СуммаНакладной, ВЫБОР КОГДА ВТ.Документ = ВТ2.Документ ТОГДА ВТ2.ОстатокДолгаПоНакладной ИНАЧЕ ВТ.Сумма КОНЕЦ КАК СуммаКПогашениюПоНакладной ИЗ ВТ КАК ВТ ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2 ПО ВТ.Дата <= ВТ2.Дата" |