При попытке модификации типовых конфигураций с помощью механизма расширений мы часто сталкиваемся с тем, что привычные инструменты изменения структуры метаданных оказываются недоступны. Давайте разберем, с чем это связано и как правильно решать задачи расширения функционала регистров сведений в 1С.
Основной причиной, по которой в конфигураторе может быть заблокирована возможность добавления измерений, ресурсов или реквизитов в РегистрСведений через расширение, является режим совместимости. Платформа 1С:Предприятие 8.3 при работе с типовыми конфигурациями (например, ЗУП или ERP) часто ограничивает функционал расширений, если конфигурация настроена на работу в режиме совместимости с более ранними версиями платформы.
Даже если текущая версия платформы (например, 8.3.27) технически обладает необходимым функционалом, режим совместимости принудительно ограничивает возможности расширения для обеспечения стабильности типовых механизмов. Проверьте свойство конфигурации РежимСовместимости — если оно установлено в значение 8.3.24 или ниже, многие возможности по изменению структуры метаданных будут заблокированы.
Важно понимать, что происходит с базой данных, когда мы добавляем реквизит в регистр через расширение. Платформа не просто модифицирует существующую SQL-таблицу. Она создает дополнительную таблицу расширения.
JOIN между основной таблицей и таблицей расширения. При высокой частоте записей или больших объемах данных это может привести к деградации производительности.ТестированиеИИсправление с выполнением реструктуризации таблиц расширений.В профессиональной среде считается, что изменение структуры типовых объектов через расширение — это крайняя мера. Рассмотрим более надежные методы реализации ваших задач.
Вместо попытки изменить структуру типового РегистрСведений, создайте свой собственный объект метаданных в расширении. Это считается эталонным подходом, который исключает риски при обновлении основной конфигурации.
Рассмотрим, как это реализовать:
РегистрСведений в расширении.ПодпискиНаСобытия для того, чтобы при записи типового документа данные автоматически попадали в ваш дополнительный регистр.Таким образом, вы получаете чистую структуру, независимую от типовой, и при этом полностью сохраняете логическую связь между данными.
Если вам нужно дополнить работу регистра, попробуйте изменить не его структуру, а способы получения данных из него. Используйте механизмы расширения для перехвата вызовов типовых функций и процедур через &После или &Вместо.
Например, если вам нужно дополнить отчет или форму списка, вы можете:
&После("ПриПолученииДанных")
Процедура МойПриПолученииДанных(Элемент, ОформленияСтрок)
// Здесь добавляем логику вычисления дополнительных данных
// без изменения структуры самого регистра
КонецПроцедуры
Этот подход позволяет оставить типовую конфигурацию «чистой» и минимизировать проблемы при установке обновлений поставщика. Помните, что чем меньше метаданных мы «размазываем» по различным расширениям, тем проще в дальнейшем поддерживать и диагностировать систему. Старайтесь придерживаться регламента, при котором изменения структуры данных вносятся в основную конфигурацию, а расширения используются преимущественно для модификации программного кода и интерфейсных форм.