УТ 10.3.73.3
Нужно получить информацию о заказа покупателя и оплатам, возвратам и отгрузкам по ним

```1c
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента.Владелец КАК ДоговорКонтрагентаВладелец,
    ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
    ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
    РасчетыСКонтрагентами.СуммаУпрПриход КАК СуммаЗаказа,
    РасчетыСКонтрагентами.СуммаУпрКонечныйОстаток КАК ОсталосьОплатить,
    ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК ОсталосьОтгрузитьСуммаВзаиморасчетов,
    ЗаказыПокупателейОстаткиИОбороты.СуммаУпрКонечныйОстаток КАК ОсталосьОтгрузитьСуммаУпр,
    ЗаказыПокупателейОстаткиИОбороты.КоличествоПриход КАК Запланировано,
    ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток КАК ОсталосьОтгрузить,
    ВЫБОР
    КОГДА РасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ОплатаОтПокупателяПлатежнойКартой
    И РасчетыСКонтрагентами.РасчетыВозврат = ЗНАЧЕНИЕ(Перечисление.РасчетыВозврат.Расчеты)
    ТОГДА РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход
    ИНАЧЕ 0
    КОНЕЦ КАК ПриходДСБезНал,
    ВЫБОР
    КОГДА РасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер
    ТОГДА РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход
    ИНАЧЕ 0
    КОНЕЦ КАК ПриходДСНал,
    ВЫБОР
    КОГДА РасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.ОплатаОтПокупателяПлатежнойКартой
    И РасчетыСКонтрагентами.РасчетыВозврат = ЗНАЧЕНИЕ(Перечисление.РасчетыВозврат.Возврат)
    ТОГДА РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход
    ИНАЧЕ 0
    КОНЕЦ КАК ВозвратДСБезНал,
    ВЫБОР
    КОГДА РасчетыСКонтрагентами.Регистратор ССЫЛКА Документ.РасходныйКассовыйОрдер
    ТОГДА РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход
    ИНАЧЕ 0
    КОНЕЦ КАК ВозвратДСНал,
    ВЫБОР
    КОГДА СводЗаказыПокупателейОстаткиИОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    ТОГДА СводЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовРасход
    ИНАЧЕ 0
    КОНЕЦ КАК РеализацияСумма,
    ВЫБОР
    КОГДА СводЗаказыПокупателейОстаткиИОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
    ТОГДА СводЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовРасход
    ИНАЧЕ 0
    КОНЕЦ КАК ВозвратТоваров
    ПОМЕСТИТЬ тОстаткиЗаказов
    ИЗ
    РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(, , Регистратор, , ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя {(ДоговорКонтрагента.Владелец).* КАК ДоговорКонтрагентаВладелец, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя)).* КАК ЗаказПокупателя, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры}) КАК ЗаказыПокупателейОстаткиИОбороты
    {ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКонтрагентами.ОстаткиИОбороты(, , Регистратор, , Сделка ССЫЛКА Документ.ЗаказПокупателя {(ДоговорКонтрагента.Владелец).* КАК ДоговорКонтрагентаВладелец, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ВЫРАЗИТЬ(Сделка КАК Документ.ЗаказПокупателя)).* КАК ЗаказПокупателя}) КАК РасчетыСКонтрагентами
    ПО ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя = РасчетыСКонтрагентами.Сделка
    И ЗаказыПокупателейОстаткиИОбороты.ДоговорКонтрагента = РасчетыСКонтрагентами.ДоговорКонтрагента}
    {ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(, , Регистратор, , ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя {(ДоговорКонтрагента.Владелец).* КАК ДоговорКонтрагентаВладелец, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ВЫРАЗИТЬ(ЗаказПокупателя КАК Документ.ЗаказПокупателя)).* КАК ЗаказПокупателя}) КАК СводЗаказыПокупателейОстаткиИОбороты
    ПО ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя = СводЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя}
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    тОстаткиЗаказов.ЗаказПокупателя КАК ЗаказПокупателя,
    тОстаткиЗаказов.ПриходДСБезНал КАК ПриходДСБезНал,
    тОстаткиЗаказов.ПриходДСНал КАК ПриходДСНал,
    тОстаткиЗаказов.ВозвратДСБезНал КАК ВозвратДСБезНал,
    тОстаткиЗаказов.ВозвратДСНал КАК ВозвратДСНал,
    тОстаткиЗаказов.РеализацияСумма,
    тОстаткиЗаказов.ВозвратТоваров
    ИЗ
    тОстаткиЗаказов КАК тОстаткиЗаказов

    СГРУППИРОВАТЬ ПО
    тОстаткиЗаказов.ЗаказПокупателя,
    тОстаткиЗаказов.ПриходДСБезНал,
    тОстаткиЗаказов.ПриходДСНал,
    тОстаткиЗаказов.ВозвратДСБезНал,
    тОстаткиЗаказов.ВозвратДСНал,
    тОстаткиЗаказов.РеализацияСумма,
    тОстаткиЗаказов.ВозвратТоваров
```

