Про что пойдет речь
Данная статья являтеся продолжением нашей прошлой статьи про план видов характеристик. Там мы рассматривали механизм характеристик в 1С 8.5. В этой статье будет рассмотрено использование этого механизма в отчете на СКД.
Напомню, что характеристики (они же дополнительные свойства) дают возможность пользователю создавать неограниченное количество дополнительных свойств к объекту. Например, если магазин занимается торговлей продукции в разных направлениях, у продаваемого товара могут быть совершенно разные характеристики. У планшета одни характеристики, у гладильной доски или утюга совершенно другие. Но все это товар и у каждого их них есть наименование, вес, вид товара. Это одинаковое свойства, которые закладываются на этапе разработки конфигурации. Остальные свойства можно задать уже в 1С Предприятии для каждого вида товара отдельно.
В данной статье мы рассмотрим, а как же вывести эти дополнительные свойства/характеристики в отчет СКД.
Получение значений свойств через соединение с регистром
Итак, для примера построим простой отчет — выведем всю номенклатуру и ее дополнительные свойства. Номенклатура у нас хранистя в одноименном справочнике, механизм характеристик реализован с помощью плана видов характеристик, значения свойств номенклатуры хранятся в непериодеческом регистре сведений. Для получения дополнительных свойств номенклатуры присоединим к справочнику Номенклатура левым соединением регистр сведений. Если нужно получить только номенклатуру, у которой есть дополнительные свойства, то вместо Левого соединения можно использовать Внутреннее, либо получить значения напрямую из регистра.
ВЫБРАТЬ
СправочникНоменклатура.Ссылка КАК Номенклатура,
ЗначенияСвойствНоменклатуры.Свойство КАК Свойство,
ЗначенияСвойствНоменклатуры.Значение КАК Значение
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствНоменклатуры КАК ЗначенияСвойствНоменклатуры
ПО СправочникНоменклатура.Ссылка = ЗначенияСвойствНоменклатуры.Номенклатура
ГДЕ
НЕ СправочникНоменклатура.ЭтоГруппаПолучим следующий результат:

Получение значений свойств средствами СКД
В СКД существует некое расширение языка запросов. Данный механизм добавляет дополнительный функционал к языку запросов. Вот как раз таки одним из таких расширений является использование характеристик в СКД. Это дает возможность пользователю использовать дополнительные свойства объекта как обычные реквизиты. Общий синтаксис конструкции следующий:
ХАРАКТЕРИСТИКИ
ТИП(<Имя типа>)
ВИДЫХАРАКТЕРИСТИК <Имя таблицы> | (<Объединение запросов>)
ПОЛЕКЛЮЧА <Поле>
ПОЛЕИМЕНИ <Поле>
[ПОЛЕТИПАЗНАЧЕНИЯ <Поле>]
ЗНАЧЕНИЯХАРАКТЕРИСТИК <Имя таблицы> | (<Объединение запросов>)
ПОЛЕОБЪЕКТА <Поле>
ПОЛЕВИДА <Поле>
[ПОЛЕЗНАЧЕНИЯ <Поле>]Данная конструкция указывается после основого текста запроса. Реализуем тот же пример, что был выше, используя расширение языка запросов.
Для начала в конструкторе запросов выбираем основную таблицу — Справочник Номенклатура, и выбираем поле ссылки. Далее переходим на вкладку Характеристики. Здесь и происходит вся магия СКД. В качестве Типа выбираем Справочник Номенклатуру. Далее необходимо выбрать источник видов и источник значений — место, откуда брать дополнительные свойства и их значения соответственно. Здесь есть два варианта — Таблица и Запрос. Рассмотрим для начала первый вариант.
Источник видов и значений Таблица
В качестве вида характеристик выбираем созданный План видов характеристик. Полем ключа для него будет ссылка, полем имени наименование и полем типа значения ТипЗначения.
В качестве источника значений характеристик выбираем созданный регистр сведений, в котором хранятся значения характеристик. В качестве поля объекта — измерение Номенклатура, в качестве поля вида — измерение Свойство, а качестве поля значения как ни странно ресурс Значение.

