При разработке отчетов на базе Схемы компоновки данных (СКД) в конфигурациях 1С (например, 1С:Бухгалтерия предприятия 3.0 или конфигурациях на базе БСП) часто возникает необходимость добавить отбор или отображение дополнительных сведений и реквизитов. Однако по умолчанию при попытке подбора значения из справочника ЗначенияСвойствОбъектов платформа выводит полный список элементов всех свойств для любых документов и объектов системы.
Разберем детально, почему так происходит и какими способами можно ограничить список выпадающих значений конкретным свойством или типом документа.
Справочник ЗначенияСвойствОбъектов является иерархическим или владеемым по отношению к плану видов характеристик ДополнительныеРеквизитыИСведения. Когда пользователь выбирает значение свойства в форме отчета, платформа 1С открывает стандартную форму выбора справочника. Если в настройках поля СКД не задана жесткая связь с конкретным владельцем (элементом плана видов характеристик), форма подбора отображает все элементы без фильтрации по владельцу.
Проанализируем три основных способа решения этой задачи: настройку через параметры редактирования в СКД, программную установку доступных значений и использование стандартного механизма характеристик.
Рассмотрим наиболее изящный способ, который позволяет ограничить выбор прямо в схеме компоновки данных с минимальным использованием кода.
Шаг 1. Создадим в схеме компоновки данных новый параметр, например ПВХ_Свойство, с типом ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения.
Шаг 2. В модуле объекта отчета (в событии ПриКомпоновкеРезультата или в процедуре инициализации) установим значение этого параметра, найдя нужное дополнительное сведение:
ПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Наше Сведение (Реализация (акты, накладные))");
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ПВХ_Свойство", ПВХ);
Шаг 3. Зайдем в настройки поля (или параметра отбора) на вкладке «Наборы данных» или «Поля» схемы СКД. В свойствах поля найдем коллекцию Параметры редактирования и откроем элемент Связи параметров выбора.
Шаг 4. Добавим новую связь:
Отбор.Владелец.ПараметрыДанных.ПВХ_Свойство.После этого переинициализируем компоновщик настроек отчета, чтобы изменения вступили в силу:
ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных);
КомпоновщикНастроек.Инициализировать(ИсточникНастроек);
В результате при вызове формы подбора платформа автоматически передаст отбор Отбор.Владелец, и пользователь увидит только те значения, которые относятся к заданному дополнительному сведению.
Посмотрим на случай, когда список разрешенных значений требуется сформировать динамически (например, выгрузить все доп. сведения, привязанные к набору свойств конкретного документа).
Выясним, как программно прочитать нужные данные и заполнить ими доступные значения отбора СКД:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Ссылка КАК Значение
|ИЗ
| Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Владелец.НаборСвойств = &НаборСвойств";
Запрос.УстановитьПараметр("НаборСвойств",
Справочники.НаборыДополнительныхРеквизитовИСведений.НайтиПоНаименованию("Документ Реализация товаров и услуг"));
ТаблицаЗначений = Запрос.Выполнить().Выгрузить();
МассивЗначений = ТаблицаЗначений.ВыгрузитьКолонку("Значение");
// Находим нужное поле в доступных полях отбора
ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.ДоступныеПоляОтбора.Элементы.Найти("НашеСведение");
Если ЭлементОтбора <> Неопределено Тогда
ЭлементОтбора.ДоступныеЗначения.ЗагрузитьЗначения(МассивЗначений);
КонецЕсли;
Важное примечание: Чтобы поле ДоступныеЗначения имело тип СписокЗначений и корректно принимало загружаемый массив, в конфигураторе на вкладке «Параметры» или в настройках поля схемы СКД предварительно необходимо указать хотя бы одно пустое значение в таблице доступных значений.
В типовых конфигурациях 1С (БП, ERP, КА, УТ) механизм дополнительных реквизитов и сведений штатно встроен через характеристики СКД. Этот подход позволяет не связывать данные через левые соединения вручную в тексте запроса, а доверить это самой платформе.
Разберем порядок настройки характеристик:
ДокументСсылка.РеализацияТоваровУслуг.ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ДополнительныеСведения (где поле объекта — Объект, поле вида — Свойство, поле значения — Значение).При использовании штатного механизма характеристик платформа 1С автоматически контролирует типы данных, владельцев и формирует корректные формы выбора в режиме «1С:Предприятие» без написания дополнительных программных обвязок.