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 157 13.07.18 13:38 Сейчас в теме
(145)
(1) Добавь в соединение

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


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

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


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

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

Вакансии

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день

Программист 1С
Воронеж
зарплата до 80 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 80 000 руб.
Полный день