Как отключить режим совместимости для использования всех возможностей расширений и что делать с ошибками БСП

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

При работе с современными версиями платформы «1С:Предприятие» (начиная с 8.3.11 и выше) разработчики часто сталкиваются с ситуацией, когда типовая конфигурация (например, ЗУП 3.1 или БП 3.0) имеет установленный режим совместимости со старыми версиями платформы (например, 8.3.10). Это накладывает существенные ограничения на использование механизмов расширений, в частности — на добавление собственных справочников, документов и реквизитов. В данной статье мы разберем, как преодолеть эти ограничения, почему возникают программные ошибки при запуске и как правильно адаптировать систему.

Суть проблемы: конфликт платформы и конфигурации

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

Проанализируем ситуацию: когда мы пытаемся установить в свойствах конфигурации значение «Не использовать», платформа переходит в режим работы текущего релиза. Казалось бы, проблема решена, но здесь вступает в дело Библиотека стандартных подсистем (БСП), которая встроена почти во все типовые решения. БСП содержит механизмы самодиагностики, которые блокируют запуск системы, если режим совместимости отличается от протестированного разработчиками 1С.

Почему БСП блокирует запуск при отключении совместимости?

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

Это сделано по нескольким причинам:

  1. Изменение планов запросов: В новых режимах совместимости запросы к СУБД могут работать иначе, что в редких случаях приводит к ошибкам или замедлению работы критических узлов.
  2. Работа с интерфейсом: Новые версии платформы могут менять логику отрисовки форм, отступы и поведение групп, что «ломает» тщательно выверенный интерфейс типовых форм.
  3. Сериализация данных: Изменяются механизмы преобразования объектов в XML/JSON, что может повлиять на обмен данными.

Шаг 1: Обход блокировки в коде БСП

Если вы твердо решили использовать возможности новых расширений и готовы взять на себя риски тестирования, нам необходимо разрешить системе запуск. Разберем, как это сделать. Выясним причину ошибки, обратившись к коду общего модуля.

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


// Пример логики проверки в БСП
Если ОбщегоНазначения.ПоддержкаРежимаСовместимости(8.3.11) Тогда
    ТекстОшибки = НСтр("ru = 'Режим совместимости конфигурации с 1С:Предприятием версии 8.3.11 не поддерживается.'");
    ВызватьИсключение ТекстОшибки;
КонецЕсли;

Для решения проблемы у нас есть два пути:

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

Шаг 2: Настройка режима совместимости конфигурации и расширения

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

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

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

Шаг 3: Работа с данными и реструктуризация

Разберем ситуацию, которая часто пугает разработчиков: «прыгающий» режим совместимости. Как отмечают специалисты, при выгрузке конфигурации в файлы видно, что режим «Не использовать» на самом деле жестко прописывает версию платформы, в которой было сделано изменение. Если вы работаете в 8.3.11 и ставите «Не использовать», в файлах XML зафиксируется 8.3.11.

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

Рекомендации по безопасному использованию

Рассмотрим подробнее, как минимизировать риски при отключении совместимости в типовых ЗУП или БП:

  1. Комбинированный подход: Старайтесь не добавлять новые объекты метаданных без крайней необходимости. Если задачу можно решить созданием дополнительных сведений (стандартный механизм БСП), лучше использовать его.
  2. Тестирование запросов: После изменения режима совместимости обязательно проверьте работу тяжелых отчетов. Воспользуйтесь консолью запросов и посмотрите на время выполнения. Если заметны просадки — возможно, придется переписать некоторые запросы, используя временные таблицы более явно.
  3. Контроль версии БСП: Перед каждым обновлением конфигурации проверяйте, не изменились ли требования БСП в новом релизе. 1С постепенно повышает планку совместимости в своих продуктах (например, современные релизы ЗУП 3.1.27+ уже сами требуют платформу не ниже 8.3.21/8.3.22 и имеют соответствующий режим совместимости).

Выясним, стоит ли вообще использовать расширения для изменения структуры данных. Несмотря на удобство, это делает базу зависимой от конкретной версии платформы. Если ваша задача — внедрить сложную бизнес-логику в типовую ЗУП, иногда надежнее «снять замок» с конфигурации и добавить объекты в основную ветку, сохранив штатный режим совместимости. Это обеспечит максимальную стабильность работы программного кода БСП, который не рассчитан на работу в режиме «Не использовать» на старых релизах.

Подведем итог: отключение режима совместимости — это мощный инструмент, открывающий доступ к современным технологиям 1С, но он требует от программиста глубокого понимания работы БСП и механизмов реструктуризации базы данных. Всегда делайте резервную копию перед изменением этого свойства!

← На главную