Почему возникает ошибка переопределения свойств заимствованных объектов в расширении и как её исправить?

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

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

Причина ошибки и архитектурные ограничения платформы

Проанализируем механику работы расширений. Нередко возникает путаница между фактической версией установленной платформы и свойством РежимСовместимости самой конфигурации. Даже если информационная база запущена на современной платформе (например, 8.3.9 и выше), при включенном режиме совместимости с версией 8.3.8 или более ранней платформа принудительно эмулирует поведение старого релиза.

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

Рассмотрим также иерархию совместимости: свойство РежимСовместимости расширения не может быть выше, чем режим совместимости основной конфигурации. Установить в расширении значение «Не использовать» или «Версия 8.3.9», оставив конфигурацию на 8.3.8, платформа не позволит, выдав ошибку о том, что режим совместимости расширения превышает режим основной конфигурации.

Способ 1. Изменение режима совместимости основной конфигурации

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

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

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

Способ 2. Обновление релиза типовой конфигурации

Если конфигурацию категорически запрещено переводить в режим редактирования, проанализируем текущий релиз типового решения. В более свежих релизах конфигураций (в частности, линейки УТ 11, КА 2, ERP) фирма «1С» штатно повысила минимальный режим совместимости до версии 8.3.9 и выше. После стандартного обновления конфигурации до актуального релиза ограничение на заимствование общих модулей снимается автоматически без снятия базы с полной поддержки.

Способ 3. Реализация доработки через собственный модуль и расширение форм

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

  1. В расширении конфигурации не заимствуем типовой общий модуль, а создаем новый собственный общий модуль. На добавление новых объектов расширения ограничения совместимости версий 8.3.8 не распространяются.
  2. Заимствуем в расширение управляемую форму, в которой требуется изменить логику (заимствование и доработка управляемых форм полностью поддерживаются в режиме 8.3.8).
  3. В модуле заимствованной формы перехватываем необходимые события элементов или формы и вызываем логику из нашего нового модуля расширения в обход типового функционала.

Способ 4. Использование подсистемы «Дополнительные отчеты и обработки» (БСП)

Если задача заключается в пересчете, модификации данных или заполнении табличных частей документов и справочников, рассмотрим альтернативу без механизма расширений. В конфигурациях на базе БСП предусмотрен механизм внешних обработок заполнения табличных частей. Разработав внешнюю обработку и подключив её в режиме 1С:Предприятие (раздел Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки), мы получаем возможность модифицировать поведение табличных частей без правок метаданных и без конфликтов с режимами совместимости.

← На главную