Сделать надо без СКД, запросом. Прошу прощения, при редактировании всё нормально, при выводе всё сбивается

Пример как должно получится.

Период.....Контрагент...........Приход…..Расход
01.01.21......ИП.1..................…100
02.01.21......ИП.2...……………..…….…...….....200
31.01.21.................................100...…….200...……….строка нарастающего итога
01.02.21...…ИП.1...…………………………….......300
05.02.21..….ИП.2...……………......500
28.02.21.................................600........500...……….строка нарастающего итога

Получить нарастающий итог в отдельных колонках получается, но как "загнать" их в колонки, по которым они считаются не понимаю.
---
```1c
    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 1, 1) КАК Дата,
    "ИП 1" КАК Контрагент,
    100 КАК Сумма
    ПОМЕСТИТЬ ВТ_Пример

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 1, 2),
    "ИП 2",
    200

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 2, 1),
    "ИП 1",
    300

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 2, 2),
    "ИП 2",
    500
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    КОНЕЦПЕРИОДА(ВТ_Пример.Дата, МЕСЯЦ) КАК Граница
    ПОМЕСТИТЬ ВТ_Граница
    ИЗ
    ВТ_Пример КАК ВТ_Пример
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Пример.Дата,
    ВТ_Пример.Контрагент,
    ВТ_Пример.Сумма
    ПОМЕСТИТЬ ВТ_Данные
    ИЗ
    ВТ_Пример КАК ВТ_Пример

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_Граница.Граница,
    NULL,
    NULL
    ИЗ
    ВТ_Граница КАК ВТ_Граница
    ;

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

    СГРУППИРОВАТЬ ПО
    ВТ_Данные.Контрагент,
    ВТ_Данные.Дата,
    ВТ_Данные.Сумма

    УПОРЯДОЧИТЬ ПО
    Дата
```
---
```1c
    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 1, 1) КАК Дата,
    "ИП 1" КАК Контрагент,
    100 КАК Приход,
    0 КАК Расход
    ПОМЕСТИТЬ ВТ_Пример

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 1, 2),
    "ИП 2",
    0,
    200

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 2, 1),
    "ИП 1",
    0,
    300

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 2, 2),
    "ИП 2",
    500,
    0
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    КОНЕЦПЕРИОДА(ВТ_Пример.Дата, МЕСЯЦ) КАК Граница
    ПОМЕСТИТЬ ВТ_Граница
    ИЗ
    ВТ_Пример КАК ВТ_Пример
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Пример.Дата,
    ВТ_Пример.Контрагент,
    ВТ_Пример.Приход,
    ВТ_Пример.Расход
    ПОМЕСТИТЬ ВТ_Данные
    ИЗ
    ВТ_Пример КАК ВТ_Пример

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_Граница.Граница,
    NULL,
    NULL,
    NULL
    ИЗ
    ВТ_Граница КАК ВТ_Граница
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Данные.Дата КАК Дата,
    ВТ_Данные.Контрагент,
    ВЫБОР
    КОГДА ВТ_Данные.Приход ЕСТЬ NULL
    ТОГДА СУММА(ВТ_Данные1.Приход)
    ИНАЧЕ ВТ_Данные.Приход
    КОНЕЦ КАК Приход,
    ВЫБОР
    КОГДА ВТ_Данные.Расход ЕСТЬ NULL
    ТОГДА СУММА(ВТ_Данные1.Расход)
    ИНАЧЕ ВТ_Данные.Расход
    КОНЕЦ КАК Расход
    ИЗ
    ВТ_Данные КАК ВТ_Данные
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Данные КАК ВТ_Данные1
    ПО ВТ_Данные.Дата >= ВТ_Данные1.Дата
    И (ВТ_Данные.Контрагент ЕСТЬ NULL)

    СГРУППИРОВАТЬ ПО
    ВТ_Данные.Контрагент,
    ВТ_Данные.Дата,
    ВТ_Данные.Приход,
    ВТ_Данные.Расход

    УПОРЯДОЧИТЬ ПО
    Дата
```
---
К 17808849

Не понял что за первые выборки

