Коллеги, добрый день!

Собираю отчет на СКД по номенклатуре за период. На выходе должно получиться такое:

             Поступило Реализовали Украли Потеряли
Товар1 5 2 1 0
Товар2 10 8 5 2
Товар3 0 2 0 0

Делаю так: в первую временную таблицу кидаю весь справочник номенклатуры, в следующие временные таблицы (ВТ_КорректировкаРеализации, ВТ_Возврат, ВТ_Поступление, ВТ_Реализация) собираю данные в разрезе Номенклатура и Количество. Далее связываю все временные таблицы (пример вкладки "Связи" приложил). На выходе получаю такой результат:

             Поступило Реализовали Украли Потеряли
Товар1 5 2 1 0
Товар2 10 8 5 2
Товар3 0 2 0 0
Товар4 0 0 0 0
Товар5 0 0 0 0
Товар6 0 0 0 0

Подскажите, как организовать связь, чтобы в итоговый результат не попадала номенклатура по которой нет движений ни по одному регистру?

Связывать по регистру "Поступило" не вариант, т.к. отчет делается за период, поэтому может быть что в этом периоде не было поступлений.

Суммировать по Поступило, Реализовали, Украли, Потеряли и в случае нуля не выводить тоже не вариант, так как могут быть отрицательные значения (Поступило 1, Потеряли -1), которые также необходимо показывать.

Понимаю, что можно решить задачу пост обработкой, но хочется понять, как это сделать именно в запросе.
---
Сделай условие Количество <> 0 :)
И зачем вообще всю номенклатуру выгружать в временную таблицу? Пробовал просто со справочником связь делать?
---
Просто уберите первую таблицу со всей номенклатурой и делайте объединение таблиц, в результат у вас попадут только те таблицы по которым были движения.
---
Сергей, подскажите пожалуйста, какими соединениями их лучше соединять? И какую с какой?
---
Да у тебя проблема из за соединения. Нужно внутреннее.
---
Вроде бы да, но с внутренним какая-та хрень получается, в результирующий запрос попадает 0 записей.
---
Не соединение, а объединение. Посмотрите вкладку Объединения/Псевдонимы.
---
левое соединение - убрать правые галочки
---
Андрей, спасибо огромное за участие! К сожалению, ситуация не поменялась. Этот кусок запроса выглядит так:

```1c
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Возврат КАК ВТ_Возврат
    ПО ВТ_Номенклатура.Номенклатура = ВТ_Возврат.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КорректировкаРеализации КАК ВТ_КорректировкаРеализации
    ПО ВТ_Номенклатура.Номенклатура = ВТ_КорректировкаРеализации.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Реализация КАК ВТ_Реализация
    ПО ВТ_Номенклатура.Номенклатура = ВТ_Реализация.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Поступление КАК ВТ_Поступление
    ПО ВТ_Номенклатура.Номенклатура = ВТ_Поступление.Номенклатура
```
---
насколько помню левое соединение означает, что из первой таблицы попадут все записи, а при правом соединении ругается на противоречивую связь
---
Сделай условие Количество <> 0 :)
И зачем вообще всю номенклатуру выгружать в временную таблицу? Пробовал просто со справочником связь делать?
---
мне показалось это более правильным: дернуть справочник один раз во временную таблицу, чем дергать его четыре раза. Насчет условия на ноль: работает. Это плохо для производительности?
---
насчет производительности не знаю, проверь через консоль запросов сколько будет выполняться запрос с условием и без. Можно ещё внутреннее соединение попробовать.
---
```1c
    "ВЫБРАТЬ
    | ВложенныйЗапрос.Номенклатура,
    | СУММА(ВложенныйЗапрос.Поступило) КАК Поступило,
    | СУММА(ВложенныйЗапрос.Рализовали) КАК Рализовали,
    | СУММА(ВложенныйЗапрос.Украли) КАК Украли,
    | СУММА(ВложенныйЗапрос.Потеряли) КАК Потеряли
    |ИЗ
    | (ВЫБРАТЬ
    | Продажи.Номенклатура КАК Номенклатура,
    | Продажи.Количество КАК Поступило,
    | NULL КАК Рализовали,
    | NULL КАК Украли,
    | NULL КАК Потеряли
    | ИЗ
    | РегистрСведений.Продажи КАК Продажи
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | Продажи.Номенклатура,
    | NULL,
    | Продажи.Количество,
    | NULL,
    | NULL
    | ИЗ
    | РегистрСведений.Продажи КАК Продажи
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | Продажи.Номенклатура,
    | NULL,
    | NULL,
    | Продажи.Количество,
    | NULL
    | ИЗ
    | РегистрСведений.Продажи КАК Продажи
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | Продажи.Номенклатура,
    | NULL,
    | NULL,
    | NULL,
    | Продажи.Количество
    | ИЗ
    | РегистрСведений.Продажи КАК Продажи) КАК ВложенныйЗапрос
    |
    |СГРУППИРОВАТЬ ПО
    | ВложенныйЗапрос.Номенклатура"
```
---
Продажи
Сергей, вариант отличный. А насколько плохо использовать вложенные запросы?
---
Ни на сколько, все зависит от задачи.
---
я понял, спасибо!