К статье
Практический материал

Разработка и Конфигурация · 11 мин

План видов характеристик в 1С: как это работает

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

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

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

Вторая важная роль ПВХ — хранение видов субконто для плана счетов в бухгалтерском учёте. Каждому субконто счёта соответствует вид характеристики, а тип значения субконто определяется типом значения характеристики. Поэтому понимание ПВХ необходимо и разработчику, и внедренцу, работающему с учётными механизмами.

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

У ПВХ есть несколько ключевых настроек, которые определяют его поведение. Первая — состав типов значений характеристик: список типов, которые может принимать значение любой характеристики этого плана. Например, можно разрешить строки, числа, даты, булево и ссылки на справочники «Номенклатура» и «Контрагенты».

Вторая настройка — дополнительные значения характеристик. Это ссылка на справочник, который будет хранить произвольные значения, не вошедшие в состав типов. Например, если характеристика «Цвет» должна принимать значения из пользовательского списка, создаётся справочник «ЗначенияСвойств», и именно в него пользователь добавляет «Красный», «Синий» и так далее. В типовых конфигурациях для этого используется справочник «ЗначенияСвойствОбъектов».

Третья особенность — предопределённые элементы. Их создаёт разработчик в конфигураторе, они имеют имя и доступны в коде через менеджер плана. Пользовательские характеристики создаются в режиме предприятия и в коде доступны только по ссылке или наименованию.

Как устроена связка «ПВХ + регистр сведений»

Сам по себе ПВХ не хранит значения свойств конкретных объектов. Типовая схема выглядит так: создаётся регистр сведений с измерением «Объект» (ссылка на номенклатуру, контрагента и т.п.), измерением «Свойство» (ссылка на ПВХ) и ресурсом «Значение» (характеристика этого плана). Каждая запись регистра — это факт «у объекта X свойство Y равно Z».

У регистра сведений тип ресурса задаётся через конструкцию «Характеристика.<ИмяПланаВидовХарактеристик>». Это специальный тип, который позволяет хранить значение любого типа из состава типов плана и автоматически связывает поле значения с полем свойства: при выборе свойства тип значения сужается до допустимого.

Такая схема даёт гибкость: чтобы добавить новое свойство всем товарам, пользователь создаёт новый элемент ПВХ — и всё, никаких изменений структуры базы. Расплата за гибкость — более сложные запросы: чтобы получить значения свойств в отчёте, нужно соединять основную таблицу с регистром сведений по каждому свойству или использовать характеристики в СКД.

ПВХ как источник субконто плана счетов

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

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

Практический пример: свойства номенклатуры с нуля

Разберём минимальную собственную реализацию механизма свойств. Шаг первый: создать план видов характеристик «СвойстваНоменклатуры», в состав типов включить строку, число, булево и ссылку на справочник «ЗначенияСвойств» (который нужно создать заранее и указать в поле «Дополнительные значения характеристик»).

Шаг второй: создать регистр сведений «ЗначенияСвойствНоменклатуры» с измерениями «Номенклатура» (ссылка на справочник) и «Свойство» (ссылка на ПВХ) и ресурсом «Значение» типа «Характеристика.СвойстваНоменклатуры». Шаг третий: добавить форму или табличную часть, где пользователь заполняет пары «свойство — значение» для элемента справочника.

Порядок действий
  1. 1
    Создайте справочник для дополнительных значений свойств
  2. 2
    Создайте ПВХ, задайте состав типов и укажите справочник дополнительных значений
  3. 3
    Создайте регистр сведений: измерения Объект и Свойство, ресурс Значение с типом Характеристика.<ПВХ>
  4. 4
    Добавьте интерфейс ввода значений (форма объекта или обработка)
  5. 5
    Проверьте: создайте свойство, задайте значение объекту, выведите его в отчёте через СКД

Чтение значений в коде выполняется стандартным запросом к регистру сведений. Ниже пример получения значения конкретного свойства для конкретного элемента номенклатуры:

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| ЗначенияСвойств.Значение

|ИЗ

| РегистрСведений.ЗначенияСвойствНоменклатуры КАК ЗначенияСвойств

|ГДЕ

| ЗначенияСвойств.Номенклатура = &Номенклатура

| И ЗначенияСвойств.Свойство = &Свойство";

Запрос.УстановитьПараметр("Номенклатура", ТоварСсылка);

Запрос.УстановитьПараметр("Свойство", СвойствоСсылка);

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда

ЗначениеСвойства = Выборка.Значение;

КонецЕсли;

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

Предопределённые и пользовательские характеристики

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

Пользовательские характеристики создаются в режиме «Предприятие» и не имеют имени. Обращаться к ним в коде надёжнее всего через поиск по наименованию или через дополнительный реквизит-идентификатор, если механизм это поддерживает. Поиск по наименованию хрупок: пользователь может переименовать элемент, и код перестанет находить свойство.

