К статье
Практический материал

Администрирование · 11 мин

Как удалить внешнюю компоненту 1С

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

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

Удаление внешней компоненты — не просто стирание файла DLL. Компонента может быть подключена в коде конфигурации, храниться в макете, регистрироваться в системе и кэшироваться в профилях пользователей. Если убрать только файл, база начнёт выдавать ошибки «Ошибка подключения внешней компоненты» при каждом обращении к ней.

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

Что такое внешняя компонента и где она «живёт» в системе

Прежде чем удалять, полезно понимать, в каких местах системы вообще может осесть компонента. Это определяет объём работ: иногда достаточно убрать макет, а иногда придётся чистить реестр и кэши на десятках рабочих мест.

Внешняя компонента в 1С может существовать в нескольких видах:

  • Native API или COM-компонента в виде DLL-файла — подключается напрямую из файла на диске или из макета конфигурации;
  • Компонента в макете конфигурации — хранится внутри базы как ZIP-архив (макет типа «Двоичные данные») и устанавливается методом УстановитьВнешнююКомпоненту;
  • Зарегистрированная в операционной системе COM-компонента — прописана в реестре Windows и доступна всем приложениям;
  • Копии в кэше — платформа распаковывает компоненты из макетов в служебные папки профиля пользователя.

Подготовка: найдите все места использования компоненты

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

Откройте конфигуратор и выполните глобальный поиск (меню «Правка — Глобальный поиск») по всей конфигурации. Ищите по следующим ключевым словам:

  • имя компоненты и её программный идентификатор (ProgID), например AddIn.Scanner;
  • вызовы ПодключитьВнешнююКомпоненту и УстановитьВнешнююКомпоненту;
  • конструкции Новый COMОбъект с именем компоненты;
  • имя макета, в котором хранится компонента.

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

Порядок поиска использований
  1. 1
    Сделайте резервную копию базы или выгрузку DT
  2. 2
    Откройте конфигуратор и запустите глобальный поиск по имени компоненты
  3. 3
    Найдите вызовы ПодключитьВнешнююКомпоненту и УстановитьВнешнююКомпоненту
  4. 4
    Проверьте макеты на наличие двоичных данных с компонентой
  5. 5
    Проверьте регламентные задания и подсистемы обмена с оборудованием
  6. 6
    Зафиксируйте список всех найденных мест для правки

Удаление компоненты из конфигурации

Уберите вызовы из кода

В каждом найденном месте удалите или закомментируйте обращения к компоненте. Если функционал полностью не нужен — удаляйте код целиком. Если процедура используется и для других задач, аккуратно уберите только фрагменты, связанные с ВК, и проверьте, что оставшаяся логика не ссылается на удалённые переменные.

Обратите внимание на конструкции вида Новый("AddIn.ИмяКомпоненты.Объект") — они создают объект компоненты и тоже должны быть удалены вместе с обработкой результата подключения.

Удалите макет с компонентой

Если компонента хранится в макете, найдите его в дереве конфигурации (обычно в ветке «Общие — Макеты» или в макетах конкретного объекта) и удалите. Перед удалением убедитесь через поиск ссылок (правый клик по макету — «Поиск ссылок на объект»), что на макет не осталось ссылок в коде.

После правок выполните «Конфигурация — Проверка конфигурации» с включённой проверкой логической целостности. Это выявит оставшиеся ссылки на удалённые объекты до обновления базы.

Удаление компоненты с диска и из реестра

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

Если компонента подключалась из файла на диске — просто удалите DLL и сопутствующие файлы. Предварительно убедитесь, что файл не используется: завершите сеансы 1С, иначе Windows не даст удалить занятую библиотеку.

Если компонента регистрировалась в системе как COM-объект, удалите её регистрацию командой:

cmd
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. Завершите все сеансы 1С пользователя.
  2. Удалите содержимое папки ExtCompT в профиле.
  3. Удалите папки кэша конкретной базы (по GUID) или очистите кэш через удаление базы из списка и повторное добавление.
  4. Повторите на всех компьютерах, где работали с компонентой, включая сервер, если подключение выполнялось на сервере.

Проверка результата

После всех операций запустите базу в пользовательском режиме и пройдите по сценариям, которые раньше использовали компоненту: откройте соответствующие документы, отчёты, обработки. Ошибок подключения ВК возникать не должно.

Дополнительно проверьте журнал регистрации: отфильтруйте события за время теста по слову «компонент» и убедитесь в отсутствии ошибок. Если в журнале появляются записи о неудачном подключении — значит, в коде остался пропущенный вызов, вернитесь к глобальному поиску.

Контрольные точки

Как проверить результат

Запуск базы и типовые операции
Норма

База открывается, документы и отчёты работают без сообщений об ошибках

Тревожный признак

