Что делать, если не устанавливается патч при обновлении 1С и возникает ошибка «Расширение с таким именем уже существует»?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

Каждый системный администратор и программист 1С регулярно сталкивается с процессом обновления типовых конфигураций. Начиная с версии платформы 8.3, фирма «1С» внедрила крайне удобный механизм оперативного исправления ошибок — патчи (исправления). Они представляют собой мини-расширения конфигурации, предназначенные для быстрого устранения критических багов без ожидания выхода полноценного релиза программы. Однако на практике автоматический механизм установки и удаления этих расширений нередко дает сбои. Особенно часто это происходит при переходе на новые минорные или мажорные версии конфигураций, например, при обновлении «1С:Зарплата и кадры государственного учреждения» или «1С:Зарплата и управление персоналом» на релиз 3.1.14.98.

В этой статье мы подробно рассмотрим ситуацию, когда при установке обновлений успешно применяется большинство исправлений, но одно из них (в нашем примере — патч с идентификатором EF_00_00304406) намертво блокирует процесс обновления, выдавая системную ошибку: «При установке исправления произошла ошибка: Расширение с таким именем уже существует!». Мы детально проанализируем причины этой неполадки и изучим комплексные методы ее решения — от простых пользовательских манипуляций до низкоуровневой очистки кэша и принудительного удаления расширений через командную строку.

Выясняем причины сбоя: почему возникает конфликт имен расширений?

Прежде чем переходить к практическим действиям, проанализируем ситуацию изнутри. Технически любой патч 1С — это полноценное расширение конфигурации, имя которого всегда начинается со служебного префикса EF_. За обработку патчей в кодовой базе отвечает специализированная библиотека — Библиотека стандартных подсистем (БСП). В ее логику заложен следующий алгоритм:

  1. При обновлении конфигурации до нового релиза БСП сопоставляет список установленных ранее локальных исправлений с изменениями в новой конфигурации.
  2. Если разработчики 1С уже интегрировали код исправления в код нового релиза конфигурации, старый патч признается неактуальным и должен быть автоматически удален из базы данных.
  3. Система обращается к таблицам метаданных и удаляет запись о расширении.

Но почему же тогда возникает ошибка дублирования имен? На это есть три основные причины:

Способ 1: Стандартное удаление через пользовательский интерфейс 1С:Предприятие

Если нам повезло и сбой носит поверхностный характер, мы можем попробовать избавиться от проблемного исправления стандартными средствами администрирования в режиме «1С:Предприятие». Разберем по шагам этот процесс:

  1. Запустим информационную базу в режиме «1С:Предприятие» под учетной записью с правами Администратора.
  2. Перейдем в раздел Администрирование, затем выберем пункт меню Обслуживание.
  3. В открывшемся окне найдем гиперссылку Установленные исправления (патчи) и кликнем по ней. Перед нами откроется полный список активных расширений БСП.
  4. Найдем в списке патч с проблемным идентификатором (в нашей ситуации это EF_00_00304406).
  5. Выделим строку с этим патчем и нажмем кнопку Удалить исправление на панели инструментов.
  6. После завершения процедуры удаления обязательно выполним перезапуск программы в монопольном режиме, чтобы изменения окончательно применились.

Однако этот простой метод часто выдает ошибку, либо удаленное исправление бесследно исчезает из списка, но повторная попытка обновить конфигурацию все равно прерывается сообщением о дублировании имени. В таком случае перейдем к более глубоким методам решения проблемы.

Способ 2: Принудительное удаление через Конфигуратор (для версий ПРОФ и КОРП)

Если база данных работает на версии ПРОФ или КОРП, у нас есть прямой доступ к списку расширений через среду разработки 1С. Это самый надежный способ очистить «зависшие» метаданные. Проанализируем этот метод детально:

  1. Запустим информационную базу в режиме Конфигуратор в монопольном режиме (убедившись, что все пользователи и внешние сеансы завершили свою работу).
  2. В главном меню перейдем по пути: Конфигурация -> Расширения конфигурации.
  3. В открывшемся окне мы увидим детальный список всех подключенных расширений, включая служебные патчи БСП (они выделяются характерными именами с префиксом EF_).
  4. Внимательно просмотрим список и найдем строку, содержащую EF_00_00304406 (или имя другого зависшего патча).
  5. Нажмем правой кнопкой мыши по этой строке и выберем команду Удалить (или воспользуемся клавишей Delete на клавиатуре).
  6. После удаления строки крайне важно зафиксировать изменения в базе данных. Для этого нажмем клавишу F7 на клавиатуре или щелкнем по кнопке Обновить конфигурацию базы данных (синий бочонок на панели инструментов).
  7. Если платформа предложит принять изменения и покажет окно со списком реструктуризуемых таблиц, соглашаемся и нажимаем Принять.

После успешного обновления конфигурации базы данных в Конфигураторе можем закрыть его и запустить сеанс «1С:Предприятие». Повторный запуск обновления конфигурации пройдет гладко.

Способ 3: Очистка через параметры запуска (для Базовых версий 1С)

Если вы используете Базовую версию программы (например, «1С:Зарплата и управление персоналом. Базовая версия»), то при попытке открыть меню работы с расширениями в Конфигураторе вы столкнетесь с тем, что данный пункт меню заблокирован платформой. Фирма «1С» программно ограничивает работу с расширениями в базовых лицензиях. Что же делать в такой ситуации?

Рассмотрим обходной путь решения проблемы с использованием специальных ключей запуска платформы 1С:Предприятие. Нам понадобится запустить Конфигуратор с флагами принудительной очистки расширений конфигурации через командную строку.

