При работе с современными версиями платформы «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+ означает работу в режиме актуальной версии), срабатывает исключение.
Это сделано по нескольким причинам:
Если вы твердо решили использовать возможности новых расширений и готовы взять на себя риски тестирования, нам необходимо разрешить системе запуск. Разберем, как это сделать. Выясним причину ошибки, обратившись к коду общего модуля.
Найдите в конфигураторе модуль СтандартныеПодсистемыСервер и процедуру, отвечающую за проверку режима совместимости (обычно это часть процедуры ПроверитьПараметрыКонфигурации или специализированная функция). Вам встретится код, подобный этому:
// Пример логики проверки в БСП
Если ОбщегоНазначения.ПоддержкаРежимаСовместимости(8.3.11) Тогда
ТекстОшибки = НСтр("ru = 'Режим совместимости конфигурации с 1С:Предприятием версии 8.3.11 не поддерживается.'");
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Для решения проблемы у нас есть два пути:
МинимальноНеобходимаяВерсияПлатформы или аналогичная в модуле ОбщегоНазначенияПереопределяемый.После того как программная блокировка снята, необходимо синхронизировать настройки. Рассмотрим по шагам:
Режим совместимости и установите его в значение «Не использовать» (если ваша платформа 8.3.11 и выше) или выберите конкретную версию (например, Версия 8.3.11).Режим совместимости. Оно должно либо совпадать с режимом основной конфигурации, либо быть установлено в значение «Не использовать».Проанализируем важный нюанс: если вы оставите в основной конфигурации режим 8.3.10, а в расширении поставите «Не использовать», вы все равно не сможете добавлять новые объекты. Ограничение основной конфигурации является приоритетным для структуры базы данных SQL.
Разберем ситуацию, которая часто пугает разработчиков: «прыгающий» режим совместимости. Как отмечают специалисты, при выгрузке конфигурации в файлы видно, что режим «Не использовать» на самом деле жестко прописывает версию платформы, в которой было сделано изменение. Если вы работаете в 8.3.11 и ставите «Не использовать», в файлах XML зафиксируется 8.3.11.
Важное предупреждение: Если вы добавили новые реквизиты в справочники через расширение, а затем решили вернуть режим совместимости основной конфигурации обратно на 8.3.10 (например, для выполнения обновления), данные в этих реквизитах могут быть потеряны. Платформа 8.3.10 не умеет работать с таблицами расширений, содержащими данные, и при реструктуризации «вниз» может их очистить.
Рассмотрим подробнее, как минимизировать риски при отключении совместимости в типовых ЗУП или БП:
Выясним, стоит ли вообще использовать расширения для изменения структуры данных. Несмотря на удобство, это делает базу зависимой от конкретной версии платформы. Если ваша задача — внедрить сложную бизнес-логику в типовую ЗУП, иногда надежнее «снять замок» с конфигурации и добавить объекты в основную ветку, сохранив штатный режим совместимости. Это обеспечит максимальную стабильность работы программного кода БСП, который не рассчитан на работу в режиме «Не использовать» на старых релизах.
Подведем итог: отключение режима совместимости — это мощный инструмент, открывающий доступ к современным технологиям 1С, но он требует от программиста глубокого понимания работы БСП и механизмов реструктуризации базы данных. Всегда делайте резервную копию перед изменением этого свойства!