При разработке расширений конфигурации можно столкнуться с критической ошибкой, которая полностью блокирует запуск системы в режиме Предприятия. Одна из таких ошибок звучит так: "Критичная: изменился внутренний идентификатор расширенного объекта основной конфигурации ОпределяемыйТип.ИмяТипа. Необходимо применить расширение повторно". Чаще всего она возникает после того, как мы заимствуем в расширение какой-либо определяемый тип и добавляем в него новый тип, особенно если этот новый тип создан в самом расширении.
Стандартные действия, такие как снятие и установка флага "Активно" у расширения или повторное добавление объекта в расширение, как правило, не помогают. В крупных системах полезно настроить отправку на почту информации о проблемах применения расширений. Давайте подробно разберем, почему эта ошибка возникает и какие шаги нужно предпринять для ее надежного устранения.
Чтобы эффективно решить проблему, полезно понимать ее корни. Ошибка связана с внутренними механизмами платформы 1С по управлению метаданными. Проанализируем ключевые моменты:
В итоге, система оказывается в состоянии, когда она не может корректно сопоставить структуру основной конфигурации и примененного расширения, что и приводит к критической ошибке при запуске.
Поскольку простые методы не работают, необходимо применить более глубокий подход к "лечению" метаданных расширения. Рассмотрим пошаговый алгоритм, который доказал свою эффективность.
Важно! Перед выполнением следующих действий обязательно сделайте резервную копию информационной базы.
Первый шаг — это использование встроенного механизма платформы для проверки целостности данных. Нам нужна специальная проверка, касающаяся именно расширений.
Перейдите в режим Конфигуратора, выберите в меню "Администрирование" -> "Тестирование и исправление". В открывшемся окне установите флаг только напротив пункта "Проверка логической целостности расширений конфигурации". Остальные проверки можно отключить. Убедитесь, что выбран режим "Тестирование и исправление" и нажмите "Выполнить".
В окне служебных сообщений вы должны увидеть сообщение вида "Вспомогательные данные о расширениях конфигурации скорректированы". Это означает, что платформа обнаружила и исправила несоответствия в своих служебных таблицах. Для простых расширений этого шага может быть достаточно.
В случае с большими, сложными расширениями после выполнения первого шага может возникнуть другая проблема: при попытке запустить базу в режиме Предприятия платформа будет аварийно завершать работу без внятного сообщения об ошибке ("падение" процесса). Не пугайтесь, это промежуточный этап, который указывает на более глубокие проблемы с метаданными, которые ТиИ не смогло полностью исправить.
Это ключевой шаг, который позволяет "очистить" расширение от накопленных ошибок. В дереве конфигурации кликните правой кнопкой мыши по вашему расширению и выберите "Конфигурация" -> "Выгрузить конфигурацию в файлы...". Укажите пустой каталог, куда будут выгружены все XML-файлы, описывающие ваше расширение.
Теперь необходимо полностью удалить проблемное расширение из информационной базы. В окне "Расширения конфигурации" выделите ваше расширение и удалите его, используя штатные средства или универсальное удаление расширений.
Внимание! Если ваше расширение добавляло объекты, хранящие данные (справочники, регистры), то при его удалении все данные из таблиц этих объектов будут безвозвратно утеряны. Этот факт подчеркивает рекомендацию не создавать объекты с данными в расширениях.
После удаления создайте новое пустое расширение или просто используйте опцию загрузки.
В окне расширений выберите "Конфигурация" -> "Загрузить конфигурацию из файлов...". Укажите каталог, в который вы выгружали расширение на шаге 3. Платформа полностью пересоберет расширение из исходных XML-файлов, корректно связывая его с основной конфигурацией.
После выполнения этих шагов обновите конфигурацию базы данных (F7). Система должна запуститься в режиме Предприятия без ошибок. Этот метод, по сути, является полной "пересборкой" расширения и его связей с основной конфигурацией.
Чтобы минимизировать риски возникновения подобных проблем, стоит придерживаться нескольких правил при разработке расширений:
ВладелецЗначенийКлючейДоступаНаборЗаписей, является зоной повышенного риска. Если вам необходимо включить в такой тип новый объект, созданный в расширении, будьте готовы к тщательному тестированию и возможным проблемам при обновлении.Придерживаясь этих рекомендаций, вы сможете сделать процесс разработки с использованием расширений более стабильным и предсказуемым.