Появляется ошибка «Ошибка подключения внешней компоненты» или «Объект не найден»

Журнал регистрации
Норма

Нет событий с ошибками подключения ВК за время проверки

Тревожный признак

Есть записи о неудачной загрузке компоненты

Кэш профиля
Норма

Папка ExtCompT пуста или не содержит удалённой компоненты после перезапуска

Тревожный признак

Компонента снова появляется в кэше — значит, где-то остался вызов установки

Типичные ошибки при удалении

Типичные ошибки
01
Удалили файл DLL, но оставили вызовы в коде — база падает с ошибкой при каждом обращении к компоненте
02
Удалили макет без проверки ссылок — конфигурация не проходит проверку и обновление
03
Почистили кэш только у себя — у остальных пользователей продолжают работать старые копии или возникают конфликты версий
04
Забыли про серверный контекст — в клиент-серверном режиме компонента осталась на сервере и продолжает использоваться регламентными заданиями
05
Отменили регистрацию COM не той разрядности — компонента осталась видимой для 32-разрядных клиентов

Когда удалять компоненту нельзя или не нужно

Не всякую компоненту стоит удалять. Если ВК входит в состав типовой конфигурации (например, компоненты работы с оборудованием или обмена с банками), её удаление нарушит типовой функционал и усложнит обновление: при следующем обновлении конфигурации макет вернётся, а ваши правки кода могут конфликтовать с новыми версиями модулей.

Если цель — просто прекратить использование компонента, а не избавиться от неё физически, достаточно отключить соответствующий функционал в настройках программы (например, отключить подключаемое оборудование) и убрать вызовы из своих доработок. Сам макет в типовой конфигурации при этом лучше оставить нетронутым.

Маршрут решения

Как выбрать действие

Компонента — часть вашей собственной доработки и больше не нужнаУдаляйте полностью: код, макет, файлы, кэш
Компонента входит в типовую конфигурациюНе удаляйте макет — отключите использование в настройках и уберите свои вызовы
Компонента нужна только на части рабочих местОставьте в конфигурации, удалите файлы и регистрацию только на ненужных компьютерах
После удаления нужен аналогичный функционалСначала внедрите замену и протестируйте её, и только потом удаляйте старую компоненту

Частые вопросы

Можно ли удалить внешнюю компоненту без конфигуратора?

Файл DLL и регистрацию COM можно удалить средствами Windows без конфигуратора. Но если компонента хранится в макете конфигурации или вызывается из кода, без конфигуратора не обойтись: иначе в базе останутся обращения к несуществующему объекту, и пользователи получат ошибки.

Что делать, если после удаления компоненты база выдаёт ошибку при запуске?

Ошибка при запуске обычно означает, что вызов компоненты остался в модуле, который выполняется при старте системы (модуль сеанса, общие модули с подписками на события). Запустите конфигуратор, выполните глобальный поиск по имени компоненты и уберите оставшийся вызов. Если база файловая и конфигуратор тоже не открывается — восстановите резервную копию и повторите удаление аккуратнее.

Нужно ли удалять компоненту у каждого пользователя отдельно?

Макет и код удаляются централизованно — один раз в конфигурации. А вот кэш и локально установленные файлы придётся чистить на каждом компьютере, где компонента использовалась. В доменной сети это можно автоматизировать скриптом очистки папок профилей.

Компонента снова появляется в кэше после удаления — почему?

Это верный признак того, что где-то в конфигурации остался вызов УстановитьВнешнююКомпоненту или ПодключитьВнешнююКомпоненту: платформа заново распаковывает макет в кэш при каждом обращении. Найдите вызов глобальным поиском и удалите его, затем снова очистите кэш.

Чем заменить внешнюю компоненту, если функционал нужен?

Часть задач решается штатными средствами платформы: HTTP-запросы, работа с файлами, криптографические операции, работа с оборудованием через БПО. Для остального можно использовать HTTP-сервисы, внешние обработки или COM-объекты, уже присутствующие в системе. Замену стоит подобрать и протестировать до удаления старой компоненты.

Опасно ли удалять внешнюю компоненту на рабочей базе?

Опасно без подготовки. Риски — падение сеансов при обращении к удалённому объекту и ошибки обновления конфигурации. Безопасный порядок: резервная копия, правки в тестовой базе, проверка, затем перенос в рабочую в нерабочее время с завершением сеансов пользователей.

Итог

Что важно запомнить

Удаление внешней компоненты 1С — это цепочка: резервная копия, поиск всех вызовов в коде, очистка кода и макетов, проверка конфигурации, удаление файлов и COM-регистрации, очистка кэша на клиентах и сервере, контроль журнала регистрации. Пропуск любого шага приводит к ошибкам подключения или к тихому «воскрешению» компоненты из кэша.