Итоговый запрос будет выглядеть следующим образом:
ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Номенклатура
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
{ХАРАКТЕРИСТИКИ
ТИП(Справочник.Номенклатура)
ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.ДополнительныеСвойстваНоменклатуры
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Наименование
ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствНоменклатуры
ПОЛЕОБЪЕКТА Номенклатура
ПОЛЕВИДА Свойство
ПОЛЕЗНАЧЕНИЯ Значение }Источник видов и значений Запрос
Теперь давайте рассмотрим вариант настройки, когда в качестве источника видов и источника значений будет выступать запрос. Снова переходим на вкладку Характеристики в конструкторе запросов. Выбираем ичточнике видов и в источнике значений вариант Запрос. Теперь если выбрать поле «Виды характеристик» откроется конструктор запроса. Здесь нужно выбрать поля Ссылка, Наименование и ТипЗначения из Плана видов характеристик. Ими заполняются поля «Поле ключа», «Поле имени» и «Поле типа значения». После заполнения этих полей указываем Значения характеристик. В этом случае также откроется Конструктор запросов. Выбираем измерения и ресурс из регистра сведений ЗначенияСвойствНоменклатуры. Далее подставляем их в «Поле объекта», «Поле вида», «Поле значения». Должно получиться примерно следующее:

ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Номенклатура
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
{ХАРАКТЕРИСТИКИ
ТИП(Справочник.Номенклатура)
ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
ДополнительныеСвойстваНоменклатуры.Ссылка КАК Ссылка,
ДополнительныеСвойстваНоменклатуры.Наименование КАК Наименование,
ДополнительныеСвойстваНоменклатуры.ТипЗначения КАК ТипЗначения
ИЗ
ПланВидовХарактеристик.ДополнительныеСвойстваНоменклатуры КАК ДополнительныеСвойстваНоменклатуры)
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Наименование
ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
ЗначенияСвойствНоменклатуры.Номенклатура КАК Номенклатура,
ЗначенияСвойствНоменклатуры.Свойство КАК Свойство,
ЗначенияСвойствНоменклатуры.Значение КАК Значение
ИЗ
РегистрСведений.ЗначенияСвойствНоменклатуры КАК ЗначенияСвойствНоменклатуры)
ПОЛЕОБЪЕКТА Номенклатура
ПОЛЕВИДА Свойство
ПОЛЕЗНАЧЕНИЯ Значение }Получившийся результат
Ну а теперь перейдем к самому отчету, ради чего мы это все и затевали. И тут кроется один не очень приятный момент. Дело в том, что дополнительные свойства хранятся в базе данных, доступ к которой мы не имеем в конфигураторе. То есть дополнительные свойства доступны как реквизиты только в режиме предприятия. А это значит, что используя механизм расширения языка запросов мы не можем просто так взять и добавить дополнительные свойства в поля отчета. По крайней мере обычным способом… Но об этом немного позже.
Но мы можем в настройках отчета добавить обычные реквизиты номенклатуры, а уже в пользовательской режиме вывести нужные дополнительные свойства. Для этого в настройках делаем доступным выбор полей в пользовательском режиме.

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

На скриншоте отмечены дополнительные реквизиты, которые маскируются теперь под обычные реквизиты. В результате пользовательской настройки получаем такой результат:

«Разрешите извратиться»
Вся эта получившаяся красота будет работать только у одного пользователя. То есть для каждого пользователя нужно будет отдельно настраивать такой вариант отчета. Можно просто сохранить настройки и каждому пользователю их загрузить. Короче, извращаться можно различными способами.
Но на просторах интернета можно найти один интересный способ. Это конечно, костыль, но все же. После настройки отчета в нужный вид и добавлении дополнительных свойств в режиме 1С Предприятие сохраняем пользовательские насйтроки (если это возможно в вашей конфигурации).

Далее возвращаемся в конфигуратор и загружаем настройки в отчет.

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