Добрый день. Сделал отчет который показывает выпущенную продукцию с ценами по определенному виду цен (Дилер). Собственно не на все позиции есть цены и эти строки в отчет не попадают. Как сделать отбор что бы в отчет попадали все позиции которые были выпущены за определенный период даже если на них нету цен.

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

Отбор стоит ВидЦены Радно Дилер.
---
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
 тоже надо добавить.
---
допишите в конце запроса
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
---
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
Так показывает только позиции по которым не заданны цены.
---
выбирайте не ЦеныНоменклатурыСрезПоследних.Номенклатура а ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура, т.к в текущем запросе если в РС ЦеныНоменклатуры нет номенклатуры, то запрос вернет null
---
```1c
    ПО ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    И ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
```

Вроде так и делаю, чет не пойму.
---
не

```1c
    ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура,
```

а

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

Это что-то меняет? Отчет не изменился.
---
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
 тоже надо добавить.
---
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
Выводит только позиции где в значение NULL
---
&Дилер - это параметр. Надо указать его значение перед формированием отчета
---
Отчет начал показывать позиции и те где NULL и с 0 но почему то не все. Из 30000 выпущенной продукции показывает 29000
---
А если убрать левое соединение, правильное количество показывает?
Можно конечно попробовать поправить запрос. Но это вряд ли поможет, т.е.
Обернуть null и добавить отбор в параметры виртуальной таблицы.

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

```1c
    И ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер
```

должно получиться

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

Все обороты соединяться с ценами дилера, там где нет будет NULL используй ЕстьNULL.

Условие ниже не хорошее т.е. вернутся те строки, где либо цена Дилера либо ни какой + сначала пройдет полное левое соединение, его можно избежать.

```1c
    ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
```