```1c
    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 1, 1) КАК Дата,
    "ИП 1" КАК Контрагент,
    100 КАК Приход,
    0 КАК Расход
    ПОМЕСТИТЬ ВТ_Пример

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 1, 2),
    "ИП 2",
    0,
    200

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 2, 1),
    "ИП 1",
    0,
    300

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 2, 2),
    "ИП 2",
    500,
    0
    ;

    НО используя ваш алгоритм получил то, что было надо - БОЛЬШОЕ СПАСИБО! Результирующий код получился следующий

    ВЫБРАТЬ
    _Продажи.Период КАК ДатаПериода,
    _Продажи.Контрагент КАК Контрагент,
    NULL КАК СтоимостьЗакупок,
    _Продажи.Стоимость КАК СтоимостьПродаж
    ПОМЕСТИТЬ втДвижения
    ИЗ
    РегистрНакопления._Продажи КАК _Продажи

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    _Закупки.Период,
    _Закупки.Контрагент,
    _Закупки.Стоимость,
    NULL
    ИЗ
    РегистрНакопления._Закупки КАК _Закупки
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    КОНЕЦПЕРИОДА(ВТ_Пример.ДатаПериода, МЕСЯЦ) КАК Граница
    ПОМЕСТИТЬ ВТ_Граница
    ИЗ
    втДвижения КАК ВТ_Пример
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Пример.ДатаПериода,
    ВТ_Пример.Контрагент,
    ВТ_Пример.СтоимостьЗакупок,
    ВТ_Пример.СтоимостьПродаж
    ПОМЕСТИТЬ ВТ_Данные
    ИЗ
    втДвижения КАК ВТ_Пример

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_Граница.Граница,
    NULL,
    NULL,
    NULL
    ИЗ
    ВТ_Граница КАК ВТ_Граница
    ;

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

    СГРУППИРОВАТЬ ПО
    ВТ_Данные.ДатаПериода,
    ВТ_Данные.Контрагент,
    ВТ_Данные.СтоимостьЗакупок,
    ВТ_Данные.СтоимостьПродаж

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

Вся суть нарастающего итога через запрос сводится к суммированию данных, которые меньше даты. Т.е. агрегат треугольной таблицы, получающейся левым соединением с самой собой:

```1c
    ВЫБРАТЬ
    Т1.Дата,
    Т1.Контрагент,
    Сумма(Т2.Приход),
    Сумма(Т2.Расход)
    ИЗ Таблица КАК Т1
    ЛЕВОЕ СОЕДИНЕНИЕ Таблица КАК Т2
    ПО Т1.Контрагент = Т2.Контрагент И Т1.Дата >= Т2.Дата
    СГРУППИРОВАТЬ ПО Т1.Дата, Т1.Контрагент
    УПОРЯДОЧИТЬ ПО Т1.Дата
```

Т.е. получаем таблицу для 100 и 200 для 01 и 02:

01.10.20 100 - 1-я строка
02.10.20 100 - 2-я строка
02.10.20 200 - 2-я строка
Когда сгруппируем по дате, то получим 01.10.20 100, 02.10.20 300. Если добавить в группировку и в соединение контрагента и т.п., то нарастающий итог будет считаться в разрезе группировки.
...
---
Необходимо вывести и детальные записи, когда от кого приход и расход был и в тех же колонках нарастающим итогом значения за месяц.
---
ну я так понял, что ты ограничился готовым решением и думать не собираешься? Тоже вариант.
---
Ничего не понятно.
Можешь решить соединением к самой себе
---
```1c
    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 1, 1) КАК Дата,
    "ИП 1" КАК Контрагент,
    100 КАК Сумма
    ПОМЕСТИТЬ ВТ_Пример

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 1, 2),
    "ИП 2",
    200

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 2, 1),
    "ИП 1",
    300

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 2, 2),
    "ИП 2",
    500
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    КОНЕЦПЕРИОДА(ВТ_Пример.Дата, МЕСЯЦ) КАК Граница
    ПОМЕСТИТЬ ВТ_Граница
    ИЗ
    ВТ_Пример КАК ВТ_Пример
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Пример.Дата,
    ВТ_Пример.Контрагент,
    ВТ_Пример.Сумма
    ПОМЕСТИТЬ ВТ_Данные
    ИЗ
    ВТ_Пример КАК ВТ_Пример

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_Граница.Граница,
    NULL,
    NULL
    ИЗ
    ВТ_Граница КАК ВТ_Граница
    ;

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

    СГРУППИРОВАТЬ ПО
    ВТ_Данные.Контрагент,
    ВТ_Данные.Дата,
    ВТ_Данные.Сумма

    УПОРЯДОЧИТЬ ПО
    Дата
