Каждый системный администратор и программист 1С регулярно сталкивается с процессом обновления типовых конфигураций. Начиная с версии платформы 8.3, фирма «1С» внедрила крайне удобный механизм оперативного исправления ошибок — патчи (исправления). Они представляют собой мини-расширения конфигурации, предназначенные для быстрого устранения критических багов без ожидания выхода полноценного релиза программы. Однако на практике автоматический механизм установки и удаления этих расширений нередко дает сбои. Особенно часто это происходит при переходе на новые минорные или мажорные версии конфигураций, например, при обновлении «1С:Зарплата и кадры государственного учреждения» или «1С:Зарплата и управление персоналом» на релиз 3.1.14.98.
В этой статье мы подробно рассмотрим ситуацию, когда при установке обновлений успешно применяется большинство исправлений, но одно из них (в нашем примере — патч с идентификатором EF_00_00304406) намертво блокирует процесс обновления, выдавая системную ошибку: «При установке исправления произошла ошибка: Расширение с таким именем уже существует!». Мы детально проанализируем причины этой неполадки и изучим комплексные методы ее решения — от простых пользовательских манипуляций до низкоуровневой очистки кэша и принудительного удаления расширений через командную строку.
Прежде чем переходить к практическим действиям, проанализируем ситуацию изнутри. Технически любой патч 1С — это полноценное расширение конфигурации, имя которого всегда начинается со служебного префикса EF_. За обработку патчей в кодовой базе отвечает специализированная библиотека — Библиотека стандартных подсистем (БСП). В ее логику заложен следующий алгоритм:
Но почему же тогда возникает ошибка дублирования имен? На это есть три основные причины:
1Cv8.1CD метаданные патча остаются заблокированными.EF_00_00304406. Если разработчики отозвали исправление с серверов обновлений из-за обнаруженных в нем багов или замены другими механизмами, система БСП на локальном компьютере пользователя начинает вести себя некорректно. Она пытается скачать актуальный список, путается в версиях и повторно пытается установить расширение поверх "призрачных" метаданных старого патча.Если нам повезло и сбой носит поверхностный характер, мы можем попробовать избавиться от проблемного исправления стандартными средствами администрирования в режиме «1С:Предприятие». Разберем по шагам этот процесс:
EF_00_00304406).Однако этот простой метод часто выдает ошибку, либо удаленное исправление бесследно исчезает из списка, но повторная попытка обновить конфигурацию все равно прерывается сообщением о дублировании имени. В таком случае перейдем к более глубоким методам решения проблемы.
Если база данных работает на версии ПРОФ или КОРП, у нас есть прямой доступ к списку расширений через среду разработки 1С. Это самый надежный способ очистить «зависшие» метаданные. Проанализируем этот метод детально:
EF_).EF_00_00304406 (или имя другого зависшего патча).Delete на клавиатуре).F7 на клавиатуре или щелкнем по кнопке Обновить конфигурацию базы данных (синий бочонок на панели инструментов).После успешного обновления конфигурации базы данных в Конфигураторе можем закрыть его и запустить сеанс «1С:Предприятие». Повторный запуск обновления конфигурации пройдет гладко.
Если вы используете Базовую версию программы (например, «1С:Зарплата и управление персоналом. Базовая версия»), то при попытке открыть меню работы с расширениями в Конфигураторе вы столкнетесь с тем, что данный пункт меню заблокирован платформой. Фирма «1С» программно ограничивает работу с расширениями в базовых лицензиях. Что же делать в такой ситуации?
Рассмотрим обходной путь решения проблемы с использованием специальных ключей запуска платформы 1С:Предприятие. Нам понадобится запустить Конфигуратор с флагами принудительной очистки расширений конфигурации через командную строку.
Разберем по шагам данный алгоритм:
/DeleteCfg -Extension "EF_00_00304406"
/DeleteCfg -AllExtensions
После удаления параметров запуска можно спокойно открывать базу в режиме «1С:Предприятие» и запускать процесс обновления — конфликт имен будет устранен.
Часто в крупных организациях ЗУП или ЗГУ работают в клиент-серверном режиме под управлением СУБД (MS SQL Server, PostgreSQL и др.). В этой архитектуре рабочие процессы сервера 1С (rphost) активно кэшируют структуру метаданных расширений. Нередки ситуации, когда администратор уже удалил патч из списка расширений в Конфигураторе, но серверный кэш продолжает хранить информацию о нем, вызывая пресловутую ошибку дублирования имен.
Для гарантированного решения этой проблемы проведем процедуру очистки серверного кэша по следующей инструкции:
services.msc) или выполним аналогичные команды в Linux-консоли.
C:\Program Files\1cv8\srvinfo\
Или для 32-битных версий сервера:
C:\Program Files (x86)\1cv8\srvinfo\
reg_1541).snccg и локальные файлы кэша сессий.При первом запуске сервер заново считает чистую структуру метаданных из СУБД, и конфликт «призрачных» расширений будет полностью исчерпан.
Если в процессе анализа выяснилось, что патч EF_00_00304406 действительно был официально отозван фирмой «1С» как некорректный или неактуальный, автоматическая служба интернет-поддержки может пытаться установить его бесконечно при каждом сеансе обновления. Чтобы разомкнуть этот замкнутый круг, временно скорректируем настройки интеграции с порталом ИТС:
EF_00_00304406 и снимем с нее галочку, исключив ее из плановой установки.3.1.14.98 без участия этого проблемного патча.После успешного завершения обновления и стабилизации работы программы можно будет снова активировать флажок автоматической загрузки патчей, так как в новых версиях метаданных конфигурации конфликт уже не повторится.
Подводя итог, отметим, что механизм автоматической установки патчей в 1С очень полезен, но требует от администратора понимания его внутренней технической структуры. Использование описанных нами методов принудительной очистки расширений через Конфигуратор, параметры запуска или сброс серверного кэша позволит вам оперативно решать подобные коллизии и поддерживать работоспособность учетных систем на актуальном уровне.