Сообщение об установке внешней компоненты появляется при каждом запуске 1С — что делать
Содержание
Сообщение «Внешняя компонента успешно установлена » само по себе не ошибка: 1С сообщает, что поставила драйвер или библиотеку в профиль пользователя. Убрать его насовсем можно одним способом — сделать так, чтобы установка прошла один раз и больше не требовалась. Если надпись выскакивает при каждом входе, значит, компонента ставится, но при следующем запуске программа её не находит или не может подключить.
Чаще всего хватает трёх действий: запустить базу
с ключом /ClearCache, удалить старые копии компонент из папки %APPDATA%\1C\1cv8\ExtCompT и проверить, что разрядность клиента 1С совпадает с разрядностью драйвера. Если не помогло — дело в правах на профиль, антивирусе или в коде конфигурации, и тогда нужен журнал регистрации.
Почему 1С устанавливает компоненту по кругу
Конфигурация работает с компонентой по простой схеме: сначала пытается её подключить, а если не вышло — предлагает установить и подключает повторно. После установки пользователь видит уведомление. Текст выводит либо платформа, либо код конфигурации — например, библиотека подключаемого оборудования (драйверы ККТ, сканеров, весов) или модуль криптографии для ЭДО.
Цикл возникает, когда установка «проходит», а подключение при следующем запуске снова не удаётся. Типичные причины:
- 🗂️ Профиль пользователя не сохраняется. На терминальном сервере или при перемещаемых профилях папка
%APPDATA%очищается при выходе. Компонента ставится заново при каждом сеансе. - 🔒 Нет прав на запись в профиль. Файл не дописывается до конца, а сообщение всё равно появляется.
- 🛡️ Антивирус удаляет или блокирует DLL. Компонента из профиля попадает в карантин сразу после установки.
- ⚙️ Не та разрядность. В конфигурации лежит, например, только 32-битная версия драйвера, а запускается 64-битный клиент. Установка формально выполнена, подключить нечего.
- 🧩 Устаревший кэш. После обновления конфигурации в кэше клиента остаётся старый макет компоненты, и проверка версии каждый раз даёт «нужна установка».
- 🔁 Несколько версий платформы на одном компьютере. Базы запускаются разными версиями, у каждой свой набор установленных компонент.
- 🧑💻 Ошибка в коде доработки. Установка вызывается безусловно, без предварительной попытки подключить компоненту.
Сначала проверьте, у всех ли пользователей это происходит. Если только у одного — ищите причину в его профиле и правах. Если у всех и сразу после обновления — в кэше и в самой конфигурации.
Сброс кэша клиента 1С:Предприятия
Это самый безопасный шаг, с него и начинайте. Кэш хранит метаданные и макеты конфигурации на компьютере пользователя. Если там застряла старая версия компоненты, платформа будет считать её неустановленной.
Способ 1. Ключ запуска /ClearCache
- Закройте 1С у этого пользователя.
- В окне запуска выберите базу и нажмите
Изменить. - Пройдите мастер до последней страницы и в поле дополнительных параметров запуска впишите
/ClearCache. - Нажмите
Готовои запустите базу. - После успешного входа уберите ключ, иначе кэш будет чиститься при каждом запуске и база станет открываться медленнее.
Тот же ключ можно передать в ярлыке:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /IBName "Бухгалтерия" /ClearCache
Имя базы в кавычках должно совпадать с названием в списке баз.
Способ 2. Удаление папок кэша вручную
Если ключ не помог, удалите кэш руками. Предварительно закройте все сеансы 1С этого пользователя: открытые базы при удалении потеряют данные сеанса.
- Нажмите
Win+R, введите%LOCALAPPDATA%\1C\1cv8и нажмитеEnter. - Удалите папки с длинными именами-идентификаторами (вида
a1b2c3d4-...). Это кэш баз. - То же сделайте в
%APPDATA%\1C\1cv8. - Файлы
ibases.v8iи1cv8strt.pfl, а также папкиExtCompTиExtCompT64пока не трогайте: про них — в следующих разделах.
Список баз хранится в %APPDATA%\1C\1CEStart\ibases.v8i. Его удалять не нужно — иначе пользователю придётся заново добавлять все базы.
Удаление файлов компонент из профиля
Компоненты, которые ставятся из конфигурации, тонкий клиент кладёт в профиль пользователя. Чаще всего это папка:
%APPDATA%\1C\1cv8\ExtCompT
В зависимости от версии платформы и разрядности рядом может быть отдельная папка для 64-битных компонент. Внутри — DLL и служебные файлы с описанием установленных версий.
Когда в папке скапливаются несколько версий одного драйвера или файл повреждён, платформа может постоянно считать компоненту «не той». Порядок действий:
- Закройте все сеансы 1С пользователя.
- Откройте папку
%APPDATA%\1C\1cv8и переименуйтеExtCompTвExtCompT_old(так проще откатиться, чем при удалении). - Запустите базу и дайте 1С установить компоненту один раз.
- Закройте базу и откройте снова. Если сообщение больше не появилось — папку
ExtCompT_oldможно удалить.
Если папка после выхода из системы исчезает или оказывается пустой, проблема не в 1С, а в профиле Windows — смотрите раздел про параметры запуска и права.
Компоненты для веб-клиента
В браузере компоненты ставятся через расширение для работы с 1С и отдельный установщик. Здесь цикл чаще возникает, когда браузер работает в режиме «Инкогнито» или чистит данные сайтов при закрытии. Добавьте адрес публикации базы в исключения очистки и установите расширение заново.
Записи в реестре Windows: что проверять, а что не трогать
Программы «чистки реестра» здесь не помогут и могут навредить. Современные компоненты, которые 1С ставит из конфигурации, в реестре не регистрируются: они лежат файлами в профиле пользователя.
Реестр важен только для старых COM-драйверов — некоторых версий драйверов ККТ, весов и дисплеев покупателя. Такой драйвер регистрируется в системе через regsvr32, и запись о нём появляется в разделе HKEY_CLASSES_ROOT\CLSID. Для 32-битных компонент на 64-битной Windows — в HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Classes\CLSID.
Признак проблемы с COM-драйвером: компонента «устанавливается» у обычного пользователя, но регистрация в системе требует прав администратора и молча не проходит. Решение — перерегистрировать драйвер под администратором:
:: 32-битная DLL на 64-битной Windows
C:\Windows\SysWOW64\regsvr32.exe "C:\Путь\к\драйверу.dll"
:: 64-битная DLL
C:\Windows\System32\regsvr32.exe "C:\Путь\к\драйверу.dll"
Командную строку запускайте от имени администратора. Путь к DLL берите из документации производителя драйвера или из папки, куда его установил дистрибутив.
Перед ручной правкой реестра сделайте экспорт раздела, который собираетесь менять (Файл → Экспорт в regedit). Удалять ключи CLSID «наугад» нельзя: так легко сломать драйвер другой программы.
Ещё одна запись, которую иногда смотрят, — политики перемещаемых профилей и исключений папок. Её правит администратор домена через групповые политики, а не пользователь в regedit.
Параметры запуска платформы: разрядность, права, профиль
Разрядность клиента
Если драйвер есть только в одной разрядности, клиент должен запускаться в той же.
- В окне запуска выберите базу и нажмите
Изменить. - На последней странице мастера найдите выбор разрядности и укажите нужную: 32 (x86) или 64 (x86-64).
- Сохраните и перезапустите базу.
| Ситуация | Что выбрать |
|---|---|
| Драйвер оборудования только 32-битный | 32 (x86) |
| Драйвер в конфигурации есть в обеих версиях | Любая, по умолчанию |
| На компьютере установлена только 64-битная платформа, драйвер 32-битный | Доставить 32-битный клиент той же версии |
Версия платформы
Если на компьютере стоят несколько версий платформы, закрепите для базы одну. В том же мастере на последней странице укажите версию 1С:Предприятия явно, например 8.3.25. Тогда компонента будет ставиться в одно и то же окружение.
Права и профиль на терминальном сервере
Для RDP-фермы и перемещаемых профилей проверьте:
- 📁 папка
%APPDATA%\1C\1cv8не попадает под исключения синхронизации профиля; - ✍️ у пользователя есть права на запись в эту папку;
- 🧹 скрипты очистки при выходе не удаляют
ExtCompT; - 🛡️ в антивирусе папки
%APPDATA%\1C\1cv8\ExtCompTи каталог установки платформыC:\Program Files\1cv8добавлены в исключения.
Разовый запуск от имени администратора
Для COM-драйверов помогает один раз открыть базу
через Запуск от имени администратора и дать компоненте установиться. Дальше работайте как обычно, без повышенных прав: запускать 1С постоянно под администратором не нужно и небезопасно.
Журнал регистрации: где искать причину
Если после всех шагов сообщение возвращается, посмотрите, что пишет сама база. В БП 3.0, ЗУП 3.1 и УТ 11 журнал открывается через Администрирование → Обслуживание → Журнал регистрации. В Конфигураторе — через Администрирование → Журнал регистрации.
Как фильтровать:
- Установите период — несколько минут вокруг момента, когда вы запустили базу и увидели сообщение.
- Отберите записи по пользователю.
- Включите уровни «Ошибка» и «Предупреждение».
- Ищите в комментариях слова «компонент», «драйвер», «подключ».
Что подскажет журнал:
- ❗ ошибка загрузки DLL или отказ в доступе — значит, мешает антивирус или права;
- ❗ ошибка подключения сразу после успешной установки — вероятно, несовпадение разрядности;
- ❗ записи от подсистемы подключаемого оборудования с именем конкретного драйвера — проверьте его настройки в
Администрирование → Подключаемое оборудование.
Если в журнале пусто, а сообщение появляется, установку вызывает код при запуске. Тогда передайте вопрос программисту: доработка должна сначала пытаться подключить компоненту и вызывать установку только при неудаче.
Для программиста: правильный порядок подключения
Если база доработана и цикл воспроизводится только в ней, проверьте, как код обращается к компоненте. Правильная схема — сначала подключить, установить только при неудаче, затем подключить повторно:
ИмяМакета = "ОбщийМакет.МояКомпонента";
Подключена = ПодключитьВнешнююКомпоненту(ИмяМакета, "МояКомпонента", ТипВнешнейКомпоненты.Native);
Если Не Подключена Тогда
УстановитьВнешнююКомпоненту(ИмяМакета);
Подключена = ПодключитьВнешнююКомпоненту(ИмяМакета, "МояКомпонента", ТипВнешнейКомпоненты.Native);
КонецЕсли;
Если Не Подключена Тогда
Сообщить("Не удалось подключить компоненту МояКомпонента");
КонецЕсли;
Ошибка, которая и даёт цикл: вызов УстановитьВнешнююКомпоненту стоит первым и выполняется при каждом запуске, а следом показывается уведомление об успехе.
Что ещё проверить в коде:
- 📦 в макете компоненты есть сборки под обе разрядности Windows, а не только под одну;
- 🏷️ имя макета и имя компоненты в обоих вызовах совпадают — опечатка в одном из них даёт «не подключена» после каждой установки;
- ⏱️ в конфигурациях с запретом синхронных вызовов используются асинхронные аналоги этих методов, а не синхронные;
- 🔕 уведомление об успешной установке выводится только после реальной установки, а не при каждом проходе процедуры.
После исправления обновите конфигурацию базы данных и сбросьте кэш у пользователей ключом /ClearCache.
Если ничего не помогло
- 🔄 Обновите драйвер оборудования. Скачайте актуальную версию с сайта производителя ККТ или сканера и переустановите её. Старые драйверы плохо уживаются с новыми версиями платформы.
- 🧪 Проверьте на другом пользователе Windows. Создайте тестовую учётную запись и откройте базу под ней. Если там цикл не воспроизводится — повреждён профиль исходного пользователя.
- 🧰 Проверьте конфигурацию на доработки. Если база нетиповая, сравните поведение с типовой демобазой того же релиза. Повторяется только в вашей — ищите вызов установки в общих модулях и обработчиках запуска.
- 📨 Соберите данные для поддержки: версию платформы и разрядность клиента, релиз конфигурации, имя драйвера, выдержку из журнала регистрации, точный текст сообщения.