Администрирование · 11 мин
Как удалить внешнюю компоненту 1С
Как удалить внешнюю компоненту 1С из конфигурации и с диска: отключение в коде, очистка кэша, удаление из макета и реестра. Пошаговая инструкция и типичные ошибки.
Внешняя компонента (ВК) в 1С — это библиотека, расширяющая возможности платформы: работа со сканерами штрих-кодов, криптографией, COM-портами, нестандартными протоколами обмена. Со временем такая компонента может стать ненужной: функционал заменили типовым механизмом, оборудование вывели из эксплуатации, а сама библиотека начала конфликтовать с новыми версиями платформы.
Удаление внешней компоненты — не просто стирание файла DLL. Компонента может быть подключена в коде конфигурации, храниться в макете, регистрироваться в системе и кэшироваться в профилях пользователей. Если убрать только файл, база начнёт выдавать ошибки «Ошибка подключения внешней компоненты» при каждом обращении к ней.
Ниже разобран полный порядок работ: от поиска всех мест использования компоненты до очистки кэша и проверки результата. Инструкция подходит для платформы 1С:Предприятие 8.3 в файловом и клиент-серверном вариантах.
Что такое внешняя компонента и где она «живёт» в системе
Прежде чем удалять, полезно понимать, в каких местах системы вообще может осесть компонента. Это определяет объём работ: иногда достаточно убрать макет, а иногда придётся чистить реестр и кэши на десятках рабочих мест.
Внешняя компонента в 1С может существовать в нескольких видах:
- Native API или COM-компонента в виде DLL-файла — подключается напрямую из файла на диске или из макета конфигурации;
- Компонента в макете конфигурации — хранится внутри базы как ZIP-архив (макет типа «Двоичные данные») и устанавливается методом УстановитьВнешнююКомпоненту;
- Зарегистрированная в операционной системе COM-компонента — прописана в реестре Windows и доступна всем приложениям;
- Копии в кэше — платформа распаковывает компоненты из макетов в служебные папки профиля пользователя.
Подготовка: найдите все места использования компоненты
Главная ошибка при удалении — убрать файл или макет, не проверив, где компонента вызывается. После этого любой документ, отчёт или регламентное задание, обращающееся к ней, начнёт падать с ошибкой.
Откройте конфигуратор и выполните глобальный поиск (меню «Правка — Глобальный поиск») по всей конфигурации. Ищите по следующим ключевым словам:
- имя компоненты и её программный идентификатор (ProgID), например
AddIn.Scanner; - вызовы
ПодключитьВнешнююКомпонентуиУстановитьВнешнююКомпоненту; - конструкции
Новый COMОбъектс именем компоненты; - имя макета, в котором хранится компонента.
Выпишите все найденные места: общие модули, модули объектов, формы, регламентные задания. Именно этот список станет планом правок. Если компонента используется в регламентном задании, проверьте также расписание и отключите задание до завершения работ.
- 1Сделайте резервную копию базы или выгрузку DT
- 2Откройте конфигуратор и запустите глобальный поиск по имени компоненты
- 3Найдите вызовы ПодключитьВнешнююКомпоненту и УстановитьВнешнююКомпоненту
- 4Проверьте макеты на наличие двоичных данных с компонентой
- 5Проверьте регламентные задания и подсистемы обмена с оборудованием
- 6Зафиксируйте список всех найденных мест для правки
Удаление компоненты из конфигурации
Уберите вызовы из кода
В каждом найденном месте удалите или закомментируйте обращения к компоненте. Если функционал полностью не нужен — удаляйте код целиком. Если процедура используется и для других задач, аккуратно уберите только фрагменты, связанные с ВК, и проверьте, что оставшаяся логика не ссылается на удалённые переменные.
Обратите внимание на конструкции вида Новый("AddIn.ИмяКомпоненты.Объект") — они создают объект компоненты и тоже должны быть удалены вместе с обработкой результата подключения.
Удалите макет с компонентой
Если компонента хранится в макете, найдите его в дереве конфигурации (обычно в ветке «Общие — Макеты» или в макетах конкретного объекта) и удалите. Перед удалением убедитесь через поиск ссылок (правый клик по макету — «Поиск ссылок на объект»), что на макет не осталось ссылок в коде.
После правок выполните «Конфигурация — Проверка конфигурации» с включённой проверкой логической целостности. Это выявит оставшиеся ссылки на удалённые объекты до обновления базы.
Удаление компоненты с диска и из реестра
После того как конфигурация очищена, можно убирать саму библиотеку с компьютеров, где она устанавливалась. Порядок зависит от способа подключения.
Если компонента подключалась из файла на диске — просто удалите DLL и сопутствующие файлы. Предварительно убедитесь, что файл не используется: завершите сеансы 1С, иначе Windows не даст удалить занятую библиотеку.
Если компонента регистрировалась в системе как COM-объект, удалите её регистрацию командой:
regsvr32 /u "C:\Components\MyComponent.dll"Команду нужно выполнять в командной строке с правами администратора. Успешная отмена регистрации подтверждается сообщением «DllUnregisterServer ... успешно выполнен». После этого можно удалять сам файл.
Учтите разрядность: 32-разрядная компонента на 64-разрядной Windows регистрируется через C:\Windows\SysWOW64\regsvr32.exe. Если отмена регистрации «не срабатывает», проверьте, той ли версией regsvr32 вы пользуетесь.
Очистка кэша компонент и метаданных
Платформа 1С кэширует внешние компоненты в профиле пользователя. Даже после удаления макета из конфигурации старая копия может продолжать подхватываться из кэша, что маскирует результат работы или, наоборот, вызывает конфликты версий.
Кэш компонент обычно находится в папке %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8 в подкаталогах вида ExtCompT и кэшах баз (папки с длинными GUID-именами). Порядок очистки:
- Завершите все сеансы 1С пользователя.
- Удалите содержимое папки
ExtCompTв профиле. - Удалите папки кэша конкретной базы (по GUID) или очистите кэш через удаление базы из списка и повторное добавление.
- Повторите на всех компьютерах, где работали с компонентой, включая сервер, если подключение выполнялось на сервере.
Проверка результата
После всех операций запустите базу в пользовательском режиме и пройдите по сценариям, которые раньше использовали компоненту: откройте соответствующие документы, отчёты, обработки. Ошибок подключения ВК возникать не должно.
Дополнительно проверьте журнал регистрации: отфильтруйте события за время теста по слову «компонент» и убедитесь в отсутствии ошибок. Если в журнале появляются записи о неудачном подключении — значит, в коде остался пропущенный вызов, вернитесь к глобальному поиску.
Как проверить результат
База открывается, документы и отчёты работают без сообщений об ошибках
Появляется ошибка «Ошибка подключения внешней компоненты» или «Объект не найден»
Нет событий с ошибками подключения ВК за время проверки
Есть записи о неудачной загрузке компоненты
Папка ExtCompT пуста или не содержит удалённой компоненты после перезапуска
Компонента снова появляется в кэше — значит, где-то остался вызов установки
Типичные ошибки при удалении
Когда удалять компоненту нельзя или не нужно
Не всякую компоненту стоит удалять. Если ВК входит в состав типовой конфигурации (например, компоненты работы с оборудованием или обмена с банками), её удаление нарушит типовой функционал и усложнит обновление: при следующем обновлении конфигурации макет вернётся, а ваши правки кода могут конфликтовать с новыми версиями модулей.
Если цель — просто прекратить использование компонента, а не избавиться от неё физически, достаточно отключить соответствующий функционал в настройках программы (например, отключить подключаемое оборудование) и убрать вызовы из своих доработок. Сам макет в типовой конфигурации при этом лучше оставить нетронутым.
Как выбрать действие
Частые вопросы
Можно ли удалить внешнюю компоненту без конфигуратора?
Файл DLL и регистрацию COM можно удалить средствами Windows без конфигуратора. Но если компонента хранится в макете конфигурации или вызывается из кода, без конфигуратора не обойтись: иначе в базе останутся обращения к несуществующему объекту, и пользователи получат ошибки.
Что делать, если после удаления компоненты база выдаёт ошибку при запуске?
Ошибка при запуске обычно означает, что вызов компоненты остался в модуле, который выполняется при старте системы (модуль сеанса, общие модули с подписками на события). Запустите конфигуратор, выполните глобальный поиск по имени компоненты и уберите оставшийся вызов. Если база файловая и конфигуратор тоже не открывается — восстановите резервную копию и повторите удаление аккуратнее.
Нужно ли удалять компоненту у каждого пользователя отдельно?
Макет и код удаляются централизованно — один раз в конфигурации. А вот кэш и локально установленные файлы придётся чистить на каждом компьютере, где компонента использовалась. В доменной сети это можно автоматизировать скриптом очистки папок профилей.
Компонента снова появляется в кэше после удаления — почему?
Это верный признак того, что где-то в конфигурации остался вызов УстановитьВнешнююКомпоненту или ПодключитьВнешнююКомпоненту: платформа заново распаковывает макет в кэш при каждом обращении. Найдите вызов глобальным поиском и удалите его, затем снова очистите кэш.
Чем заменить внешнюю компоненту, если функционал нужен?
Часть задач решается штатными средствами платформы: HTTP-запросы, работа с файлами, криптографические операции, работа с оборудованием через БПО. Для остального можно использовать HTTP-сервисы, внешние обработки или COM-объекты, уже присутствующие в системе. Замену стоит подобрать и протестировать до удаления старой компоненты.
Опасно ли удалять внешнюю компоненту на рабочей базе?
Опасно без подготовки. Риски — падение сеансов при обращении к удалённому объекту и ошибки обновления конфигурации. Безопасный порядок: резервная копия, правки в тестовой базе, проверка, затем перенос в рабочую в нерабочее время с завершением сеансов пользователей.
Что важно запомнить
Удаление внешней компоненты 1С — это цепочка: резервная копия, поиск всех вызовов в коде, очистка кода и макетов, проверка конфигурации, удаление файлов и COM-регистрации, очистка кэша на клиентах и сервере, контроль журнала регистрации. Пропуск любого шага приводит к ошибкам подключения или к тихому «воскрешению» компоненты из кэша.