```
---
```1c
    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 1, 1) КАК Дата,
    "ИП 1" КАК Контрагент,
    100 КАК Приход,
    0 КАК Расход
    ПОМЕСТИТЬ ВТ_Пример

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 1, 2),
    "ИП 2",
    0,
    200

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 2, 1),
    "ИП 1",
    0,
    300

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 2, 2),
    "ИП 2",
    500,
    0
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    КОНЕЦПЕРИОДА(ВТ_Пример.Дата, МЕСЯЦ) КАК Граница
    ПОМЕСТИТЬ ВТ_Граница
    ИЗ
    ВТ_Пример КАК ВТ_Пример
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Пример.Дата,
    ВТ_Пример.Контрагент,
    ВТ_Пример.Приход,
    ВТ_Пример.Расход
    ПОМЕСТИТЬ ВТ_Данные
    ИЗ
    ВТ_Пример КАК ВТ_Пример

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_Граница.Граница,
    NULL,
    NULL,
    NULL
    ИЗ
    ВТ_Граница КАК ВТ_Граница
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Данные.Дата КАК Дата,
    ВТ_Данные.Контрагент,
    ВЫБОР
    КОГДА ВТ_Данные.Приход ЕСТЬ NULL
    ТОГДА СУММА(ВТ_Данные1.Приход)
    ИНАЧЕ ВТ_Данные.Приход
    КОНЕЦ КАК Приход,
    ВЫБОР
    КОГДА ВТ_Данные.Расход ЕСТЬ NULL
    ТОГДА СУММА(ВТ_Данные1.Расход)
    ИНАЧЕ ВТ_Данные.Расход
    КОНЕЦ КАК Расход
    ИЗ
    ВТ_Данные КАК ВТ_Данные
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Данные КАК ВТ_Данные1
    ПО ВТ_Данные.Дата >= ВТ_Данные1.Дата
    И (ВТ_Данные.Контрагент ЕСТЬ NULL)

    СГРУППИРОВАТЬ ПО
    ВТ_Данные.Контрагент,
    ВТ_Данные.Дата,
    ВТ_Данные.Приход,
    ВТ_Данные.Расход

    УПОРЯДОЧИТЬ ПО
    Дата
```
---
К 17808849

Не понял что за первые выборки

```1c
    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 1, 1) КАК Дата,
    "ИП 1" КАК Контрагент,
    100 КАК Приход,
    0 КАК Расход
    ПОМЕСТИТЬ ВТ_Пример

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 1, 2),
    "ИП 2",
    0,
    200

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 2, 1),
    "ИП 1",
    0,
    300

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    ДАТАВРЕМЯ(21, 2, 2),
    "ИП 2",
    500,
    0
    ;

    НО используя ваш алгоритм получил то, что было надо - БОЛЬШОЕ СПАСИБО! Результирующий код получился следующий

    ВЫБРАТЬ
    _Продажи.Период КАК ДатаПериода,
    _Продажи.Контрагент КАК Контрагент,
    NULL КАК СтоимостьЗакупок,
    _Продажи.Стоимость КАК СтоимостьПродаж
    ПОМЕСТИТЬ втДвижения
    ИЗ
    РегистрНакопления._Продажи КАК _Продажи

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    _Закупки.Период,
    _Закупки.Контрагент,
    _Закупки.Стоимость,
    NULL
    ИЗ
    РегистрНакопления._Закупки КАК _Закупки
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    КОНЕЦПЕРИОДА(ВТ_Пример.ДатаПериода, МЕСЯЦ) КАК Граница
    ПОМЕСТИТЬ ВТ_Граница
    ИЗ
    втДвижения КАК ВТ_Пример
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Пример.ДатаПериода,
    ВТ_Пример.Контрагент,
    ВТ_Пример.СтоимостьЗакупок,
    ВТ_Пример.СтоимостьПродаж
    ПОМЕСТИТЬ ВТ_Данные
    ИЗ
    втДвижения КАК ВТ_Пример

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ВТ_Граница.Граница,
    NULL,
    NULL,
    NULL
    ИЗ
    ВТ_Граница КАК ВТ_Граница
    ;

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

    СГРУППИРОВАТЬ ПО
    ВТ_Данные.ДатаПериода,
    ВТ_Данные.Контрагент,
    ВТ_Данные.СтоимостьЗакупок,
    ВТ_Данные.СтоимостьПродаж

    УПОРЯДОЧИТЬ ПО
    ДатаПериода
```
---
В первой ВТ просто пример. Для проверки и демонстрации запроса
---
В первом запросе лучше используйте "0" вместо "NULL"
Либо в последней выборке измените

```1c
    КОГДА ВТ_Данные.СтоимостьЗакупок ЕСТЬ NULL
    ТОГДА СУММА(ВТ_Данные1.СтоимостьЗакупок)
    ИНАЧЕ ВТ_Данные.СтоимостьЗакупок
    КОНЕЦ КАК СтоимостьЗакупок,
    ВЫБОР
    КОГДА ВТ_Данные.СтоимостьПродаж ЕСТЬ NULL
    ТОГДА СУММА(ВТ_Данные1.СтоимостьПродаж)
    ИНАЧЕ ВТ_Данные.СтоимостьПродаж
    КОНЕЦ КАК СтоимостьПродаж
```

на

```1c
    КОГДА ВТ_Данные.Контрагент ЕСТЬ NULL
    ТОГДА СУММА(ВТ_Данные1.СтоимостьЗакупок)
    ИНАЧЕ ВТ_Данные.СтоимостьЗакупок
    КОНЕЦ КАК СтоимостьЗакупок,
    ВЫБОР
    КОГДА ВТ_Данные.Контрагент ЕСТЬ NULL
    ТОГДА СУММА(ВТ_Данные1.СтоимостьПродаж)
    ИНАЧЕ ВТ_Данные.СтоимостьПродаж
    КОНЕЦ КАК СтоимостьПродаж
```
---
Понял, спасибо!!!