Патч 1С не встаёт или ломает обновление: разбор механизма и порядок действий
Содержание
Ошибка исправления патчей в 1С почти всегда значит одно: патч-расширение не совпадает с текущей версией конфигурации и не может к ней примениться. Лечится это так: найти патч в Конфигурация → Расширения конфигурации, сохранить его в файл, отключить или удалить, затем обновить конфигурацию
и поставить свежие исправления заново.
Чаще всего это всплывает сразу после обновления релиза или ручной установки патча из файла: база перестаёт открываться, а обновление обрывается на середине. Механизм общий для типовых конфигураций на Библиотеке стандартных подсистем: Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP.
Как устроены исправления (патчи) в 1С
Патч — это маленькое расширение конфигурации , которое фирма-разработчик выпускает между релизами. Оно точечно исправляет одну ошибку: подменяет процедуру в модуле, правит проверку, меняет обработчик. Следующий релиз уже содержит это исправление в основной конфигурации, и патч становится не нужен.
Чем патч отличается от обычного расширения:
- 🧩 Назначение «Исправление». У каждого расширения есть свойство «Назначение»: «Исправление», «Адаптация» или «Дополнение». Платформа применяет расширения в этом порядке, поэтому патчи накладываются раньше ваших доработок.
- 🏷️ Имя с префиксом
EF_. По нему патч легко отличить в списке расширений от собственных доработок. - 🎯 Привязка к релизу. Каждый патч рассчитан на конкретные версии конфигурации. На другой версии он может не примениться.
- 🔁 Автоматическая установка. При подключённой интернет-поддержке программа сама скачивает и ставит актуальные исправления, а при обновлении релиза убирает ненужные.
Где это настраивается в БП 3.0, ЗУП 3.1 и УТ 11:
| Действие | Где искать |
|---|---|
| Подключить интернет-поддержку | Администрирование → Интернет-поддержка и сервисы |
| Включить автоустановку патчей | Администрирование → Интернет-поддержка и сервисы → Обновление версии программы, блок про исправления |
| Посмотреть установленные патчи | Там же, ссылка со списком установленных исправлений |
| Увидеть все расширения базы | Конфигуратор: Конфигурация → Расширения конфигурации |
Как работает применение патча. При запуске сеанса платформа берёт основную конфигурацию и накладывает на неё расширения. Расширение «заимствует» объекты основной конфигурации: модули, формы, реквизиты. Если заимствованного объекта больше нет или он изменился несовместимо, расширение применить нельзя. Отсюда и вся природа конфликта.
Почему возникает ошибка при установке и применении патчей
Конфликт возникает, когда то, что патч ожидает увидеть в конфигурации, и то, что в ней реально есть, расходятся. Основные сценарии:
- 📦 Обновили конфигурацию, а старый патч остался. Штатно программа удаляет неприменимые исправления при обновлении. Но если релиз ставили вручную через Конфигуратор, с пропуском версий или из файла поставки, старый патч может остаться в базе.
- 🔢 Патч скачан для другого релиза. Его установили из файла, а он рассчитан на соседнюю версию. Программа обычно предупреждает, что исправление не предназначено для текущей версии.
- 🛠️ Конфигурация снята с поддержки или доработана. Программист изменил модуль, который патч перехватывает. Заимствованный метод пропал или переименован.
- 🧱 Пересечение с вашим расширением. Своё расширение и патч перехватывают один и тот же метод. Каждое по отдельности работает, вместе — дают ошибку при выполнении или неожиданный результат.
- 🌐 Нет связи с сервисом. Не подключена интернет-поддержка, неверный логин портала, блокирует прокси или межсетевой экран. Тогда ошибка возникает на этапе загрузки, а не применения.
- 🔒 Недостаточно прав. Устанавливать исправления может пользователь с полными правами. У обычного бухгалтера команда либо не видна, либо завершится отказом.
Как выглядит ошибка на экране. Формулировки меняются от версии платформы, но смысл один из трёх:
Расширение `EF_...` не может быть примененос уточнением, какого объекта или метода не хватает;- исправление не применимо к текущей версии программы;
- ошибка при обновлении конфигурации базы данных, где в тексте фигурирует имя расширения.
Шаг 1. Выясните, какой патч мешает, и сделайте резервную копию
Не удаляйте всё подряд. Сначала определите виновника.
- Прочитайте текст ошибки целиком. Обычно в нём есть имя расширения вида
EF_с номером и название объекта, который не удалось заимствовать. - Узнайте точную версию конфигурации:
Справка → О программеили значок «i» в правом верхнем углу окна. - Откройте Конфигуратор и пункт
Конфигурация → Расширения конфигурации. В списке видны все расширения базы: патчи с префиксомEF_, ваши доработки и расширения от партнёров. - Сравните: какие патчи установлены и под какую версию они выпускались. Описание исправления обычно указано в свойствах расширения.
Дальше — резервная копия. Удаление патча безопасно для данных, но обновление, ради которого вы это делаете, — нет.
Перед любыми действиями с расширениями и обновлением сделайте копию базы: Администрирование → Выгрузить информационную базу в Конфигураторе (файл .dt) или резервное копирование средствами СУБД для клиент-серверной базы.
Сохраните сам патч. В окне расширений выделите его и выберите сохранение в файл: получится .cfe. Если окажется, что удалили не тот, вы его вернёте за минуту.
Шаг 2. Исправление ошибки патча из режима 1С:Предприятие
Если программа запускается, начните отсюда. Этот путь самый мягкий: программа сама знает, какие исправления подходят к вашей версии.
- Зайдите под пользователем с полными правами.
- Откройте
Администрирование → Интернет-поддержка и сервисы. Проверьте, что интернет-поддержка подключена и под логином не висит ошибка авторизации. - Перейдите в
Обновление версии программы. Включите автоматическую загрузку и установку исправлений, если она выключена. - Откройте список установленных исправлений. Удалите там патч, на который указывает ошибка.
- Запустите проверку и установку исправлений заново. Программа подберёт патчи именно под ваш релиз.
- Перезапустите программу. Новые расширения начинают действовать в новом сеансе.
Если в сообщении есть только имя расширения, а в списке исправлений его не видно, это может быть не патч фирмы-разработчика, а расширение партнёра или ваше собственное. Тогда переходите к Конфигуратору.
Если у вас клиент-серверная база с десятками пользователей, изменения в расширениях подхватятся только в новых сеансах. Попросите коллег перезайти в удобный момент, а не обрывайте их сеансы в разгар закрытия месяца.
Шаг 3. Удаление и отключение патчей в Конфигураторе и через служебные ключи
Раздел для случаев, когда Предприятие не открывается или обновление релиза упирается в расширение. Реестр Windows здесь ни при чём: патчи хранятся в самой информационной базе, и правка реестра ничего не даст. Рабочие инструменты — Конфигуратор, пакетный режим и очистка кэша.
Отключить, не удаляя
- Откройте базу в Конфигураторе.
Конфигурация → Расширения конфигурации.- Выделите патч и снимите у него флаг «Активно» (в свойствах расширения или в колонке списка).
- Запустите Предприятие и проверьте, ушла ли ошибка.
Отключённое расширение остаётся в базе, но не применяется. Это удобно для проверки гипотезы: если ошибка ушла, виновник найден.
Удалить патч
- В том же окне выделите расширение
EF_.... - Выберите удаление (кнопка с крестиком на панели окна) и подтвердите.
- Повторите обновление конфигурации или запустите Предприятие.
- Поставьте актуальные исправления заново, как в шаге 2.
Пакетный режим, если интерфейс недоступен
Когда базу нужно чинить скриптом, например на сервере без удобного доступа к рабочему столу, расширение можно удалить ключом /DeleteCfg:
"C:\Program Files\1cv8\8.3.24.1342\bin\1cv8.exe" DESIGNER ^
/F "D:\Bases\Buh" /N "Администратор" /P "пароль" ^
/DeleteCfg -Extension "EF_00_00000000" ^
/Out "D:\Logs\delete_patch.log"
Для серверной базы вместо /F указывают /S "сервер\имя_базы". Путь к платформе и номер версии подставьте свои. Результат смотрите в файле из /Out: туда пишутся и ошибки, и сообщение об успешном завершении. Остальные ключи пакетного режима, в том числе для загрузки .cfe, — в справке Конфигуратора по параметрам командной строки.
Очистка кэша
Иногда ошибка остаётся и после удаления патча: клиент держит старые метаданные. Запустите программу с ключом /ClearCache или удалите базу из списка и добавьте снова.
Очистка кэша сама по себе сеансов не обрывает, а вот удаление расширения в клиент-серверной базе лучше делать, когда в базе никто не работает: у открытых сеансов могут сыпаться ошибки, пока они не перезайдут.
Какой способ выбрать
| Способ | Когда подходит | Риски |
|---|---|---|
| Переустановка исправлений в Предприятии | Программа запускается, интернет-поддержка подключена | Минимальные |
| Отключение флага «Активно» | Нужно быстро проверить, патч ли виноват | Исправленная патчем ошибка вернётся до новой установки |
| Удаление в Конфигураторе | Патч не подходит к релизу, мешает обновлению | Можно удалить не тот — поэтому сначала .cfe |
/DeleteCfg в пакетном режиме | Нет доступа к интерфейсу, автоматизация | Опечатка в имени расширения, нужны права администратора базы |
Как избежать конфликтов патчей при следующих обновлениях
Большая часть проблем — последствие ручного обновления «мимо» штатного механизма. Несколько привычек снимают их почти полностью.
- ✅ Обновляйте через встроенный помощник, когда это возможно. Он сам удаляет неприменимые исправления и ставит актуальные.
- ✅ При ручном обновлении через Конфигуратор перед стартом сохраните список расширений и удалите патчи
EF_. После обновления поставьте исправления заново: под новый релиз они будут другими или вовсе не понадобятся. - ✅ Не дорабатывайте типовые модули напрямую. Свои изменения выносите в расширение с назначением «Адаптация» или «Дополнение». Тогда конфигурация остаётся на поддержке, а патчи накладываются корректно.
- ✅ Проверяйте пересечения. Если ваше расширение перехватывает метод, который правит свежий патч, протестируйте связку на копии базы.
- ✅ Не держите базу на старом релизе месяцами. Чем больше разрыв, тем больше патчей и тем выше шанс, что один из них не ляжет.
- ✅ Тестовая копия. Для баз с доработками сначала обновляйте копию, проверяйте запуск и ключевые документы, потом — рабочую базу.
Когда без специалиста не обойтись
Сами справитесь, если база типовая и проблему решает удаление старого патча. Звать программиста 1С стоит в таких случаях:
- 🧑💻 Конфигурация доработана, и ошибка указывает на ваш изменённый модуль или на конфликт патча с собственным расширением. Нужно сравнить код и решить, что оставить.
- 🧑💻 Обновление ломается и после удаления всех
EF_. Значит, дело не в патчах: проблема в структуре базы, данных или самой поставке. - 🧑💻 Патч исправлял критичную для вас ошибку, а его новая версия не ставится. Иногда приходится временно переносить исправление в собственное расширение.
- 🧑💻 Серверная база с большой нагрузкой, где любое действие с расширениями требует окна работ, плана отката и согласования.
Чтобы специалист помог быстро, подготовьте: полный текст ошибки, версию платформы и конфигурации, список расширений из Конфигуратора и ответ на вопрос, что делали прямо перед сбоем.
Частые вопросы о патчах 1С
Пропадут ли данные, если удалить патч?
Можно ли совсем отказаться от патчей?
Нужен ли монопольный режим для установки исправлений?
Почему патчи удалились сами после обновления?
Как понять, что расширение — патч, а не доработка?
EF_ в имени и по назначению «Исправление» в свойствах расширения в Конфигураторе.