Как устранить ошибку несовпадения режима совместимости и перенести свои объекты в расширение 1С

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

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

Анализ типовых ошибок при подключении расширения

Проанализируем две основные проблемы, возникающие при переносе доработок в другую информационную базу через расширение:

  1. Критическая ошибка: «Значение контролируемого свойства РежимСовместимости у объекта не совпадает со значением в расширяемой конфигурации». Данная ошибка означает, что платформа обнаружила расхождение в системных параметрах корня конфигурации и корня расширения.
  2. Ошибка отсутствия заимствованных объектов. Возникает, когда расширение пытается обратиться к объектам (подсистемам, перечислениям, обработкам), которые были созданы в основной конфигурации базы-источника, но отсутствуют в основной конфигурации целевой базы.

Выравнивание свойства «Режим совместимости» в расширении

Выясним причину контроля свойств. При создании расширения свойства корня конфигурации (такие как РежимСовместимости, ОсновнойРежимЗапуска, НазначениеИспользования) по умолчанию становятся контролируемыми. Режим совместимости расширения не может быть выше режима совместимости целевой конфигурации.

Разберем по шагам, как устранить ошибку несовпадения свойств:

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

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

Разница между заимствованием и созданием собственных объектов

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

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

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

Ограничения создания объектов по версиям режима совместимости

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

  1. Режим совместимости 8.3.6 – 8.3.8: расширения поддерживают только модификацию интерфейса (управляемые формы, команды, заимствование модулей). Создание собственных объектов данных и обработок в дереве расширения заблокировано платформой.
  2. Режим совместимости 8.3.9 – 8.3.10: появилась возможность создавать собственные отчеты, обработки, подсистемы и роли непосредственно в расширении.
  3. Режим совместимости 8.3.11 – 8.3.14 и выше: добавлена полная поддержка объектов, хранящих данные (справочники, документы, регистры сведений, перечисления), а также расширение состава значений существующих перечислений.

Альтернативные варианты реализации на старых режимах совместимости

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

  1. Использование внешних обработок (.epf): разработка оформляется в виде внешней обработки, подключаемой через подсистему БСП «Дополнительные отчеты и обработки» либо запускаемой через диалог открытия файла.
  2. Эмуляция перечислений программным кодом: вместо объекта метаданных Перечисление используется структура или соответствие, объявленные в модуле формы или модуля обработки.
  3. Повышение режима совместимости: если конфигурация является нетиповой или полностью снята с поддержки, можно поднять режим совместимости основной конфигурации до Версия 8.3.12 или выше, после чего создать в расширении все требуемые метаданные.

Посмотрим на пример эмуляции значений перечисления с помощью программной структуры в модуле формы обработки:


&НаСервере
Функция ПолучитьЗначенияПсевдоПеречисления()
    
    ВариантыСтатусов = Новый Структура;
    ВариантыСтатусов.Вставить("Новый", "Новый");
    ВариантыСтатусов.Вставить("ВРаботе", "В работе");
    ВариантыСтатусов.Вставить("Выполнен", "Выполнен");
    
    Возврат ВариантыСтатусов;
    
КонецФункции

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

← На главную