Разберем по шагам данный алгоритм:

  1. Откроем стандартное окно запуска «1С:Предприятие», выделим в списке нашу проблемную информационную базу и нажмем кнопку Изменить на панели справа.
  2. В открывшемся мастере редактирования настроек подключения нажимаем кнопку Далее до тех пор, пока не дойдем до последнего экрана (где указываются параметры запуска и версия платформы).
  3. Найдем текстовое поле Дополнительные параметры запуска.
  4. Для удаления одного конкретного зависшего патча введем следующую строку параметров: /DeleteCfg -Extension "EF_00_00304406"
  5. Если мы хотим провести полную зачистку всех установленных в базе патчей (что абсолютно безопасно для типовой конфигурации, так как актуальные патчи система без проблем скачает заново), введем универсальную команду: /DeleteCfg -AllExtensions
  6. Нажмем кнопку Готово для сохранения внесенных изменений.
  7. Теперь запустим эту базу именно в режиме Конфигуратор. При старте платформа не откроет привычный интерфейс сразу, а сначала в фоновом режиме выполнит команду очистки указанных расширений.
  8. После того как Конфигуратор успешно запустился, закроем его.
  9. КРИТИЧЕСКИ ВАЖНО: Снова нажмите кнопку Изменить для вашей базы и полностью очистите поле Дополнительные параметры запуска, иначе команда очистки будет выполняться при каждом старте базы, мешая последующей установке новых патчей.

После удаления параметров запуска можно спокойно открывать базу в режиме «1С:Предприятие» и запускать процесс обновления — конфликт имен будет устранен.

Способ 4: Очистка серверного кэша при работе в клиент-серверном варианте (SQL)

Часто в крупных организациях ЗУП или ЗГУ работают в клиент-серверном режиме под управлением СУБД (MS SQL Server, PostgreSQL и др.). В этой архитектуре рабочие процессы сервера 1С (rphost) активно кэшируют структуру метаданных расширений. Нередки ситуации, когда администратор уже удалил патч из списка расширений в Конфигураторе, но серверный кэш продолжает хранить информацию о нем, вызывая пресловутую ошибку дублирования имен.

Для гарантированного решения этой проблемы проведем процедуру очистки серверного кэша по следующей инструкции:

  1. Попросим всех активных пользователей выйти из баз данных 1С, расположенных на данном сервере приложений.
  2. Откроем консоль администрирования серверов 1С и принудительно завершим все зависшие сеансы и фоновые задания для целевой базы данных.
  3. Запустим утилиту управления службами Windows (services.msc) или выполним аналогичные команды в Linux-консоли.
  4. Найдем службу сервера приложений 1С:Предприятия (обычно она называется Агент сервера 1С:Предприятия 8.3).
  5. Нажмем кнопку Остановить службу.
  6. Перейдем в каталог на сервере, где хранятся служебные файлы сервера приложений. По умолчанию в Windows этот путь выглядит следующим образом: C:\Program Files\1cv8\srvinfo\ Или для 32-битных версий сервера: C:\Program Files (x86)\1cv8\srvinfo\
  7. Внутри этого каталога перейдем в папку конкретного кластера серверов (обычно она имеет имя вида reg_1541).
  8. Внутри папки кластера мы увидим папки с длинными буквенно-цифровыми GUID-идентификаторами баз данных. Найдем папку, соответствующую нашей проблемной базе (ее GUID можно предварительно посмотреть в свойствах базы в консоли администрирования серверов 1С).
  9. Внутри папки базы удалим временные папки кэша конфигурации, такие как snccg и локальные файлы кэша сессий.
  10. После удаления временных файлов вернемся в утилиту управления службами и запустим службу сервера 1С:Предприятия заново.

При первом запуске сервер заново считает чистую структуру метаданных из СУБД, и конфликт «призрачных» расширений будет полностью исчерпан.

Способ 5: Отключение автоматической загрузки отозванных патчей

Если в процессе анализа выяснилось, что патч EF_00_00304406 действительно был официально отозван фирмой «1С» как некорректный или неактуальный, автоматическая служба интернет-поддержки может пытаться установить его бесконечно при каждом сеансе обновления. Чтобы разомкнуть этот замкнутый круг, временно скорректируем настройки интеграции с порталом ИТС:

  1. В пользовательском режиме перейдем в раздел Администрирование -> Интернет-поддержка и сервисы.
  2. Найдем подраздел Обновление версии программы.
  3. Снимем флажок с опции «Загружать и устанавливать исправления (патчи) автоматически».
  4. После этого перейдем в ручной режим управления обновлениями (ссылка Поиск и установка обновлений).
  5. В списке доступных исправлений найдем строку с патчем EF_00_00304406 и снимем с нее галочку, исключив ее из плановой установки.
  6. Выполним обновление конфигурации до релиза 3.1.14.98 без участия этого проблемного патча.

После успешного завершения обновления и стабилизации работы программы можно будет снова активировать флажок автоматической загрузки патчей, так как в новых версиях метаданных конфигурации конфликт уже не повторится.

Подводя итог, отметим, что механизм автоматической установки патчей в 1С очень полезен, но требует от администратора понимания его внутренней технической структуры. Использование описанных нами методов принудительной очистки расширений через Конфигуратор, параметры запуска или сброс серверного кэша позволит вам оперативно решать подобные коллизии и поддерживать работоспособность учетных систем на актуальном уровне.

← На главную