Имя: Пароль:
1C
1С v8
Получить Предпоследний документ
0 yyyuuu
 
02.06.21
12:08
Всем привет друзья.
Хочу получить предпоследний документ.
Результат 2 строчки вместо одной
Первая строчка отражает правильный случай вторая лишняя.
Или Я не понял? Или Я не знад?
ГотовностьДата    Готовность    АктуальнаяСсылка             ПредпоследняяГотовность    ПредпоследняяГотовностьДата    ПредпоследняяСсылка
01.06.2021    2:30:00            Налив 48437 от 31.05.2021 0:00:00    18:10:00                   31.05.2021            Налив 48431 от 31.05.2021 0:00:00
01.06.2021    2:30:00            Налив 48437 от 31.05.2021 0:00:00    2:30:00                           01.06.2021            Налив 48437 от 31.05.2021 0:00:00
1 yyyuuu
 
02.06.21
12:08
ВЫБРАТЬ
    Налив.ГотовностьДата,
    Налив.Готовность,
    МАКСИМУМ(Налив.Дата) КАК ПредыдущаяДата,
    Налив.НомерТупика,
    Налив.Ссылка
ПОМЕСТИТЬ ВтПериод
ИЗ
    Документ.Налив КАК Налив
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Налив КАК Налив1
        ПО Налив.Дата <> Налив1.Дата
            И Налив.НомерТупика = Налив1.НомерТупика
ГДЕ
    Налив.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
    Налив.ГотовностьДата,
    Налив.Готовность,
    Налив.НомерТупика,
    Налив.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВтПериод.ГотовностьДата,
    ВтПериод.Готовность,
    ВтПериод.Ссылка КАК АктуальнаяСсылка,
    Налив.Готовность КАК ПредпоследняяГотовность,
    Налив.ГотовностьДата КАК ПредпоследняяГотовностьДата,
    Налив.Ссылка КАК ПредпоследняяСсылка
ИЗ
    ВтПериод КАК ВтПериод
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Налив КАК Налив
        ПО ВтПериод.НомерТупика = Налив.НомерТупика
            И ВтПериод.ПредыдущаяДата = Налив.Дата
2 Timon1405
 
02.06.21
12:21
ВЫБРАТЬ ПЕРВЫЕ 1
    ПоступлениеТоваровУСлуг.Ссылка
ИЗ
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУСлуг
ГДЕ
    НЕ ПоступлениеТоваровУСлуг.Ссылка В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    ПоступлениеТоваровУСлуг.Ссылка
                ИЗ
                    Документ.ПоступлениеТоваровУСлуг КАК ПоступлениеТоваровУСлуг
                УПОРЯДОЧИТЬ ПО
                    ПоступлениеТоваровУСлуг.Дата УБЫВ)

УПОРЯДОЧИТЬ ПО
    ПоступлениеТоваровУСлуг.Дата УБЫВ
3 yyyuuu
 
02.06.21
12:26
(2) Только вот надо чтобы Налив.НомерТупика = Налив1.НомерТупика и при этом был предыдущим. Так Мы получим просто предпоследний
4 BeerHelpsMeWin
 
02.06.21
12:41
Выбери последние два, из них выбери первый.
5 SiAl-chel
 
02.06.21
12:41
(0) Ты не учитываешь, что внутри одной секунды может быть не один документ, а несколько.
1. Получаешь выборку документов с полями Дата и Ссылка
2. Помещаешь в ВТ
3. Делаешь левое соединение ВТ как ВТ_тек и ВТ как ВТ_пред где ВТ_тек.Дата >= ВТ_пред.Дата
4. Группируешь по ВТ_тек.Ссылка и получаешь максимум(ВТ_пред.Дата)
5. Повторяешь тоже самое но для ссылки внутри одно даты (секунды).
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.