При разработке расширений для крупных типовых решений, таких как «1С:Комплексная автоматизация» или «1С:ERP Управление предприятием», программисты часто сталкиваются с необходимостью добавить новые реквизиты, справочники или документы. Распространенным заблуждением является мнение, что для использования всех возможностей расширений необходимо полностью отключить режим совместимости основной конфигурации. Однако такая попытка часто приводит к критической ошибке при запуске системы.
Рассмотрим типовую ситуацию: при попытке запуска базы после установки режима совместимости в значение «Не использовать» система выдает исключение:
{ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(2486)}: Режим совместимости конфигурации с 1С:Предприятием версии 8.3.18 не поддерживается. Для запуска установите в конфигурации режим совместимости "Не использовать" при разработке на версии 8.3.10 (или "Версия 8.3.10" при разработке на более старших версиях).
В этой статье мы подробно разберем, почему возникает эта ошибка, проанализируем механизмы работы Библиотеки стандартных подсистем (БСП) и выясним, как правильно добавлять реквизиты через расширения, не нарушая целостность типового решения.
Первым делом проанализируем ситуацию с программной точки зрения. Ошибка генерируется не ядром платформы «1С:Предприятие», а программным кодом БСП. В модуле СтандартныеПодсистемыСервер заложена жесткая проверка допустимых режимов совместимости, с которыми может работать текущая версия конфигурации.
Зачем это нужно разработчикам фирмы «1С»? Дело в том, что изменение режима совместимости на «Не использовать» радикально меняет поведение платформы в следующих аспектах:
Если мы просто закомментируем проверку в коде БСП, как предлагают некоторые пользователи, мы столкнемся с «эффектом домино». Код типовых механизмов (например, версионирование объектов, дополнительные реквизиты или обмен данными) ожидает старого поведения платформы. В новом режиме эти функции начнут выдавать непредсказуемые ошибки или, что еще опаснее, некорректно записывать данные в базу.
Разберем главный миф: «Чтобы добавить реквизит в расширение, нужно отключить совместимость основной конфигурации». Это утверждение было актуально для очень старых версий платформы. Начиная с версии 8.3.11, платформа позволяет добавлять собственные объекты данных (реквизиты, справочники, документы) в расширения даже в том случае, если основная конфигурация находится в режиме совместимости 8.3.10.
Главное условие здесь — не версия режима совместимости, а фактическая версия платформы (клиентского приложения и сервера), на которой запущена информационная база. Если вы используете платформу версии 8.3.12, 8.3.18 или выше, механизмы расширения данных будут вам доступны при соблюдении правил синхронизации настроек.
Существует золотое правило разработки расширений: режим совместимости расширения не может быть выше режима совместимости основной конфигурации.
Проанализируем возможные варианты настроек:
8.3.10, а у расширения — Не использовать, база не запустится, так как расширение пытается использовать методы, не разрешенные в основной конфигурации.8.3.10 и у расширения 8.3.10, система будет работать стабильно. При этом, работая на современной платформе (например, 8.3.18), вы сможете добавлять новые реквизиты в расширение.Для корректного добавления функционала без вызова системных ошибок выполним следующие шаги:
Шаг 1. Восстановление параметров основной конфигурации.
Верните режим совместимости основной конфигурации в исходное состояние (в нашем примере это Версия 8.3.10). Также убедитесь, что совместимость интерфейса установлена в значение, предусмотренное разработчиком (обычно Такси. Разрешить варианты).
Шаг 2. Настройка свойств расширения.
В свойствах вашего расширения установите режим совместимости точно такой же, как в основной конфигурации. Если в конфигурации стоит 8.3.10, в расширении тоже должно быть 8.3.10.
Шаг 3. Добавление данных.
Теперь вы можете добавлять необходимые реквизиты. Обратите внимание на важные настройки расширения для корректной работы новых данных:
Безопасный режим, если оно должно влиять на структуру данных.Рассмотрим, почему для «Комплексной автоматизации» переход на режим «Не использовать» является критичным. Одним из самых сложных узлов в этих конфигурациях является механизм закрытия месяца. Он активно использует временные таблицы и сложные многопоточные вычисления.
Смена режима совместимости может привести к тому, что запросы в механизме распределения затрат начнут работать иначе. В худшем случае это приведет к неверным расчетам себестоимости, которые не будут сопровождаться явными ошибками, но исказят финансовый результат предприятия. Выяснить причину таких расхождений в будущем будет крайне сложно.
Проанализируем фрагмент кода, который вызывает исключение. В БСП это выглядит примерно так:
Процедура ПроверитьРежимСовместимости() Экспорт
ТекущийРежим = Метаданные.РежимСовместимости;
Если ТекущийРежим <> Объекты.РежимСовместимости.Версия8_3_10 Тогда
ВызватьИсключение НСтр("ru = 'Данный режим совместимости не поддерживается конфигурацией!'");
КонецЕсли;
КонецПроцедуры
Важно: Никогда не пытайтесь «обмануть» систему, комментируя данный код. Вместо этого всегда следуйте принципу соответствия версий расширения и основной конфигурации. Это гарантирует стабильную работу всех типовых механизмов и позволит вам использовать современные инструменты платформы 1С.