При работе с механизмом расширений в среде 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией, когда платформа блокирует создание нового расширения. Типичный сценарий: вы следуете инструкции, меняете Режим совместимости в свойствах корневого узла конфигурации, но при попытке добавить расширение система выдает критическую ошибку. Разберем детально, почему это происходит, как работает механизм синхронизации метаданных с базой данных и что необходимо сделать для успешного подключения расширения.
Для начала проанализируем внутреннее устройство платформы. В системе 1С существует четкое разделение на две конфигурации:
РежимСовместимости, вы вносите правку именно в это описание.Рассмотрим ситуацию: вы изменили режим совместимости, например, с 8.3.8 на 8.3.10. В этот момент «желаемое» состояние (основная конфигурация) уже обновилось, но «реальное» состояние (база данных) все еще работает по старым правилам. Платформа 1С:Предприятие устроена так, что для создания расширения ей требуется полная идентичность этих двух состояний. Если механизмы расширений в оперативной памяти ожидают функционал версии 8.3.10, а таблицы базы данных еще не прошли реструктуризацию под этот режим, возникает конфликт, который и приводит к сообщению: «Режим совместимости основной конфигурации не соответствует версии информационной базы».
Выясним, какие действия необходимо предпринять, чтобы синхронизировать состояния системы. Решение задачи сводится к выполнению регламентного обновления информационной базы.
Шаг 1. Применение изменений к базе данных.
После того как вы изменили свойство Режим совместимости в свойствах конфигурации, необходимо инициировать процесс реструктуризации. Для этого в Конфигураторе воспользуемся одним из следующих способов:
Шаг 2. Проверка легальности изменений.
Если изменение режима совместимости требует серьезной реструктуризации таблиц (например, переход на новые форматы хранения итогов или индексов), система выведет окно со списком изменений. Проанализируем этот список и нажмем кнопку «Принять». Только после того, как в нижней части окна Конфигуратора появится надпись «Обновление конфигурации базы данных успешно завершено», несоответствие будет устранено.
Шаг 3. Добавление расширения.
Теперь попробуем снова зайти в меню Конфигурация — Расширения конфигурации и нажать кнопку «Добавить». Теперь система должна позволить создать объект без лишних вопросов.
Разберем подробнее, почему во многих инструкциях фигурирует именно версия 8.3.10. Это важный технологический рубеж для механизма расширений. До этой версии расширения были крайне ограничены в своих возможностях — по сути, они позволяли лишь менять существующие формы или перехватывать выполнение процедур (через аннотации &Вместо, &Перед, &После).
Начиная с режима совместимости 8.3.10, в расширениях стало возможным:
Если в вашей основной базе установлен режим совместимости 8.3.9 или ниже, то даже если вы сможете добавить расширение, многие кнопки (например, «Добавить справочник» внутри расширения) будут неактивны. Поэтому переход на 8.3.10 — это стандартная процедура для внедрения современных доработок через расширения.
Проанализируем еще один важный нюанс: свойство Режим совместимости существует и у самого расширения. Здесь действует строгое правило иерархии:
Режим совместимости расширения не может быть «выше» (современнее), чем режим совместимости основной конфигурации.
Рассмотрим пример. Если основная база работает в режиме 8.3.12, то для расширения мы можем выбрать:
Не использовать (в этом случае расширение автоматически наследует режим 8.3.12 от базы).8.3.12 (например, 8.3.10).Однако если мы попытаемся установить в расширении режим 8.3.14 при основной базе 8.3.12, система выдаст ошибку при попытке применения такого расширения к информационной базе.
Иногда возникают ситуации, когда даже после обновления конфигурации базы данных ошибка сохраняется. Рассмотрим дополнительные методы исправления ситуации.
Метод 1. Очистка кэша Конфигуратора.
Платформа 1С активно кэширует структуру метаданных для ускорения работы. Иногда кэш «залипает» и продолжает отдавать старое значение режима совместимости. В этом случае выполним следующие шаги:
%LOCALAPPDATA%\1C\1Cv8 и %APPDATA%\1C\1Cv8.Метод 2. Тестирование и исправление.
Если смена режима совместимости затронула глубокие механизмы СУБД, полезно запустить процедуру тестирования. Перейдем в Администрирование — Тестирование и исправление. Выберем пункт Реструктуризация таблиц информационной базы и нажмем «Выполнить». Это принудительно пересоберет таблицы базы данных в строгом соответствии с текущими метаданными.
Выясним еще одну деталь, касающуюся файловых версий .1CD. При переходе на высокие режимы совместимости (8.3.12 и выше) платформа может начать использовать новые возможности файлового движка. В очень редких случаях может потребоваться использование утилиты cnvdbfl.exe (находится в папке bin установленной платформы), чтобы конвертировать сам файл базы данных в новый формат 8.3.8 или выше. Без этого некоторые функции расширений могут работать нестабильно, хотя ошибка несоответствия режима совместимости обычно решается именно через F7.
Подведем итог нашего анализа. Ошибка, описанная автором темы, является штатным поведением платформы, защищающим целостность данных. Платформа просто напоминает нам, что «сказать» системе о новом режиме в свойствах — это только половина дела. Вторая половина — это физическое изменение структуры данных нажатием клавиши F7. Всегда помните об этом правиле при работе с конфигурациями на платформе 1С:Предприятие 8.3.