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