При работе с программными продуктами на платформе 1С:Предприятие 8.3 пользователи часто сталкиваются с механизмом автоматической доставки исправлений, известных как «патчи» или расширения с префиксом EF_. Основной вопрос, который возникает после успешного обновления конфигурации на новый релиз: «Куда исчезают эти исправления и нужно ли их удалять вручную, если они остались в списке?». В этой статье мы подробно разберем механику работы исправлений, проанализируем причины сбоев автоматического удаления и составим пошаговую инструкцию по приведению информационной базы в порядок.
Для начала разберем внутреннюю логику системы. Механизм управления исправлениями является частью Библиотеки стандартных подсистем (БСП). Когда разработчики 1С выпускают патч, в его метаданных жестко прописывается диапазон версий конфигурации, для которых он предназначен. Например, исправление может быть применимо только для версий с 3.0.138.25 по 3.0.139.99.
Рассмотрим процесс обновления: когда мы загружаем новый релиз (например, 3.0.140.20) через Конфигуратор или через пользовательский режим, система выполняет реструктуризацию данных. Однако само удаление расширений происходит не в момент обновления файлов в Конфигураторе, а при первом запуске программы в режиме «1С:Предприятие» под правами администратора. В этот момент запускаются процедуры обновления информационной базы.
Проанализируем алгоритм, который выполняет БСП:
EF_.Несмотря на стройную логику, на практике часто возникают ситуации, когда после обновления мы заходим в список расширений и видим старые патчи (например, небезызвестный EF_60008207). Выясним основные причины, почему это происходит:
1. Активные сеансы и блокировки. Это самая частая причина. Если во время выполнения процедур обновления базы в системе остались активные сеансы других пользователей или «зависшие» фоновые задания, расширение может быть заблокировано. Процесс удаления не может получить эксклюзивный доступ к таблицам метаданных и просто пропускает этот шаг, не выдавая критической ошибки пользователю.
2. Открытый Конфигуратор. Если во время запуска режима «Предприятие» для выполнения обновления у вас параллельно открыт Конфигуратор, это может препятствовать изменению состава расширений. Платформа блокирует структуру конфигурации, и скрипты БСП не могут корректно завершить удаление расширений .cfe.
3. Ошибки в описании патча. Иногда в самом патче, выпущенном фирмой 1С, может быть не указана верхняя граница применимости. В этом случае система считает, что патч актуален для всех последующих версий, пока не придет команда на его отзыв через сервер интернет-поддержки.
4. Конфликты метаданных. Если в новой версии конфигурации разработчики уже внесли исправления, которые дублируют код патча, но назвали объекты иначе, может возникнуть коллизия. Система при попытке удаления патча может натолкнуться на логическую ошибку «Объект метаданных не найден» или «На объект есть ссылки», что прерывает операцию удаления.
Если после обновления вы обнаружили, что старые исправления остались в списке, рекомендуем выполнить следующие шаги. Рассмотрим два основных способа очистки.
Этот метод наиболее безопасен, так как он задействует штатные механизмы программы и проверяет связи объектов. Разберем его по шагам:
Важный совет: После удаления всех патчей вы можете нажать кнопку «Поиск исправлений», если у вас настроена интернет-поддержка. Система сама скачает только те патчи, которые действительно нужны для вашего текущего релиза.
Этот способ подходит для опытных пользователей и системных администраторов, когда через интерфейс «Предприятия» патч не удаляется из-за внутренних ошибок. Также можно использовать универсальное удаление расширений в виде внешней обработки.
EF_.Del).EF_.Рассмотрим ситуацию, описанную в обсуждении, на примере патча EF_60008207. При попытке его повторной установки на версию 3.0.140.20 система выдает ошибку:
При установке исправления EF_60008207.cfe произошла ошибка: Исправление не применимо для данной версии конфигурации.
Это прямое доказательство того, что код исправления уже включен в основную конфигурацию. Если такой патч «висит» в списке расширений, он не только бесполезен, но и может замедлять работу системы, так как платформе приходится каждый раз проверять переопределенные методы в этом расширении. Проанализируем риски: если оставить старый патч, код которого обращается к удаленным в новом релизе процедурам, вы получите критическую ошибку Runtime Error при выполнении соответствующих операций.
Чтобы избежать проблем с «хвостами» от старых версий, мы рекомендуем придерживаться следующего регламента при каждом обновлении типовых конфигураций (БП, ЗУП, УТ):
.cfu) зайдите в режим «Предприятие» и удалите ВСЕ установленные патчи через «Обслуживание».Такой подход гарантирует, что структура метаданных вашей базы всегда будет чистой, а риск конфликтов имен между патчами и основным кодом сведется к нулю. Помните, что автоматика 1С — это отличный инструмент, но контроль со стороны администратора остается необходимым условием стабильной работы системы.