Выводить строки в отчете по незаполненному регистру
Добрый день. Сделал отчет который показывает выпущенную продукцию с ценами по определенному виду цен (Дилер). Собственно не на все позиции есть цены и эти строки в отчет не попадают. Как сделать отбор что бы в отчет попадали все позиции которые были выпущены за определенный период даже если на них нету цен.
Отбор стоит ВидЦены Радно Дилер.
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.Характеристика,
ЦеныНоменклатурыСрезПоследних.ВидЦены,
ЦеныНоменклатурыСрезПоследних.Цена,
ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика,
ВыпускПродукцииОбороты.КоличествоОборот
ИЗ
РегистрНакопления.ВыпускПродукции.Обороты КАК ВыпускПродукцииОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
ПоказатьОтбор стоит ВидЦены Радно Дилер.
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
допишите в конце запроса
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
выбирайте не ЦеныНоменклатурыСрезПоследних.Номенклатура а ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура, т.к в текущем запросе если в РС ЦеныНоменклатуры нет номенклатуры, то запрос вернет null
(4)
Вроде так и делаю, чет не пойму.
ПО ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
Вроде так и делаю, чет не пойму.
не
а
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
а
ВЫБРАТЬ
ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
(6)
Это что-то меняет? Отчет не изменился.
ВЫБРАТЬ
ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика,
ВыпускПродукцииОбороты.КоличествоОборот,
ЦеныНоменклатурыСрезПоследних.Цена,
ЦеныНоменклатурыСрезПоследних.ВидЦены
ИЗ
РегистрНакопления.ВыпускПродукции.Обороты КАК ВыпускПродукцииОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
ПоказатьЭто что-то меняет? Отчет не изменился.
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
тоже надо добавить.
тоже надо добавить.
А если убрать левое соединение, правильное количество показывает?
Можно конечно попробовать поправить запрос. Но это вряд ли поможет, т.е.
Обернуть null и добавить отбор в параметры виртуальной таблицы.
Можно конечно попробовать поправить запрос. Но это вряд ли поможет, т.е.
Обернуть null и добавить отбор в параметры виртуальной таблицы.
ВЫБРАТЬ
ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика,
ВыпускПродукцииОбороты.КоличествоОборот,
isnull(ЦеныНоменклатурыСрезПоследних.Цена,0) как Цена,
ЦеныНоменклатурыСрезПоследних.ВидЦены
ИЗ
РегистрНакопления.ВыпускПродукции.Обороты КАК ВыпускПродукцииОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &Дилер) КАК ЦеныНоменклатурыСрезПоследних
ПО ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
Показать
В запросе же к РН присоединяются записи РС.
Надо просмотреть какой результат получается в консоли запросов.
Надо просмотреть какой результат получается в консоли запросов.
(145)
(1) Добавь в соединение
должно получиться
Все обороты соединяться с ценами дилера, там где нет будет NULL используй ЕстьNULL.
Условие ниже не хорошее т.е. вернутся те строки, где либо цена Дилера либо ни какой + сначала пройдет полное левое соединение, его можно избежать.
(1) Добавь в соединение
И ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер
должно получиться
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.Характеристика,
ЦеныНоменклатурыСрезПоследних.ВидЦены,
ЦеныНоменклатурыСрезПоследних.Цена,
ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура,
ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика,
ВыпускПродукцииОбороты.КоличествоОборот
ИЗ
РегистрНакопления.ВыпускПродукции.Обороты КАК ВыпускПродукцииОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И ВыпускПродукцииОбороты.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
И ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер
ПоказатьВсе обороты соединяться с ценами дилера, там где нет будет NULL используй ЕстьNULL.
Условие ниже не хорошее т.е. вернутся те строки, где либо цена Дилера либо ни какой + сначала пройдет полное левое соединение, его можно избежать.
ГДЕ ЦеныНоменклатурыСрезПоследних.ВидЦены = &Дилер ИЛИ ЦеныНоменклатурыСрезПоследних.ВидЦены is null
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот