Особенность использования механизма характеристик в СКД
08.03.2018
Категория: 1С:Предприятие
Что у нас есть?
Пример будем приводить на конфигурации «Управление производственным предприятием» версии 1.3. В информационной базе для всех элементов справочника «Организации» добавлены свойства «Основной склад», «Связанный контрагент» и «Страна размещения». Нам нужно создать отчет в системе компоновки данных (СКД), в котором мы сможем накладывать отбор по дополнительным характеристиками организаций.
При этом мы будем использовать стандартный функционал СКД для работы с характеристиками объектов. Также рассмотрим особенность разработки подобных отчетов, а именно — отсутствие возможности использовать дополнительные характеристики в конструкторе схемы компоновки данных в режиме «Конфигуратор». Последнее не позволяет использовать поля характеристик в настройке выводимых полей в отчете, отборах, группировка в структуре отчета и так далее.
Создаем отчет и настраиваем характеристики
Создадим простой отчет. В нем будет один набор данных со следующим запросом:
ВЫБРАТЬ Организации.Ссылка КАК Организация, Организации.ИНН, Организации.КПП ИЗ Справочник.Организации КАК Организации
Структура отчета будет иметь вывод только по детальным записям со всеми полями, выбираемыми в запросе. В конструкторе настройка структуры отчета будет выглядит следующим образом:
На скриншоте ниже представлен вывод отчета с текущими настройками.
Отлично. Теперь перейдем к настройке характеристик, но перед этим напомню в общих чертах работу механизма характеристик в большинстве типовых конфигураций, в том числе и УПП. Для этого используются несколько объектов конфигурации.
- План видов характеристик
СвойстваОбъектов
- Регистр сведений
ЗначенияСвойствОбъектов
Графически связь между объектом информационной базы и его характеристиками можно изобразить по такой схеме:
Опишем схему подробнее. В регистре сведений ЗначенияСвойствОбъектов
в измерении Объект
содержится ссылка на элемент информационной базы, для которого сохраняется свойство. В нашем примере это ссылка на элемент справочника Организации
. Все возможные свойства объекта определяются в плане видов характеристик (ПВХ) СвойстваОбъектов
. Значение характеристики, сохраняемое в регистре сведений, зависиот от доступных типов данных для элемента плана видов характеристик, записанного в измерение Свойство
. Это описание должно дать лишь общее представление о механизме доп.свойств. На практике он сложнее.
Теперь перейдем к настройке характеристик в схеме компоновки данных. Для этого запустим конструктор запроса и перейдем на вкладку «Характеристики». Здесь нужно добавить поле связи объекта информационной базы с таблицами свойств и значений свойств. Ранее мы рассматривали схему связи между объектами конфигурации для хранения доп.свойств/характеристик. В соответствии с этой информацией настройка будет следюущей:
После этого запрос набора данных дополнится инструкциями получения характеристик объектов.
ВЫБРАТЬ Организации.Ссылка КАК Организация, Организации.ИНН, Организации.КПП ИЗ Справочник.Организации КАК Организации // Доп. инструкции для получения характеристик {ХАРАКТЕРИСТИКИ ТИП(Справочник.Организации) ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.СвойстваОбъектов ПОЛЕКЛЮЧА Ссылка ПОЛЕИМЕНИ Наименование ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов ПОЛЕОБЪЕКТА Объект ПОЛЕВИДА Свойство ПОЛЕЗНАЧЕНИЯ Значение}
На этом все. Функционал отчета теперь позволяет выбрать поля дополнительных характеристик в отчете (поля вывода, отборы и т.д.). Но есть одно НО. Использовать эти поля в настройках отчета мы можем только в режиме 1С:Предприятия. В конфигураторе мы не можем увидеть поля характеристик, что логично, ведь характеристики вводятся пользователем и хранятся в информационной базе.
Но если есть необходимость, мы можем добавить поля характеристик, например, в отбор перед его открытием. Рассмотрим небольшой пример.
Программная работа с характеристиками
При открытии формы отчета выполним следующим программный код:
ТекущиеНастройки = КомпоновщикНастроек.Настройки; КоллекцияОтборов = ТекущиеНастройки.Отбор.Элементы; // Добавляем отбор по доп. реквизиту номенклатуры "Основной склад" НовЭл = КоллекцияОтборов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовЭл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовЭл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация.[Основной склад]"); НовЭл.Использование = Ложь; // Добавляем отбор по доп. реквизиту номенклатуры "Страна размещения" НовЭл = КоллекцияОтборов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовЭл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовЭл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация.[Страна размещения]"); НовЭл.Использование = Ложь; // Добавляем отбор по доп. реквизиту номенклатуры "Связанный контрагент" НовЭл = КоллекцияОтборов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовЭл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовЭл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация.[Связанный контрагент]"); НовЭл.Использование = Ложь;
Тогда если мы посмотрим в отбор отчета в режиме 1С:Предприятие, то увидим следующиую картину:
Таким образом, мы программно добавили отбор по дополнительным характеристикам справочника Организации, не смотря на то, что в конструкторе СКД эти поля не были доступны. Обратите внимание на синтаксис определения поля компоновки данных.
Новый ПолеКомпоновкиДанных("Организация.[Связанный контрагент]")
а именно на текст [Связанный контрагент]
. Если мы напишем вот так:
Новый ПолеКомпоновкиДанных("Организация.СвязанныйКонтрагент"),
то при запуске отчета СКД неправильно определит поля компоновки. В настройках поля отбора будут выделены как некорректные:
Для дополнительных свойст и реквизитов, которые не доступны в конструкторе СКД, при программном обращении необходимо использовать следующий синтаксис:
Новый ПолеКомпоновкиДанных(".[]")
Таким образом, мы можем устанавливать настройки отчета, даже если поля недоступны в конструкторе СКД.
Вывод
Использование настройки характеристик в СКД позволяет значительно упростить разработку сложных отчетов. Несмотря на некоторые недостатки в работе, такие как отсутствие возможности настройки отбора по доп. свойствам в конструкторе и т.д., механизм характеристик можно считать значительным шагом в упрощении разработки отчетов в системе 1С:Предприятие.
В статье мы рассмотрели далеко не все возможности характеристик в СКД. За рамками статьи остались такие возможности как: произвольное определение источников данных, как для свойств, так и для значений характеристик, а также отбор по владельцу для всех доступных характеристик в информационной базе и многое другое. Тема большая, есть куда расширять круг своих знания.