При проектировании метаданных в системе 1С:Предприятие разработчики часто сталкиваются с вопросом: стоит ли использовать стандартный Справочник или лучше прибегнуть к использованию объекта ПланВидовХарактеристик (ПВХ). На первый взгляд эти объекты очень похожи, однако они решают разные задачи. Давайте разберем подробнее, как ПВХ может выступать в роли «продвинутого» справочника и в каких ситуациях это оправдано.
Проанализируем структуру объекта ПланВидовХарактеристик. На уровне базы данных он практически идентичен справочнику. Он обладает следующими знакомыми нам свойствами:
ПланыВидовХарактеристик.ИмяПВХ.ИмяЭлемента.Следовательно, технически ПВХ — это и есть справочник, но с одной ключевой «надстройкой», которая называется Тип значения (Type Description). Именно эта особенность делает его инструментом метаописания данных.
Выясним причину, по которой программисты выбирают ПВХ. В обычном справочнике структура реквизитов жестко задана. Если мы создали реквизит Цвет с типом Строка, то во всех элементах этого справочника там будет строка.
В случае с ПВХ каждый отдельный элемент (вид характеристики) сам определяет, какой тип данных будет храниться в связке с ним. Например:
Число.СправочникСсылка.Материалы.Дата.Такая гибкость позволяет нам не плодить десятки реквизитов в карточке товара, а создать универсальный механизм дополнительных свойств.
Рассмотрим по шагам, как реализовать «псевдосправочник» на базе ПВХ для хранения значений. Сам по себе ПВХ хранит только описания свойств (названия полей), а не их значения для конкретных объектов (например, для конкретной Номенклатуры).
Для реализации полноценного хранилища данных мы должны использовать связку «ПВХ + Регистр Сведений». Разберем пример реализации:
ПланВидовХарактеристик.ДополнительныеРеквизиты.РегистрСведений.ЗначенияСвойствОбъектов.Объект (например, ссылка на справочник Номенклатура) и Свойство (тип ПланВидовХарактеристикСсылка.ДополнительныеРеквизиты).Значение. Тип этого ресурса должен быть Характеристика, связанная с нашим ПВХ.Пример кода для программной записи значения характеристики для объекта:
МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Объект = СсылкаНаТовар;
МенеджерЗаписи.Свойство = СсылкаНаПВХ_Цвет;
МенеджерЗаписи.Значение = "Красный";
МенеджерЗаписи.Записать();
Иногда нам нужно, чтобы свойство имело тип, которого нет в конфигурации (например, список конкретных брендов, которые пользователь хочет вводить сам). В настройках ПВХ существует специальное поле Дополнительные значения характеристик.
Посмотрим на алгоритм работы этой механики:
Справочник.ЗначенияСвойствОбъектов, делаем его подчиненным нашему ПВХ.Это классический способ реализации механизма «Свойства объектов» в типовых решениях (УТ 10.3, УПП).
Проанализируем ситуацию использования ПВХ в бухгалтерском контуре. Объект ВидыСубконто — это чистый План видов характеристик. Он позволяет привязывать к счетам учета аналитику любого типа (Контрагенты, Договоры, Номенклатура) через единый интерфейс. Без использования ПВХ нам пришлось бы жестко прописывать типы аналитики для каждого счета в конфигураторе, что лишило бы систему гибкости настройки в режиме «1С:Предприятие».
Разберем плюсы и минусы такого подхода, чтобы принять взвешенное решение.
Преимущества:
Недостатки и ограничения:
Мы выяснили, что с помощью Плана видов характеристик действительно можно организовать структуру, заменяющую или дополняющую справочник. Это не просто «справочник с доп. функционалом», а мощный инструмент для создания расширяемых систем.
Рекомендуем придерживаться следующего правила: если структура данных известна заранее и она статична (например, «Паспортные данные», «ИНН», «Адрес»), используйте обычный Справочник. Если же вы создаете систему, где пользователь должен сам определять, какие параметры описывают объект (например, «Характеристики одежды» или «Свойства запчастей»), то связка ПланВидовХарактеристик + РегистрСведений будет лучшим решением.