```1c
    ВЫБРАТЬ
    СУММА(ЕСТЬNULL(Закупки.Количество, 0)) КАК ВНаличииПриход,
    ЕСТЬNULL(ар1.Номенклатура, Закупки.АналитикаУчетаНоменклатуры.Номенклатура) КАК Номенклатура,
    СУММА(ар1.ВНаличииОстаток) КАК ВНаличииОстаток,
    СУММА(ар1.ВРезервеОстаток) КАК ВРезервеОстаток,
    СУММА(ар1.КОтгрузкеОстаток) КАК КОтгрузкеОстаток,
    СУММА(ар1.СейчасНаСкладе) КАК СейчасНаСкладе,
    СУММА(ар1.ВНаличииРасход) КАК ВНаличииРасход,
    СУММА(ар1.СуммаВыручки) КАК СуммаВыручки
    ИЗ
    ар1 КАК ар1
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Закупки КАК Закупки
    ПО ар1.Номенклатура = Закупки.АналитикаУчетаНоменклатуры.Номенклатура
    ГДЕ
    Закупки.Период >= &НачалоПериода
    И Закупки.Период <= &КонецПериода
    И Закупки.ХозяйственнаяОперация В(&ХозяйственнаяОперация)

    СГРУППИРОВАТЬ ПО
    ЕСТЬNULL(ар1.Номенклатура, Закупки.АналитикаУчетаНоменклатуры.Номенклатура)
```

Что я делаю не так? Почему не отображается не 1 строки с пустой ячейкой ВНаличииПриход
---
соединения таблиц плохо дружат с где, либо пишите условие в самом соединении, либо, как написали выше, через временные таблицы
---
У вас в условии ГДЕ отбор по таблице Закупки.
А значит у вас уже не полное соединение, а внутреннее получается в результате.
Сначала со временную таблицу отберите нужные записи из РН, а потом уже в следующем запросе соединяйте.
---
хм, получается надо сначала сделать отбор в вирт таблицу, а только потом уже делать полное соединение, так?
---
Да
---
Но при этом всё равно ведь произойдёт "уменьшение количества строк" и строки, где Количество=0 не попадут в результат?
---
Почему?
---
Часть строк отсечётся по условию ГДЕ и не будет участвовать в полном соединении.
---
То что отсечется по условию ГДЕ и не нужны для соединения.
При полном соединении будут строки как из левой таблицы, так и из правой.
Поэтому не важно, есть ли строки с количеством = 0 в выбранных записях РН.
---
Автор вопрошает "куда же делись строки?". Предполагаю, что в этом конкретном случае они оказались среди тех, что не подошли по условию ГДЕ. Возможно, стоит глянуть на реестр глазами, и посмотреть, действительно ли за указанный период и при данных хозяйственных операциях есть движения с Количество=0.
---
Предполагаю, что в этом конкретном случае они оказались среди тех, что не подошли по условию ГДЕ.
Да.
Поэтому сначала нужно отобрать, а потом соединять.
Либо перенести условие из ГДЕ в соединение, как писали ниже.
---
тут весь смысл в том, что вначале отобрать с условием, а потом соединять полученное по соединению таблиц, но без условий. Тогда строки не пропадут.
Но проще условия перенести в соединение
---
А в реестре Закупки есть движения, где Количество=0?
---
да, есть номенклатура, которая не попадает в период закупок, но есть в таблице ар1
---
Есть-то она там есть, но вы какую-то часть строк отсекаете условием ГДЕ.
---
соединения таблиц плохо дружат с где, либо пишите условие в самом соединении, либо, как написали выше, через временные таблицы
---
а что мешает условия из где перенести в соединение?

```1c
    ВЫБРАТЬ
    СУММА(ЕСТЬNULL(Закупки.Количество, 0)) КАК ВНаличииПриход,
    ЕСТЬNULL(ар1.Номенклатура, Закупки.АналитикаУчетаНоменклатуры.Номенклатура) КАК Номенклатура,
    СУММА(ар1.ВНаличииОстаток) КАК ВНаличииОстаток,
    СУММА(ар1.ВРезервеОстаток) КАК ВРезервеОстаток,
    СУММА(ар1.КОтгрузкеОстаток) КАК КОтгрузкеОстаток,
    СУММА(ар1.СейчасНаСкладе) КАК СейчасНаСкладе,
    СУММА(ар1.ВНаличииРасход) КАК ВНаличииРасход,
    СУММА(ар1.СуммаВыручки) КАК СуммаВыручки
    ИЗ
    ар1 КАК ар1
    ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Закупки КАК Закупки
    ПО ар1.Номенклатура = Закупки.АналитикаУчетаНоменклатуры.Номенклатура
    И Закупки.Период >= &НачалоПериода
    И Закупки.Период <= &КонецПериода
    И Закупки.ХозяйственнаяОперация В(&ХозяйственнаяОперация)

    СГРУППИРОВАТЬ ПО
    ЕСТЬNULL(ар1.Номенклатура, Закупки.АналитикаУчетаНоменклатуры.Номенклатура)
```
---
ну дык я же так и предложил
---
Насколько я понимаю, перенос условия из ГДЕ в соединение даст иной результат. В итоговую таблицу таки попадут движения, не попавшие в условие отбора по периоду. Может автору это и нужно.
---
Спасибо всем ответившим, искренне не понимаю почему в запросах к бд, не выполнять сначала Выборку, потом объединение. Весь смысл полного соединения теряется.
---
секция ГДЕ выполняется уже на результат соединения, если оптимизатор не переделает. Но оптимизатор не будет делать то, что изменит результат.
---
Потому что сначала выполняется соединение, а потом отбор из секции ГДЕ.