Как добавить реквизит в план видов характеристик через расширение в 1С?

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

При разработке функционала в конфигурациях 1С, таких как 1С:ERP Управление предприятием, разработчики часто стараются выносить любые доработки в расширения конфигурации, чтобы не снимать типовую конфигурацию с поддержки и облегчить последующие обновления. Однако при попытке добавить новый реквизит в типовой заимствованный план видов характеристик (ПВХ) конфигуратор блокирует эту возможность. Разберем причины такого поведения платформы и выясним, как решить задачу хранения дополнительных данных без изменения типовой конфигурации.

Ограничения платформы «1С:Предприятие 8.3»

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

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

  1. Заимствование и изменение форм, макетов, команд и модулей объекта или менеджера.
  2. Расширение состава типов в свойстве Тип значения характеристик (данная возможность доступна начиная с версии платформы 8.3.20 при соответствующем режиме совместимости).

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

Вариант 1. Использование собственного регистра сведений в расширении

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

Разберем реализацию этого решения по шагам:

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

Посмотрим на пример программного кода для чтения и записи данных в обработчиках формы элемента:


&НаСервере
Процедура Расш1_ПриЧтенииНаСервереПосле(ТекущийОбъект)
    // Считываем значения из нашего независимого регистра сведений
    Отбор = Новый Структура("Объект", ТекущийОбъект.Ссылка);
    Значения = РегистрыСведений.Расш1_ДополнительныеРеквизитыПВХ.Получить(Отбор);
    
    РеквизитФормыЗначение = Значения.ИмяПоля;
КонецПроцедуры

&НаСервере
Процедура Расш1_ПослеЗаписиНаСервереПосле(ТекущийОбъект, ПараметрыЗаписи)
    // Записываем данные в регистр сведений после сохранения элемента
    МенеджерЗаписи = РегистрыСведений.Расш1_ДополнительныеРеквизитыПВХ.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Объект = ТекущийОбъект.Ссылка;
    МенеджерЗаписи.ИмяПоля = РеквизитФормыЗначение;
    МенеджерЗаписи.Записать(Истина);
КонецПроцедуры

Данный подход позволяет полностью сохранить типовую конфигурацию на замке и обеспечивает беспрепятственное типовое обновление.

Вариант 2. Использование механизма «Дополнительные реквизиты и сведения» (БСП)

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

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

Вариант 3. Создание собственного плана видов характеристик в расширении

Если бизнес-логика позволяет не привязываться к типовому объекту метаданных, а требует независимого набора характеристик, оптимальным выходом будет создание абсолютно нового плана видов характеристик непосредственно внутри расширения.

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

Вариант 4. Добавление реквизита в основной конфигурации со снятием с поддержки

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

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

← На главную