Имя: Пароль:
1C
1С v8
Обращение к предыдущей строке в запросе
,
0 GodCratOs
 
12.03.20
17:07
Здравствуйте, столкнулся с проблемой при создании запроса.
Нужно продублировать отсрочку с предыдущей строки, если она равна нулю.

У меня сейчас
Период                   Регистратор               ОтсрочкаКоДню
14.01.2016 11:44:10 Реализация товаров и услуг 1   09.10.2018 11:44:10
16.01.2016 16:25:01 Платежное поручение входящее 1
22.01.2016 11:44:10 Платежное поручение входящее 2
01.03.2016 11:42:44 Реализация товаров и услуг 2   25.11.2018 11:42:44
08.03.2016 11:44:10 Платежное поручение входящее 3
15.03.2016 11:44:10 Платежное поручение входящее 4
06.04.2016 11:44:10 Реализация товаров и услуг 2   31.12.2018 9:34:43
08.04.2016 11:44:10 Платежное поручение входящее 5
Хочу чтобы было вот так...

Период                       Регистратор                 ОтсрочкаКоДню
14.01.2016 11:44:10 Реализация товаров и услуг 1     09.10.2018 11:44:10
16.01.2016 16:25:01 Платежное поручение входящее 1   09.10.2018 11:44:10
22.01.2016 11:44:10 Платежное поручение входящее 2   09.10.2018 11:44:10
01.03.2016 11:42:44 Реализация товаров и услуг 2     25.11.2018 11:42:44
08.03.2016 11:44:10 Платежное поручение входящее 3   25.11.2018 11:42:44
15.03.2016 11:44:10 Платежное поручение входящее 4   25.11.2018 11:42:44
06.04.2016 11:44:10 Реализация товаров и услуг 2     31.12.2018 9:34:43
08.04.2016 11:44:10 Платежное поручение входящее 5   31.12.2018 9:34:43



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

СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход,
    ВЫБОР
        КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты > 0
            ТОГДА ВЫБОР
                    КОГДА ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход, 0) > 0
                        ТОГДА ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты)
                    ИНАЧЕ 0
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ,
    ВЫБОР
        КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход > 0
            ТОГДА ВЫБОР
                    КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты > 0
                        ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты
                    ИНАЧЕ 0
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
    ВтВзаиморасчеты.Период,
    ВтВзаиморасчеты.Регистратор,
    ВтВзаиморасчеты.ОтсрочкаПлатежаКоДню
ИЗ
    ВтВзаиморасчеты КАК ВтВзаиморасчеты
1 patria0muerte
 
12.03.20
17:25
(0) В случае, если период уникален, т.е. нет двух строк с одинаковым периодом - то примерно так:

ВЫБРАТЬ
    Т.Период КАК Период,
    Т.ОтгрузкаКоДню КАК ОтгрузкаКоДню
ПОМЕСТИТЬ ВТПериоды
ИЗ
    &Данные КАК Т
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТПериоды.Период КАК Период,
    ВТПериоды.ОтгрузкаКоДню КАК ОтгрузкаКоДню,
    МАКСИМУМ(ВТПериоды1.Период) КАК ПериодСДатойОтгрузки
ПОМЕСТИТЬ ВТДатыОтгрузок
ИЗ
    ВТПериоды КАК ВТПериоды
        ЛЕВОЕ СОЕДИНЕНИЕ ВТПериоды КАК ВТПериоды1
        ПО ВТПериоды.Период > ВТПериоды1.Период
            И (ВТПериоды1.ОтгрузкаКоДню <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
            И (ВТПериоды.ОтгрузкаКоДню = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))

СГРУППИРОВАТЬ ПО
    ВТПериоды.Период,
    ВТПериоды.ОтгрузкаКоДню
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТДатыОтгрузок.Период КАК Период,
    ЕСТЬNULL(ВТПериоды.ОтгрузкаКоДню, ВТДатыОтгрузок.ОтгрузкаКоДню) КАК ОтгрузкаКоДню
ИЗ
    ВТДатыОтгрузок КАК ВТДатыОтгрузок
        ЛЕВОЕ СОЕДИНЕНИЕ ВТПериоды КАК ВТПериоды
        ПО ВТДатыОтгрузок.ПериодСДатойОтгрузки = ВТПериоды.Период
2 dka80
 
12.03.20
17:41
Пронумеровать строки, найти максимальный номер предыдущей строки, где заполнена отсрочка, заполнить в нужной строке
3 Жан Пердежон
 
12.03.20
18:04
имхо,
не нужна тебе предыдущая строка
и даже срез последних на каждую дату особо не поможет
4 GodCratOs
 
12.03.20
18:09
Спасибо что откликнулись)
Вот решение...

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

СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход,
    ВЫБОР
        КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты > 0
            ТОГДА ВЫБОР
                    КОГДА ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход, 0) > 0
                        ТОГДА ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты)
                    ИНАЧЕ 0
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ,
    ВЫБОР
        КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход > 0
            ТОГДА ВЫБОР
                    КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты > 0
                        ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты
                    ИНАЧЕ 0
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВтВзаиморасчеты.Период,
    ВтВзаиморасчеты.Регистратор,
    ВЫБОР
        КОГДА ВтВзаиморасчеты.ОтсрочкаПлатежаКоДню = 0
            ТОГДА МАКСИМУМ(ЕСТЬNULL(ВтВзаиморасчеты1.ОтсрочкаПлатежаКоДню, 0))
        ИНАЧЕ ВтВзаиморасчеты.ОтсрочкаПлатежаКоДню
    КОНЕЦ КАК ОтсрочкаПлатежаКоДню
