При выполнении автоматического обновления типовых конфигураций 1С (таких как Бухгалтерия предприятия, Управление нашей фирмой или Зарплата и управление персоналом) многие технические специалисты сталкиваются с критической ошибкой. Программа аварийно завершает процесс обновления, ссылаясь на конфликты в метаданных или невозможность применить изменения. Опытным путем и через анализ практики администрирования мы выясним, что основной причиной таких сбоев являются установленные патчи (исправления) — специальные расширения с префиксом EF_.
В этой статье мы подробно разберем, почему штатный механизм удаления исправлений иногда дает сбой, как правильно подготовить базу к обновлению и какие инструменты использовать, если стандартный интерфейс программы недоступен.
Для начала проанализируем ситуацию: патч в системе 1С — это временное расширение конфигурации, которое выпускает фирма «1С» для оперативного исправления критических ошибок между релизами. По задумке разработчиков, механизм должен работать следующим образом:
Однако на практике этот алгоритм часто нарушается. Разберем причины: во-первых, патч может ссылаться на объекты (реквизиты, формы), которые в новом релизе были удалены или переименованы. В этом случае при попытке объединения конфигураций возникает ошибка метаданных еще до того, как сработает триггер удаления. Во-вторых, существуют «проблемные» патчи (например, известный специалистам EF_00_00267418), которые из-за внутренних особенностей регистрации блокируют штатный процесс обновления на определенных версиях платформы.
Рассмотрим самый надежный способ решения проблемы, который специалисты называют «золотым стандартом». Если автоматическое обновление «вываливается» с ошибкой, мы должны принудительно очистить список исправлений. Выполним следующие шаги:
Зайдем в информационную базу в режиме «1С:Предприятие» под пользователем с правами администратора. Перейдем в раздел Администрирование — Обслуживание — Обновление программы. Выберем пункт Установка исправлений (патчей). В открывшемся списке мы увидим все активные расширения с префиксом EF_. Проанализируем список и удалим их все перед запуском процедуры обновления.
Важный момент: после того как мы успешно обновим конфигурацию до нового релиза, программа сама предложит скачать и установить актуальные патчи, предназначенные уже для новой версии. Это абсолютно штатная и безопасная процедура.
Рассмотрим более сложную ситуацию, когда база является базовой. В таких версиях интерфейс управления расширениями часто заблокирован или ограничен, так как базовые лицензии не поддерживают пользовательские модификации. Однако официальные патчи от «1С» там устанавливаются и могут точно так же блокировать обновление.
Если мы столкнулись с тем, что программа требует удалить патчи, но не дает зайти в соответствующее меню, воспользуемся командной строкой. Это мощный инструмент системного администратора. Для удаления конкретного расширения в пакетном режиме мы можем использовать следующий синтаксис:
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F "D:\Bases\MyBase" /N "Admin" /P "Pass" /DeleteCfg -Extension "ИмяПатча"
Где ИмяПатча — это внутреннее имя расширения (например, EF_00_00123456). Если патчей много, и мы хотим полностью очистить конфигурацию от всех расширений перед накатыванием нового .cf файла, применим команду:
"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F "D:\Bases\MyBase" /DeleteCfg -AllExtensions
Внимание: Будьте осторожны с параметром -AllExtensions, так как он удалит не только патчи, но и ваши собственные доработки, если они оформлены в виде расширений. Для типовых баз, где используются только официальные исправления, это самый быстрый способ «реанимировать» процесс обновления.
Иногда даже после удаления патча ошибка сохраняется. Выясним причину: часто это связано с локальным кэшем платформы или серверным кэшем (в случае клиент-серверного варианта). Скомпилированные модули старых патчей могут оставаться в папке snccntx на сервере 1С.
Посмотрим, как правильно произвести очистку:
C:\Program Files\1cv8\srvinfo\reg_1541 (путь может отличаться в зависимости от настроек).snccntx.Проанализируем также состояние справочника расширений через «Тестирование и исправление». Установим галочку Проверка логической целостности и Очистка ссылок на несуществующие объекты. Это поможет системе окончательно «забыть» о патчах, которые были удалены некорректно.
В распределенных системах ситуация с патчами становится критической. Мы должны помнить правило: любые изменения метаданных (включая установку и удаление патчей) должны происходить в главном узле. Если патч «завис» в периферийном узле, он может заблокировать прием сообщения обмена, и мы получим ошибку «Конфигурация узла не соответствует ожидаемой».
Рассмотрим алгоритм действий для РИБ:
EF_./DeleteCfg -AllExtensions непосредственно в периферийной базе.Подводя итог, можно сказать, что ошибки при автоматическом обновлении из-за патчей — это, к сожалению, штатная, хотя и неприятная ситуация. Программные механизмы 1С постоянно совершенствуются, но до тех пор, пока конфликты случаются, мы рекомендуем придерживаться простого правила: перед любым обновлением конфигурации (особенно если оно перепрыгивает через несколько релизов) удаляйте все установленные патчи вручную. Это сэкономит время и избавит от необходимости восстанавливать базу из резервной копии после неудачного завершения фонового процесса.