Как правильно настроить механизм дополнительных реквизитов для нового справочника в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Внедрение механизма дополнительных реквизитов и сведений из состава Библиотеки стандартных подсистем (БСП) — это стандартная задача при расширении функционала конфигураций. Однако простого добавления объекта в метаданные недостаточно для того, чтобы система начала автоматически отображать поля в пользовательском интерфейсе. Мы часто сталкиваемся с тем, что в Конфигураторе не удается выбрать нужные таблицы на вкладке Характеристики или реквизиты не появляются в отчетах. В этой статье мы подробно разберем процесс настройки этого механизма, чтобы ваш новый объект вел себя точно так же, как типовой справочник Номенклатура.

Настройка вкладки Характеристики в Конфигураторе

Для того чтобы система (и в частности механизм СКД) понимала, откуда брать дополнительные свойства объекта, необходимо правильно заполнить настройки на вкладке Характеристики в окне редактирования вашего справочника или документа. Разберем по шагам, какие значения здесь должны быть указаны:

  1. Тип характеристик: Здесь мы указываем ссылку на ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения. Это основной реестр всех доступных свойств в системе.
  2. Источник данных: В качестве источника наборов характеристик выбираем Справочник.НаборыДополнительныхРеквизитовИСведений. Именно этот справочник группирует реквизиты для конкретных типов объектов.
  3. Поле ключа: Выбираем Ссылка.
  4. Поле имени: Выбираем Наименование.
  5. Значения характеристик: Это критически важный узел. Здесь мы указываем, где именно физически хранятся значения. Для реквизитов выбираем табличную часть вашего объекта (например, ДополнительныеРеквизиты), а для сведений — РегистрСведений.ДополнительныеСведения.

Проанализируем ситуацию: если вы не укажете эти настройки, пользователь не сможет увидеть дополнительные поля в консоли отчетов или в настройках списка (через «Изменить форму»), даже если вы программно выведете их на экран.

Создание необходимых метаданных в объекте

Чтобы хранить дополнительные реквизиты непосредственно внутри объекта (что позволяет контролировать их заполнение при записи), нам необходимо создать соответствующую структуру табличной части. Рассмотрим состав реквизитов этой ТЧ:

Создадим табличную часть с именем ДополнительныеРеквизиты и добавим в нее следующие колонки:

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

Регистрация объекта в справочнике Наборы дополнительных реквизитов

Механизм БСП работает на основе предопределенных элементов. Чтобы ваш справочник появился в списке настроек в пользовательском режиме (Администрирование — Дополнительные реквизиты), необходимо создать связь. Выясним, как это сделать:

В справочнике НаборыДополнительныхРеквизитовИСведений нужно создать предопределенный элемент. Имя этого элемента должно строиться по определенному правилу, чтобы БСП смогла его идентифицировать. Обычно это Справочник_ИмяВашегоСправочника. Если вы создаете доп. реквизиты для документа, имя будет Документ_ИмяВашегоДокумента.

Программное взаимодействие в модулях

После того как метаданные настроены, нам нужно "оживить" механизм с помощью кода. Рассмотрим, какие изменения требуются в модулях объекта и формы.

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


Процедура СформироватьСписокНаборовСвойств(НаборыСвойств) Экспорт
	Набор = НаборыСвойств.Добавить();
	Набор.ИмяНабора = "Справочник_ВашеИмяОбъекта";
КонецПроцедуры

В модуле формы объекта нам нужно обеспечить динамическое построение элементов интерфейса. Дополнительные реквизиты не рисуются в конфигураторе на форме "руками", они создаются программно при открытии. Разберем основные процедуры:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	// Инициализация механизма управления свойствами
	УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма);
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	// Обновление значений свойств при чтении объекта
	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	// Перенос значений из динамических элементов формы в табличную часть объекта
	УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
КонецПроцедуры

Различия между Реквизитами и Сведениями

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

Дополнительные реквизиты:

Дополнительные сведения:

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

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

Рассмотрим пример: если вы добавили реквизит "Регион" к справочнику "Контрагенты", то в любом отчете, где есть ссылка на контрагента, вы сможете вытащить поле Контрагент.Регион (Доп. реквизит) так же легко, как и стандартный ИНН.

Таким образом, полноценное внедрение механизма включает в себя три уровня: метаданные (ТЧ и ПВК), настройки конфигуратора (вкладка Характеристики) и программный слой (вызовы методов БСП в модулях). Следуя этой структуре, вы обеспечите гибкость системы и удобство для конечных пользователей.

← На главную