В результате строки с заказами дублируются в зависимости от количества дополнительных документов по нему
Как сделать что бы было один заказ - одна строка?
---
Для этого придумали объединение, а не соединение.
А за соединение виртуальных таблиц - гнать надо этими ссамыми тряпками до самой Абазы.
---
решение "в лоб":

```1c
    ВЫБРАТЬ
    тОстаткиЗаказов.ЗаказПокупателя КАК ЗаказПокупателя,
    СУММА(тОстаткиЗаказов.ПриходДСБезНал) КАК ПриходДСБезНал,
    СУММА(тОстаткиЗаказов.ПриходДСНал) КАК ПриходДСНал,
    СУММА(тОстаткиЗаказов.ВозвратДСБезНал) КАК ВозвратДСБезНал,
    СУММА(тОстаткиЗаказов.ВозвратДСНал) КАК ВозвратДСНал,
    тОстаткиЗаказов.РеализацияСумма,
    тОстаткиЗаказов.ВозвратТоваров
    ИЗ
    тОстаткиЗаказов КАК тОстаткиЗаказов

    СГРУППИРОВАТЬ ПО
    тОстаткиЗаказов.ЗаказПокупателя,
    тОстаткиЗаказов.РеализацияСумма,
    тОстаткиЗаказов.ВозвратТоваров
```

Правильное решение - в (6).
---
Он так отображается потому что Групировка по числовым полям идет, уберите ее, и должно нормально все стать.
---
Не помагло, дублей стало еще больше
---
```1c
    ВЫБРАТЬ
    тОстаткиЗаказов.ЗаказПокупателя КАК ЗаказПокупателя,
    Сумма(тОстаткиЗаказов.ПриходДСБезНал) КАК ПриходДСБезНал,
    Сумма(тОстаткиЗаказов.ПриходДСНал) КАК ПриходДСНал,
    Сумма(тОстаткиЗаказов.ВозвратДСБезНал КАК ВозвратДСБезНал),
    Сумма(тОстаткиЗаказов.ВозвратДСНал) КАК ВозвратДСНал,
    Сумма(тОстаткиЗаказов.РеализацияСумма),
    тОстаткиЗаказов.ВозвратТоваров
    ИЗ
    тОстаткиЗаказов КАК тОстаткиЗаказов

    СГРУППИРОВАТЬ ПО
    тОстаткиЗаказов.ЗаказПокупателя,
    тОстаткиЗаказов.ВозвратТоваров
```

так сделали?
---
Так в одну строчку, но суммы задвоились
---
Для этого придумали объединение, а не соединение.
А за соединение виртуальных таблиц - гнать надо этими ссамыми тряпками до самой Абазы.
---
Могли бы вы подробнее объяснить этот момент: почему для виртуальных таблиц нужно делать объединение?
---
Я разве такое говорил? Я всего лишь сказал, что не надо делать соединения с виртуальными таблицами.

Но если интересно, то вот: https://its.1c.ru/db/metod8dev/content/5842/hdoc
---
Спасибо
---
```1c
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя КАК ЗаказПокупателя,
    0 КАК ПриходДСБезНал,
    0 КАК ПриходДСНал,
    0 КАК ВозвратДСБезНал,
    0 КАК ВозвратДСНал,
    ВЫБОР
    КОГДА ЗаказыПокупателейОстаткиИОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
    ТОГДА ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовРасход
    ИНАЧЕ 0
    КОНЕЦ КАК РеализацияСумма,
    ВЫБОР
    КОГДА ЗаказыПокупателейОстаткиИОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
    ТОГДА ЗаказыПокупателейОстаткиИОбороты.СуммаВзаиморасчетовРасход
    ИНАЧЕ 0
    КОНЕЦ КАК ВозвратТоваров
    ПОМЕСТИТЬ тОстаткиЗаказов
    ИЗ
    РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(, , Регистратор, , ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя) КАК ЗаказыПокупателейОстаткиИОбороты

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

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

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    тОстаткиЗаказов.ЗаказПокупателя КАК ЗаказПокупателя,
    СУММА(тОстаткиЗаказов.ПриходДСБезНал) КАК ПриходДСБезНал,
    СУММА(тОстаткиЗаказов.ПриходДСНал) КАК ПриходДСНал,
    СУММА(тОстаткиЗаказов.ВозвратДСБезНал) КАК ВозвратДСБезНал,
    СУММА(тОстаткиЗаказов.ВозвратДСНал) КАК ВозвратДСНал,
    СУММА(тОстаткиЗаказов.РеализацияСумма) КАК РеализацияСумма,
    СУММА(тОстаткиЗаказов.ВозвратТоваров) КАК ВозвратТоваров
    ИЗ
    тОстаткиЗаказов КАК тОстаткиЗаказов

    СГРУППИРОВАТЬ ПО
    тОстаткиЗаказов.ЗаказПокупателя,
    тОстаткиЗаказов.ВозвратТоваров
```

Вот такой вариант вроде заработал
---
Да, именно так.
Я бы еще и от использования временной таблицы отказался в пользу вложенного запроса.