При проектировании метаданных в системе 1С:Предприятие начинающие разработчики часто сталкиваются с вопросом: зачем в объекте ПланВидовХарактеристик (ПВХ) предусмотрено отдельное поле «Дополнительные значения характеристик», если нужный справочник и так можно просто указать в составе типов ТипЗначения? Кажется, что система и без этой настройки работает исправно, однако это свойство скрывает в себе глубокие механизмы автоматизации интерфейса и контроля целостности данных. Разберем подробно, для чего нужна эта настройка и как она упрощает жизнь программисту.
Рассмотрим основной технический смысл данного поля. Главная задача свойства «Дополнительные значения характеристик» — установить жесткую связь между конкретным элементом ПВХ и набором его возможных значений. Когда мы указываем в этом поле справочник (например, Справочник.ДополнительныеЗначенияХарактеристик), система начинает использовать механизм подчинения объектов.
Проанализируем ситуацию на примере. Допустим, у нас есть характеристика «Цвет» и характеристика «Размер». Обе они являются элементами одного ПВХ. Если мы не используем механизм дополнительных значений, то при выборе значения для «Цвета» пользователь увидит весь огромный список справочника, включая размеры (XL, XXL), материалы и прочие не относящиеся к делу записи.
Как это работает при настроенном свойстве:
Владельцы указывается данный ПВХ.Это избавляет программиста от необходимости писать громоздкий код в обработчиках НачалоВыбора или АвтоПодбор на каждой форме, где используются характеристики.
Выясним причину, по которой этот механизм является базовым для типовых конфигураций. Вспомним классический пример из «1С:Бухгалтерии» — План видов характеристик ВидыСубконтоХозрасчетные. Здесь используется справочник Субконто в качестве хранилища дополнительных значений.
Если бы этой связи не существовало, пользователю при заполнении аналитики в проводке пришлось бы выбирать из каши, состоящей из сотен тысяч записей разных типов. Благодаря свойству «Дополнительные значения характеристик», система четко понимает: если вид субконто — «Статьи затрат», то показывать нужно только элементы, владельцем которых является этот вид субконто.
В современных конфигурациях (ERP, УТ 11, КА) на этом механизме построена подсистема «Дополнительные реквизиты и сведения» из состава Библиотеки стандартных подсистем (БСП). Это позволяет пользователям в режиме «1С:Предприятие» самостоятельно:
Рассмотрим ситуацию с точки зрения универсального программного кода. Наличие связи в метаданных позволяет писать алгоритмы, которые «не знают» заранее имен справочников.
Например, нам нужно программно создать новое значение для текущей характеристики. Если свойство заполнено, мы можем легко получить тип и ссылку на справочник-хранилище через метаданные ПВХ. Посмотрим на пример логики, которую можно реализовать:
// Пример логики получения справочника значений
МетаданныеПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.Метаданные();
СправочникЗначений = МетаданныеПВХ.ДополнительныеЗначенияХарактеристик;
Если СправочникЗначений <> Неопределено Тогда
// Мы точно знаем, какой справочник хранит значения,
// даже если конфигурация была изменена пользователем
ИмяСправочника = СправочникЗначений.Имя;
НовоеЗначение = Справочники[ИмяСправочника].СоздатьЭлемент();
НовоеЗначение.Владелец = Объект.Свойство; // Устанавливаем владельца
// ... дальнейшая логика
КонецЕсли;
Если бы мы просто добавили справочник в ТипЗначения, системе было бы гораздо сложнее определить, какой именно из десятков возможных типов в составном типе данных является тем самым «специальным» справочником для хранения значений характеристик.
Проанализируем техническую выгоду использования одного справочника для всех дополнительных значений вместо создания множества мелких справочников под каждую задачу:
Разберем случаи, когда использование этого поля действительно не обязательно. Если ваш План видов характеристик предполагает использование только предопределенных типов данных, которые уже заложены в конфигурации (например, только Число, Дата, Булево или конкретные справочники типа Склады, Контрагенты), и пользователю не нужно будет создавать свои списки значений «на лету», то поле «Дополнительные значения характеристик» можно оставить пустым.
Однако, если вы закладываете в систему гибкость, позволяющую расширять аналитику без изменения конфигуратора, использование этого механизма становится обязательным стандартом разработки.
Подводя итог, использование свойства «Дополнительные значения характеристик» в ПВХ дает разработчику три ключевых преимущества:
Таким образом, это поле — не просто ссылка для удобства, а мощный инструмент управления поведением системы и структурой данных.