Особенность работы отбора по характеристикам (свойствам) в СКД

Программирование - Практика программирования

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

Для тек кто не в курсе, что такое характеристики в СКД, можно почитать здесь:

http://1cskd.ru/2011/09/ispolzovanie-xarakteristik-v-skd/ или здесь: //1c-soft.it-terminal.ru/public/89842/

Кратко суть характеристик в том, чтобы добавленные свойства в режиме предприятия были доступны в отчете, как реквизиты объекта, по которым можно группировать, отбирать, сортировать, короче использовать всю мощь СКД.

Недавно столкнулся с проблемой, когда делал отчет. При установке отбора по характеристике в отчете фильтровались не только данные по значению отбора, но еще и данные с неустановленным значением свойства. Было понимание почему отбор работает именно так, но надеялся, что СКД должна это как-то корректно обрабатывать, т.е. есть простая настройка, как говорят бухи - "галочка"

Галочку, которую надо где-то поставить, чтобы все заработало не было ...

Пример проблемы:

Для примера выгрузим из типового отчета "ВедомостьТоварыНаСкладах" демо базы УСО схему и загрузим в консоль отчетов ИР.

Для наглядности добавим группировку по свойству номенклатуры "Канал сбыта" и некоторые отборы. Как видно, все ок, есть номенклатура с установленным свойством и без него.

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

Видно, что отфильтровалась номенклатура не только с "Канал сбыта - "Опт", но еще и номенклатура с неустановленным значением данного свойства.

Описание проблемы:

Связка Объект - Свойство - Значение хранится в регистре сведений ЗначенияСвойствОбъектов.

Проблема в том, что в регистре ЗначенияСвойствОбъектов записи создаются, когда свойству объекта устанавливается определенное значение, т.е. для номенклатуры, у которой свойство "Канал сбыта" не установлено в регистре записей нет. При использовании отбора система выбирает из регистра все, что в нем есть за исключением "Канал сбыта - "Опт", в итоге у нас в результат попадает только "Канал сбыта - "Реализация".

Решение:

Для корректной работы отбора необходимо имитировать наличие записей в регистре с пустым значением свойства. Для этого необходимо в качестве источника значений указать "Запрос" и описать сам запрос.

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

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

Теперь отбор работает корректно:

Скачать файлы

Наименование Файл Версия Размер
Отчет с примером запроса по характеристикам
.erf 26,28Kb
17.08.17
1
.erf 26,28Kb 1 Скачать

См. также

Комментарии
1. Алексей Новиков (Новиков) 289 21.08.17 09:51 Сейчас в теме
2. Сергей Маслов (LexSeIch) 186 22.08.17 04:27 Сейчас в теме
Интересные "грабли" спасибо за информацию.
3. Александр Хомяк (logarifm) 985 22.08.17 21:51 Сейчас в теме
информация далеко уже бесполезна для новых конфигураций.
5. Uladzimir - (nvv1970) 30.08.17 21:31 Сейчас в теме
(3) можно подробнее? Что-то костылят в конфах или изменили поведение в скд?
По СКД все норм. Выдает то что выдает СУБД. Точно так же работают и соединения наборов данных. Накладываете отбор на колонку с разрешенным нулл - получаем предсказуемый результат.
Можно кстати сделать вычисляемое поле с проверкой на нулл.
Если в запросе делать левое соединение, то поведение кажется будет зависить от установленного параметра в роли " разрешить нулл". Но могу ошибаться, давно такие случаи не попадались.
6. Константин Корзин (kkv90) 45 01.09.17 11:51 Сейчас в теме
(5) В новых конфигурациях настройки характеристик предопределены, они установлены для объектов метаданных справочников или документов. Если правой кнопкой щелкнуть на справочник в дереве метаданных, то в контекстном меню будет пункт "Характеристики", логика настройки такая же как и у отчетов СКД. В самих отчетах теперь нет необходимости настраивать закладку характеристик. При открытии отчетов характеристики автоматически читаются и становятся доступны для использования, плюс нет проблемы описанной в данной публикации.
7. Uladzimir - (nvv1970) 02.09.17 09:49 Сейчас в теме
(6) где задаются характеристики - не знают только студенты. Но спасибо на напоминание)))
Т.е. характеристики указанные в объекте и запросе компоновки данных имеют разное поведение??? Хммм... Очень сомнительно. Обязательно перепроверю поведение и сам выполняемый запрос. По возможности о причинах такого поведения отпишусь.
4. Роман Озеряный (rozer) 191 23.08.17 09:54 Сейчас в теме
при установке отбора в отчет не попадают данные с незаполненными свойствами

странно но в этом случае и не надо фильтровать ИМХО - это же логично если пользователь не указал свойство то данные и не подпадают под это свойство )
Оставьте свое сообщение