Типичные ошибки
01
Поиск характеристики по наименованию в коде — пользователь переименует элемент, и логика сломается; используйте предопределённые элементы или идентификаторы
02
Включение в состав типов слишком многих типов — усложняет индексы и замедляет запросы к регистру
03
Хранение значений свойств в табличной части вместо регистра сведений — невозможно строить отчёты по свойствам разных объектов единообразно
04
Удаление элемента ПВХ без проверки ссылок — в регистрах остаются битые ссылки на свойство
05
Изменение состава типов ПВХ в рабочей базе без тестирования — существующие значения могут не соответствовать новому типу

Производительность и ограничения

Механизм характеристик — это по сути модель EAV (Entity-Attribute-Value), и у неё есть известная цена: каждое значение свойства — отдельная строка регистра. Если у вас миллион товаров и десять свойств у каждого, регистр содержит десять миллион записей, а отчёт по пяти свойствам требует пяти соединений. На больших объёмах это заметно медленнее, чем обычные реквизиты.

Практические рекомендации: не включайте в состав типов лишние ссылочные типы — каждый тип добавляет поля в структуру хранения характеристики; индексируйте измерения регистра (по умолчанию измерения индексируются, не отключайте это); для часто используемых в отборах свойств рассмотрите перенос в обычные реквизиты объекта.

Сравнение вариантов

Обычный реквизит объекта

Быстрые запросы и простые отчёты, но состав реквизитов меняет только разработчик. Подходит для стабильной аналитики.

ПВХ + регистр сведений

Пользователь сам добавляет свойства без доработки. Медленнее в отчётах и сложнее в запросах. Подходит для разнородной, часто меняющейся аналитики.

Дополнительные реквизиты и сведения (БСП)

Готовый механизм из Библиотеки стандартных подсистем поверх ПВХ: интерфейс, отчёты, печать уже реализованы. Оптимально, если конфигурация на БСП.

Проверка результата после настройки

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

Контрольные точки

Как проверить результат

Ввод значения свойства у объекта
Норма

Тип поля значения подстраивается под выбранное свойство, значение сохраняется

Тревожный признак

Поле значения недоступно, не сохраняется или принимает неверный тип

Отчёт по свойствам
Норма

Свойство доступно в отборах и группировках, значения выводятся

Тревожный признак

Свойства нет в списке полей или значения пустые при заполненном регистре

Обновление конфигурации с предопределёнными элементами
Норма

Предопределённые характеристики создаются автоматически, обращение по имени работает

Тревожный признак

Ошибка 'Предопределенный элемент не найден' в коде

Частые вопросы

Чем план видов характеристик отличается от плана видов расчёта?

План видов характеристик описывает аналитические признаки и типы их значений (свойства, субконто). План видов расчёта описывает алгоритмы начислений и удержаний в расчёте зарплаты: формулы, базы, вытеснения. Это разные механизмы для разных задач.

Можно ли пользователю добавлять новые характеристики без конфигуратора?

Да, в этом основное назначение механизма. Если у пользователя есть права на добавление элементов ПВХ, он создаёт новые свойства в режиме «Предприятие», и они сразу доступны для заполнения значений. Менять состав типов и предопределённые элементы может только разработчик.

Почему в запросе значение характеристики имеет составной тип и как с этим работать?

Ресурс с типом «Характеристика» физически хранит значения разных типов, поэтому в запросе поле составное. Для сравнений и соединений приводите тип явно через ВЫРАЗИТЬ(... КАК ...) или проверяйте тип через ТИПЗНАЧЕНИЯ, иначе сравнение со строкой может не сработать для числовых значений.

Что произойдёт со значениями, если удалить элемент плана видов характеристик?

Записи регистра сведений, ссылающиеся на удалённое свойство, останутся, но ссылка станет битой (объект не найден). Перед удалением проверяйте ссылки через «Поиск ссылок на объект» и очищайте связанные записи.

Когда стоит отказаться от ПВХ в пользу обычных реквизитов?

Если состав аналитики стабилен, по свойству часто строятся отборы в больших отчётах или требуется максимальная производительность запросов — обычный реквизит объекта предпочтительнее. ПВХ оправдан, когда набор свойств заранее неизвестен или различается между группами объектов.

Как вывести свойства характеристик в печатную форму?

Значения получают запросом к регистру сведений по объекту и заполняют параметры макета. Если конфигурация построена на БСП, используйте готовые процедуры модуля управления свойствами — они возвращают таблицу свойств и значений объекта одним вызовом.

Итог

Что важно запомнить

План видов характеристик задаёт список аналитических признаков и типы их значений, а сами значения хранятся в регистре сведений или используются как субконто плана счетов. Механизм даёт пользователю свободу расширять аналитику, но требует аккуратности с типами, предопределёнными элементами и производительностью запросов.