Зачем в Плане видов характеристик нужно свойство «Дополнительные значения характеристик»?

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

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

Механизм автоматической фильтрации и связь по владельцу

Рассмотрим основной технический смысл данного поля. Главная задача свойства «Дополнительные значения характеристик» — установить жесткую связь между конкретным элементом ПВХ и набором его возможных значений. Когда мы указываем в этом поле справочник (например, Справочник.ДополнительныеЗначенияХарактеристик), система начинает использовать механизм подчинения объектов.

Проанализируем ситуацию на примере. Допустим, у нас есть характеристика «Цвет» и характеристика «Размер». Обе они являются элементами одного ПВХ. Если мы не используем механизм дополнительных значений, то при выборе значения для «Цвета» пользователь увидит весь огромный список справочника, включая размеры (XL, XXL), материалы и прочие не относящиеся к делу записи.

Как это работает при настроенном свойстве:

  1. В свойстве ПВХ «Дополнительные значения характеристик» указывается справочник.
  2. У самого справочника в свойстве Владельцы указывается данный ПВХ.
  3. Теперь каждый элемент справочника создается с привязкой к конкретному «Владельцу» (элементу ПВХ). Например, значение «Красный» принадлежит владельцу «Цвет».
  4. Платформа 1С на уровне ядра реализует автоматический отбор по владельцу. В любом поле ввода, где выбирается значение характеристики, система сама определит текущую характеристику и покажет в справочнике только те элементы, которые принадлежат именно ей.

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

Роль в архитектуре типовых решений (БСП и Субконто)

Выясним причину, по которой этот механизм является базовым для типовых конфигураций. Вспомним классический пример из «1С:Бухгалтерии» — План видов характеристик ВидыСубконтоХозрасчетные. Здесь используется справочник Субконто в качестве хранилища дополнительных значений.

Если бы этой связи не существовало, пользователю при заполнении аналитики в проводке пришлось бы выбирать из каши, состоящей из сотен тысяч записей разных типов. Благодаря свойству «Дополнительные значения характеристик», система четко понимает: если вид субконто — «Статьи затрат», то показывать нужно только элементы, владельцем которых является этот вид субконто.

В современных конфигурациях (ERP, УТ 11, КА) на этом механизме построена подсистема «Дополнительные реквизиты и сведения» из состава Библиотеки стандартных подсистем (БСП). Это позволяет пользователям в режиме «1С:Предприятие» самостоятельно:

Связь метаданных и программный доступ

Рассмотрим ситуацию с точки зрения универсального программного кода. Наличие связи в метаданных позволяет писать алгоритмы, которые «не знают» заранее имен справочников.

Например, нам нужно программно создать новое значение для текущей характеристики. Если свойство заполнено, мы можем легко получить тип и ссылку на справочник-хранилище через метаданные ПВХ. Посмотрим на пример логики, которую можно реализовать:


// Пример логики получения справочника значений
МетаданныеПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.Метаданные();
СправочникЗначений = МетаданныеПВХ.ДополнительныеЗначенияХарактеристик;

Если СправочникЗначений <> Неопределено Тогда
    // Мы точно знаем, какой справочник хранит значения, 
    // даже если конфигурация была изменена пользователем
    ИмяСправочника = СправочникЗначений.Имя;
    НовоеЗначение = Справочники[ИмяСправочника].СоздатьЭлемент();
    НовоеЗначение.Владелец = Объект.Свойство; // Устанавливаем владельца
    // ... дальнейшая логика
КонецЕсли;

Если бы мы просто добавили справочник в ТипЗначения, системе было бы гораздо сложнее определить, какой именно из десятков возможных типов в составном типе данных является тем самым «специальным» справочником для хранения значений характеристик.

Оптимизация базы данных и контроль ссылочной целостности

Проанализируем техническую выгоду использования одного справочника для всех дополнительных значений вместо создания множества мелких справочников под каждую задачу:

  1. Сокращение количества таблиц: В СУБД создается одна таблица справочника значений вместо десятков. Это упрощает обслуживание базы, индексацию и ускоряет процесс реструктуризации при обновлении конфигурации.
  2. Целостность данных: Платформа контролирует связь по владельцу. Вы не сможете случайно присвоить значение «Металлический» характеристике «Размер», так как на уровне ссылок они принадлежат разным владельцам.
  3. Удаление объектов: При попытке удалить элемент ПВХ система автоматически проверит наличие подчиненных записей в справочнике дополнительных значений и не допустит появления «битых» ссылок (объектов без владельца).

Когда можно не указывать дополнительные значения?

Разберем случаи, когда использование этого поля действительно не обязательно. Если ваш План видов характеристик предполагает использование только предопределенных типов данных, которые уже заложены в конфигурации (например, только Число, Дата, Булево или конкретные справочники типа Склады, Контрагенты), и пользователю не нужно будет создавать свои списки значений «на лету», то поле «Дополнительные значения характеристик» можно оставить пустым.

Однако, если вы закладываете в систему гибкость, позволяющую расширять аналитику без изменения конфигуратора, использование этого механизма становится обязательным стандартом разработки.

Резюме

Подводя итог, использование свойства «Дополнительные значения характеристик» в ПВХ дает разработчику три ключевых преимущества:

Таким образом, это поле — не просто ссылка для удобства, а мощный инструмент управления поведением системы и структурой данных.

← На главную