ПОМЕСТИТЬ ВтОтрочка
ИЗ
    ВтВзаиморасчеты КАК ВтВзаиморасчеты
        ЛЕВОЕ СОЕДИНЕНИЕ ВтВзаиморасчеты КАК ВтВзаиморасчеты1
        ПО ВтВзаиморасчеты.Период > ВтВзаиморасчеты1.Период
            И (ВтВзаиморасчеты1.ОтсрочкаПлатежаКоДню <> 0)

СГРУППИРОВАТЬ ПО
    ВтВзаиморасчеты.Период,
    ВтВзаиморасчеты.Регистратор,
    ВтВзаиморасчеты.ОтсрочкаПлатежаКоДню
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВтВзаиморасчеты.Период,
    ВтВзаиморасчеты.Регистратор,
    ВтВзаиморасчеты.ОстатокДолгаНаНачалоПериода,
    ВтВзаиморасчеты.Отгружено,
    ВтВзаиморасчеты.Оплачено,
    ВтВзаиморасчеты.ОстатокДолгаНаКонецПериода,
    ВтВзаиморасчеты.ДопустимоеЧислоДнейЗадолженности,
    ВтОтрочка.ОтсрочкаПлатежаКоДню,
    РАЗНОСТЬДАТ(ВтВзаиморасчеты.Период, ВЫРАЗИТЬ(ВтОтрочка.ОтсрочкаПлатежаКоДню КАК ДАТА), ДЕНЬ) КАК Поле1
ИЗ
    ВтВзаиморасчеты КАК ВтВзаиморасчеты
        ЛЕВОЕ СОЕДИНЕНИЕ ВтОтрочка КАК ВтОтрочка
        ПО ВтВзаиморасчеты.Регистратор = ВтОтрочка.Регистратор
5 GodCratOs
 
12.03.20
18:10
ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
    СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток) КАК ОстатокДолгаНаНачалоПериода,
    СУММА(ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход, 0)) КАК Отгружено,
    СУММА(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток) КАК ОстатокДолгаНаКонецПериода,
    ВЫБОР
        КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход > 0
            ТОГДА ВЫБОР
                    КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты > 0
                        ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты
                    ИНАЧЕ 0
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ КАК ДопустимоеЧислоДнейЗадолженности,
    СУММА(ВЫБОР
            КОГДА ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток, 0) - ЕСТЬNULL(ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход, 0), 0) > ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
                ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток
            ИНАЧЕ ВЫБОР
                    КОГДА ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток, 0) - ЕСТЬNULL(ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход, 0), 0) > 0
                        ТОГДА ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток, 0) - ЕСТЬNULL(ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход, 0), 0)
                    ИНАЧЕ 0
                КОНЕЦ
        КОНЕЦ) КАК ОстатокДолга,
    ВЫБОР
        КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты > 0
            ТОГДА ВЫБОР
                    КОГДА ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход, 0) > 0
                        ТОГДА ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты)
                    ИНАЧЕ 0
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ КАК ОтсрочкаПлатежаКоДню,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК Оплачено
ПОМЕСТИТЬ ВтВзаиморасчеты
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(, КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), Регистратор, , Контрагент = &Контрагент) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты

СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход,
    ВЫБОР
        КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты > 0
            ТОГДА ВЫБОР
                    КОГДА ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход, 0) > 0
                        ТОГДА ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты)
                    ИНАЧЕ 0
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ,
    ВЫБОР
        КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход > 0
            ТОГДА ВЫБОР
                    КОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты > 0
                        ТОГДА ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ОтсрочкаОплаты
                    ИНАЧЕ 0
                КОНЕЦ
        ИНАЧЕ 0
    КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВтВзаиморасчеты.Период,
    ВтВзаиморасчеты.Регистратор,
    ВЫБОР
        КОГДА ВтВзаиморасчеты.ОтсрочкаПлатежаКоДню = 0
            ТОГДА МАКСИМУМ(ЕСТЬNULL(ВтВзаиморасчеты1.ОтсрочкаПлатежаКоДню, 0))
        ИНАЧЕ ВтВзаиморасчеты.ОтсрочкаПлатежаКоДню
    КОНЕЦ КАК ОтсрочкаПлатежаКоДню
ПОМЕСТИТЬ ВтОтрочка
ИЗ
    ВтВзаиморасчеты КАК ВтВзаиморасчеты
        ЛЕВОЕ СОЕДИНЕНИЕ ВтВзаиморасчеты КАК ВтВзаиморасчеты1
        ПО ВтВзаиморасчеты.Период > ВтВзаиморасчеты1.Период
            И (ВтВзаиморасчеты1.ОтсрочкаПлатежаКоДню <> 0)

СГРУППИРОВАТЬ ПО
    ВтВзаиморасчеты.Период,
    ВтВзаиморасчеты.Регистратор,
    ВтВзаиморасчеты.ОтсрочкаПлатежаКоДню
;

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