Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Обращение к предыдущей строке в запросе

Обращение к предыдущей строке в запросе
Я
   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
    КОНЕЦ
;

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

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

////////////////////////////////////////////////////////////////////////////////

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

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

////////////////////////////////////////////////////////////////////////////////

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.