Особенность работы отбора по характеристикам (свойствам) в СКД
Замечено, что в отчете созданном на СКД с использованием характеристик (свойств) объектов при установке отбора в отчет не попадают данные с незаполненными свойствами.
- Описание
- Подробнее
Описание
Для тек кто не в курсе, что такое характеристики в СКД, можно почитать здесь:
http://1cskd.ru/2011/09/ispolzovanie-xarakteristik-v-skd/ или здесь: //sale.itcity.ru/public/89842/
Кратко суть характеристик в том, чтобы добавленные свойства в режиме предприятия были доступны в отчете, как реквизиты объекта, по которым можно группировать, отбирать, сортировать, короче использовать всю мощь СКД.
Недавно столкнулся с проблемой, когда делал отчет. При установке отбора по характеристике в отчете фильтровались не только данные по значению отбора, но еще и данные с неустановленным значением свойства. Было понимание почему отбор работает именно так, но надеялся, что СКД должна это как-то корректно обрабатывать, т.е. есть простая настройка, как говорят бухи — «галочка»
Галочку, которую надо где-то поставить, чтобы все заработало не было …
Пример проблемы:
Для примера выгрузим из типового отчета «ВедомостьТоварыНаСкладах» демо базы УСО схему и загрузим в консоль отчетов ИР.
Для наглядности добавим группировку по свойству номенклатуры «Канал сбыта» и некоторые отборы. Как видно, все ок, есть номенклатура с установленным свойством и без него.

Попробуем отфильтровать, например, «Канал сбыта» — «Не равно» — «Опт»:

Видно, что отфильтровалась номенклатура не только с «Канал сбыта — «Опт», но еще и номенклатура с неустановленным значением данного свойства.
Описание проблемы:
Связка Объект — Свойство — Значение хранится в регистре сведений ЗначенияСвойствОбъектов.

Проблема в том, что в регистре ЗначенияСвойствОбъектов записи создаются, когда свойству объекта устанавливается определенное значение, т.е. для номенклатуры, у которой свойство «Канал сбыта» не установлено в регистре записей нет. При использовании отбора система выбирает из регистра все, что в нем есть за исключением «Канал сбыта — «Опт», в итоге у нас в результат попадает только «Канал сбыта — «Реализация».
Решение:
Для корректной работы отбора необходимо имитировать наличие записей в регистре с пустым значением свойства. Для этого необходимо в качестве источника значений указать «Запрос» и описать сам запрос.

Шаблон запроса:

В результате этого запроса мы получим полную таблицу, в которой будет вся номенклатура из справочника «Номенклатура» и все доступные для нее свойства из ПВХ. Если значение свойства не установлено, то в качестве значения будет пустая ссылка на справочник «ЗначенияСвойствОбъектов».
Теперь отбор работает корректно:

