Механизм расширений конфигурации в платформе 1С:Предприятие 8.3 предназначен для адаптации и доработки прикладных решений без снятия основной конфигурации с поддержки поставщика. Однако при попытке переноса функционала между базами или при первом создании расширения разработчики часто сталкиваются с критическими ошибками применимости, блокирующими подключение расширения. Рассмотрим подробно, почему возникают эти ошибки и как правильно настроить свойства расширения для корректной работы.
Проанализируем две основные проблемы, возникающие при переносе доработок в другую информационную базу через расширение:
Выясним причину контроля свойств. При создании расширения свойства корня конфигурации (такие как РежимСовместимости, ОсновнойРежимЗапуска, НазначениеИспользования) по умолчанию становятся контролируемыми. Режим совместимости расширения не может быть выше режима совместимости целевой конфигурации.
Разберем по шагам, как устранить ошибку несовпадения свойств:
Режим совместимости и запомним его точное значение (например, Версия 8.3.6 или Версия 8.3.10).Режим совместимости расширения установим точно такое же значение, какое установлено в основной конфигурации.Важно: не следует менять режим совместимости в самой основной конфигурации, если она находится на поддержке поставщика, так как это потребует снятия с поддержки и может нарушить штатную логику типового решения.
Проанализируем механизм добавления объектов в расширение. Команда «Добавить в расширение» в контекстном меню объекта метаданных не переносит сам объект в расширение целиком. Она лишь заимствует (захватывает) объект из основной конфигурации для возможности переопределения его форм, реквизитов или модулей.
Если создать новый объект в основной конфигурации и затем нажать «Добавить в расширение», то в составе расширения сохранится только ссылка на существующий объект основной базы. При переносе такого расширения в чистую базу возникнет ошибка, так как там этого объекта в основной конфигурации нет.
Чтобы функционал полностью переносился вместе с расширением, объекты должны быть собственными объектами расширения, то есть созданными непосредственно внутри дерева метаданных самого расширения.
Возможность добавления собственных объектов в дерево расширения напрямую зависит от режима совместимости, установленного в базе:
Если информационная база работает в режиме совместимости Версия 8.3.6, полноценно создать собственное перечисление в расширении не удастся. Рассмотрим практические пути обхода данного ограничения:
Перечисление используется структура или соответствие, объявленные в модуле формы или модуля обработки.Версия 8.3.12 или выше, после чего создать в расширении все требуемые метаданные.Посмотрим на пример эмуляции значений перечисления с помощью программной структуры в модуле формы обработки:
&НаСервере
Функция ПолучитьЗначенияПсевдоПеречисления()
ВариантыСтатусов = Новый Структура;
ВариантыСтатусов.Вставить("Новый", "Новый");
ВариантыСтатусов.Вставить("ВРаботе", "В работе");
ВариантыСтатусов.Вставить("Выполнен", "Выполнен");
Возврат ВариантыСтатусов;
КонецФункции
Таким образом, для успешного переноса доработок в расширении необходимо строго синхронизировать значение свойства РежимСовместимости расширения с конфигурацией-приемником и учитывать возможности платформы по составу доступных метаданных для конкретной версии совместимости.