Всем привет.
как можно в запросе выбрать документы ( у каждого дата), упорядочить их по дате и рядом вывести столбик время между ними. Соответственно, у первой = 0, у второй = Дата2 - дата1, у третьей Дата3-Дата2 и так далее.
---
Нужно учесть что при таком подходе во втором запросе строки последующей даты будут объединяться со всеми строками предыдущих дат и запрос может вообще не выполниться. В таком случае выборка документ дата в таблицу и заполнение в цикле.

```1c
    ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    ЗаказПокупателя.Ссылка КАК Документ,
    ЗаказПокупателя.Дата
    ПОМЕСТИТЬ ВтДокументов
    ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
    ГДЕ
    ЗаказПокупателя.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВтДокументов.Документ,
    ВтДокументов.Дата,
    МАКСИМУМ(ЕСТЬNULL(ВтДокументов1.Дата, ВтДокументов.Дата)) КАК ДатаПредыдущего
    ПОМЕСТИТЬ ВтДат
    ИЗ
    ВтДокументов КАК ВтДокументов
    ЛЕВОЕ СОЕДИНЕНИЕ ВтДокументов КАК ВтДокументов1
    ПО ВтДокументов.Дата > ВтДокументов1.Дата
    И (НЕ ВтДокументов.Документ = ВтДокументов1.Документ)

    СГРУППИРОВАТЬ ПО
    ВтДокументов.Документ,
    ВтДокументов.Дата
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    УНИЧТОЖИТЬ ВтДокументов
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВтДат.Документ,
    ВтДат.Дата КАК Дата,
    ВтДат.ДатаПредыдущего,
    РАЗНОСТЬДАТ(ВтДат.Дата, ВтДат.ДатаПредыдущего, СЕКУНДА) КАК Разность
    ИЗ
    ВтДат КАК ВтДат

    УПОРЯДОЧИТЬ ПО
    Дата
```
---
Нужно учесть что при таком подходе во втором запросе строки последующей даты будут объединяться со всеми строками предыдущих дат и запрос может вообще не выполниться. В таком случае выборка документ дата в таблицу и заполнение в цикле.

```1c
    ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    ЗаказПокупателя.Ссылка КАК Документ,
    ЗаказПокупателя.Дата
    ПОМЕСТИТЬ ВтДокументов
    ИЗ
    Документ.ЗаказПокупателя КАК ЗаказПокупателя
    ГДЕ
    ЗаказПокупателя.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВтДокументов.Документ,
    ВтДокументов.Дата,
    МАКСИМУМ(ЕСТЬNULL(ВтДокументов1.Дата, ВтДокументов.Дата)) КАК ДатаПредыдущего
    ПОМЕСТИТЬ ВтДат
    ИЗ
    ВтДокументов КАК ВтДокументов
    ЛЕВОЕ СОЕДИНЕНИЕ ВтДокументов КАК ВтДокументов1
    ПО ВтДокументов.Дата > ВтДокументов1.Дата
    И (НЕ ВтДокументов.Документ = ВтДокументов1.Документ)

    СГРУППИРОВАТЬ ПО
    ВтДокументов.Документ,
    ВтДокументов.Дата
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    УНИЧТОЖИТЬ ВтДокументов
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВтДат.Документ,
    ВтДат.Дата КАК Дата,
    ВтДат.ДатаПредыдущего,
    РАЗНОСТЬДАТ(ВтДат.Дата, ВтДат.ДатаПредыдущего, СЕКУНДА) КАК Разность
    ИЗ
    ВтДат КАК ВтДат

    УПОРЯДОЧИТЬ ПО
    Дата
```
---
Замечательный запрос!) Единственное, можно поменять знак минус на знак плюс кодом:

```1c
    РАЗНОСТЬДАТ(ВтДат.ДатаПредыдущего, ВтДат.Дата, СЕКУНДА) КАК Разность
```
---
Спасибо, да забыл указать данное уточнение.
---
пакет запросов
1. создаешь вирт таблицу документыкпорядку
2. соединяешь ее саму с собой по дата > дата, группируешь по максимуму помещаешь в вирт таблицу периоды
3. соединяешь таблицу периодов по дате1 с таблицей полученной в 1 по дате 2 с той же таблицей
теперь в одной строке период1 периодпрошлый, данные документа, данные документа прошлого
---
Спасибо всем, задача решена!