При попытке заимствовать общий модуль из типовой конфигурации в расширение разработчики нередко сталкиваются с ошибкой проверки метаданных: «Переопределение свойств заимствованных объектов в расширениях недопустимо в режиме совместимости 8.3.8 и ниже». Даже если запуск выполняется на современной версии технологической платформы, применение изменений в информационной базе блокируется. Разберем детально, с чем связано данное ограничение, как устроена иерархия совместимости и какие практические способы решения существуют.
Проанализируем техническую сторону работы механизма расширений конфигурации. В платформе 1С:Предприятие возможность перехватывать и изменять исполняемый программный код модулей (с помощью директив &Вместо, &Перед, &После), а также заимствовать и переопределять свойства общих модулей появилась только начиная с версии 8.3.9.
В режиме совместимости 8.3.8 и ниже расширения предоставляют существенно урезанный функционал: они поддерживают модификацию форм, изменение командного интерфейса и добавление ограниченного числа собственных объектов. Попытка перенести модуль в расширение в таком режиме расценивается платформой как недопустимая модификация свойств заимствованного объекта.
Выясним причину, почему простая смена версии в самом расширении приводит к ошибке: «Режим совместимости расширения конфигурации больше режима совместимости основной конфигурации». В платформе действует строгое архитектурное правило:
РежимСовместимости в свойствах корня конфигурации. Пока там установлено значение Версия 8.3.8, среда полностью имитирует ограничения старой версии.Рассмотрим основной способ решения проблемы, когда необходимо использовать возможности перехвата кода общих модулей, не теряя преимуществ поддержки типового решения.
Распространенным заблуждением является мнение, что для изменения режима совместимости конфигурацию необходимо полностью снять с поддержки. Это не так. Разберем по шагам, как правильно настроить поддержку:
ОбработкаТабличнойЧастиКлиент и другие метаданные) сохраняем статус «Не редактируется» (на замке).РежимСовместимости на Версия 8.3.9 (или выше) либо установим значение Не использовать.Посмотрим на результат: типовые модули и справочники остаются защищенными от случайного изменения, обновление конфигурации через стандартные файлы обновлений (CFU) проходит в полуавтоматическом режиме без конфликтов в модулях, а механизм расширения получает доступ ко всему функционалу платформы 8.3.9.
Обратим внимание на важный параметр: при использовании переопределения кода через расширения в режиме «1С:Предприятие» в списке установленных расширений необходимо снять флаг Безопасный режим, иначе платформа заблокирует выполнение доработанного кода.
Рассмотрим альтернативную ситуацию: регламент предприятия строго запрещает включать возможность изменения даже для корня конфигурации, и информационная база должна оставаться на полной поддержке поставщика.
Проанализируем модуль ОбработкаТабличнойЧастиКлиент. Он содержит клиентские процедуры и функции, которые вызываются при возникновении событий в формах документов или справочников (например, при изменении количества, цены или пересчете суммы строк табличной части). Платформа в режиме 8.3.8 позволяет полноценно заимствовать управляемые формы.
Разберем реализацию обхода ограничения:
Клиент (управляемое приложение), например, Расш1_ОбработкаТабличнойЧастиКлиент. Добавление новых модулей в расширение поддерживается платформой 8.3.8.Если задача заключается в заполнении данных табличной части по определенным формулам или правилам, проанализируем возможности Библиотеки Стандартных Подсистем (БСП), встроенной в типовую конфигурацию.
Используем механизм Дополнительные отчеты и обработки. Реализация алгоритма в виде внешней обработки заполнения табличных частей позволяет:
Выясним возможные последствия повышения версии совместимости конфигурации. Любой тиражный релиз от разработчиков тестируется исключительно под тот режим совместимости, который зашит в поставку. Принудительное переключение конфигурации с 8.3.8 на 8.3.9 может вызвать нежелательные платформенные эффекты:
Если конфигурация находится в активной фазе выпуска обновлений разработчиком, наиболее надежным решением часто является ожидание официального релиза конфигурации, в котором режим совместимости будет поднят разработчиками типового решения.