Использование характеристик в СКД

08.03.2018

Категория: 1С:Предприятие

В конструкторе запросов, когда он вызывается из формы настройки источника данных, для схемы компоновки данных. Есть закладка «Характеристики», использование которой не вполне ясно описано в документации. В этой статье я постараюсь объяснить, как и для чего используются характеристики в СКД.

В типовых конфигурациях активно используется механизм свойств и значений свойств доступный практически для любых объектов. Примитивно, на справочниках, этот механизм реализовывался еще в конфигурациях 7.7. Сейчас этот механизм реализован с использованием плана видов характеристик и регистра сведений, но идея осталась прежней.

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

Таблица на закладке очень капризная, либо вы введете всю строку корректно, либо откажетесь от ввода строки совсем, оставить «на потом» не до конца заполненную строку система не даст.

Итак, перейдем к конкретике. Первая колонка: Тип — здесь выбираем тип объекта, к которому привяжутся характеристики, например СправочникСсылка.Номенклатура. Это означает, что теперь для всех объектов указанного типа можно будет получить значения свойств.

Далее в следующей колонке Источник видов мы должны задать параметры источника видов свойств. Возможны варианты таблица и запрос, зачем нужен вариант запрос расскажу позже, сейчас выберем пункт таблица.

В колонке Виды характеристик мы должны выбрать таблицу информационной базы, в которой хранятся нужные виды характеристик, в нашем примере это будет ПланВидовХарактеристик.СвойстваОбъектов.

Далее, значения доступные нам для выбора в колонках Поле ключа, Поле имени и Поле типа значения, непосредственно зависят от полей выбранной нами таблицы. В Поле ключа мы выбираем Ссылка, в Поле имениПредставление (именно его пользователь увидит в качестве имени реквизита), а в Поле типа соответственно ТипЗначения.

Теперь перейдем к источнику значений. Источником значений у нас будет регистр сведений ЗначенияСвойствОбъектов, поэтому мы выбираем в колонке Источник значенийтаблица, а в колонке Значения характеристикРегистрСведений.ЗначенияСвойствОбъектов. В колонках Объект, Свойство, Значение, выбираем соответствующие поля регистра Объект, Свойство, Значение.

Казалось бы, на этом все. Заходим в настройки схемы, добавляем группировку по товарам, и добавляем подчиненную ей группировку, допустим по брендам, есть у нас такое свойство. Разворачиваем список реквизитов группировки Номенклатура и … не видим там никаких свойств:

Дело в том, что мы находимся в конфигураторе, откуда нет доступа к данным. Как же сделать нужную настройку? Удобнее всего для этого использовать консоль компоновки данных, ту что на диске ИТС, или ту что входит в подсистему «Инструменты разработчика». Но можно и просто открыть настройку отчета в режиме предприятия.

Итак, откроем ту же настройку, но в режиме предприятия:

Как видите, у нас добавились новые Реквизиты, при этом свойство Бренд внешне не отличается от обычных реквизитов справочника. А свойство Вид товара взято в квадратные скобки, это связано с тем, что представление свойства содержит пробел.

Однако, у нас появилось и свойство Вид договора которое привязано к справочнику Договора и никакого отношения не имеет к Номенклатуре. Если не использовать в настройке Вид договор то все будет работать корректно, если же его выбрать, то в результате оно окажется не заполненным, потому что ни у одного элемента номенклатуры это свойство действительно не заполнено. Но как же отфильтровать лишние свойства, чтобы они не путались под ногами?

Для этого нам нужно изменить настройку источника видов, в конструкторе запроса, на закладке «Характеристики». Помните, я в начале статьи обещал рассказать, для чего нужен тип источника видов запрос? Сейчас как раз такой случай. Меняем тип источника видов на запрос. В колонке виды характеристик нажимаем кнопочку […] и открывается новое окно конструктора запросов.

Вводим туда такой запрос:

ВЫБРАТЬ
  СвойстваОбъектов.Ссылка,
  СвойстваОбъектов.Наименование + " (свойство)" КАК Наименование,
  СвойстваОбъектов.ТипЗначения
ИЗ
  ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
ГДЕ
  СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура)
  И (НЕ СвойстваОбъектов.ПометкаУдаления)
  И (НЕ СвойстваОбъектов.Категория)

В колонках Поле ключа, Поле имени и Поле типа значения, выберем соответствующие поля выборки: Ссылка, Наименование и ТипЗначения. Получится так:

Теперь, когда мы перейдем к настройке отчета, в списке реквизитов Номенклатуры картинка изменится:

Вот теперь у товара только те свойства, которые ему назначены, более того, они теперь заметно отличаются от обычных реквизитов, благодаря приписке (свойство), которую мы добавили к наименованию свойства в запросе.

На этом собственно и все, но многих может смутить невозможность настройки в конфигураторе. На самом деле ничего страшного нет. Достаточно сохранить настройку (или всю схему) в файл, а в конфигураторе восстановить.

Непонятные ему реквизиты конфигуратор отобразит красными крестами, как недоступные:

Но это уже не страшно, потому что отчет с такими настройками можно сохранить в конфигурации и он будет корректно работать при открытии пользователем.

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.