Выводить строки в отчете по незаполненному регистру

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


Отбор стоит ВидЦены Радно Дилер.
+
По теме из базы знаний
Найденные решения
8. Ferth 10.07.18 15:44 Сейчас в теме
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
тоже надо добавить.
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user774630 10.07.18 14:28 Сейчас в теме
допишите в конце запроса
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
+
3. HaIIpuKoJIe 10.07.18 14:33 Сейчас в теме
(2)
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null

Так показывает только позиции по которым не заданны цены.
+
4. Ferth 10.07.18 15:04 Сейчас в теме
выбирайте не ЦеныНоменклатурыСрезПоследних.Номенклатура а ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура, т.к в текущем запросе если в РС ЦеныНоменклатуры нет номенклатуры, то запрос вернет null
+
5. HaIIpuKoJIe 10.07.18 15:12 Сейчас в теме
(4)
ПО ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            И ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика

Вроде так и делаю, чет не пойму.
+
6. Ferth 10.07.18 15:21 Сейчас в теме
не
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура,

а
ВЫБРАТЬ
   ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
+
7. HaIIpuKoJIe 10.07.18 15:36 Сейчас в теме
(6)
ВЫБРАТЬ
	ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
	ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика,
	ВыпускПродукцииОбороты.КоличествоОборот,
	ЦеныНоменклатурыСрезПоследних.Цена,
	ЦеныНоменклатурыСрезПоследних.ВидЦены
ИЗ
	РегистрНакопления.ВыпускПродукции.Обороты КАК ВыпускПродукцииОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
		ПО ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
			И ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
Показать

Это что-то меняет? Отчет не изменился.
+
8. Ferth 10.07.18 15:44 Сейчас в теме
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
тоже надо добавить.
+
9. HaIIpuKoJIe 10.07.18 15:51 Сейчас в теме
(8)
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null

Выводит только позиции где в значение NULL
+
10. Ferth 10.07.18 15:56 Сейчас в теме
&Дилер - это параметр. Надо указать его значение перед формированием отчета
+
11. HaIIpuKoJIe 10.07.18 16:34 Сейчас в теме
(10) Отчет начал показывать позиции и те где NULL и с 0 но почему то не все. Из 30000 выпущенной продукции показывает 29000
+
12. Ferth 10.07.18 17:28 Сейчас в теме
А если убрать левое соединение, правильное количество показывает?
Можно конечно попробовать поправить запрос. Но это вряд ли поможет, т.е.
Обернуть null и добавить отбор в параметры виртуальной таблицы.

ВЫБРАТЬ
    ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
    ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика,
    ВыпускПродукцииОбороты.КоличествоОборот,
    isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) как Цена,
    ЦеныНоменклатурыСрезПоследних.ВидЦены
ИЗ
    РегистрНакопления.ВыпускПродукции.Обороты КАК ВыпускПродукцииОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &Дилер) КАК ЦеныНоменклатурыСрезПоследних
        ПО ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            И ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
Показать
+
13. HaIIpuKoJIe 11.07.18 10:06 Сейчас в теме
(12) Похоже всему виной кривые записи в РС, если удаляю их из регистратора то позиции появляются.
+
14. Ferth 11.07.18 14:19 Сейчас в теме
В запросе же к РН присоединяются записи РС.
Надо просмотреть какой результат получается в консоли запросов.
+
15. Plotks2017 268 13.07.18 13:38 Сейчас в теме
(145)
(1) Добавь в соединение

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


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

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


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

Условие ниже не хорошее т.е. вернутся те строки, где либо цена Дилера либо ни какой + сначала пройдет полное левое соединение, его можно избежать.
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null 
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот