Сообщение об установке внешней компоненты появляется при каждом запуске 1С — что делать

· 9 мин

Содержание

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

Чаще всего хватает трёх действий: запустить базу с ключом /ClearCache, удалить старые копии компонент из папки %APPDATA%\1C\1cv8\ExtCompT и проверить, что разрядность клиента 1С совпадает с разрядностью драйвера. Если не помогло — дело в правах на профиль, антивирусе или в коде конфигурации, и тогда нужен журнал регистрации.

Почему 1С устанавливает компоненту по кругу

Конфигурация работает с компонентой по простой схеме: сначала пытается её подключить, а если не вышло — предлагает установить и подключает повторно. После установки пользователь видит уведомление. Текст выводит либо платформа, либо код конфигурации — например, библиотека подключаемого оборудования (драйверы ККТ, сканеров, весов) или модуль криптографии для ЭДО.

Цикл возникает, когда установка «проходит», а подключение при следующем запуске снова не удаётся. Типичные причины:

  • 🗂️ Профиль пользователя не сохраняется. На терминальном сервере или при перемещаемых профилях папка %APPDATA% очищается при выходе. Компонента ставится заново при каждом сеансе.
  • 🔒 Нет прав на запись в профиль. Файл не дописывается до конца, а сообщение всё равно появляется.
  • 🛡️ Антивирус удаляет или блокирует DLL. Компонента из профиля попадает в карантин сразу после установки.
  • ⚙️ Не та разрядность. В конфигурации лежит, например, только 32-битная версия драйвера, а запускается 64-битный клиент. Установка формально выполнена, подключить нечего.
  • 🧩 Устаревший кэш. После обновления конфигурации в кэше клиента остаётся старый макет компоненты, и проверка версии каждый раз даёт «нужна установка».
  • 🔁 Несколько версий платформы на одном компьютере. Базы запускаются разными версиями, у каждой свой набор установленных компонент.
  • 🧑‍💻 Ошибка в коде доработки. Установка вызывается безусловно, без предварительной попытки подключить компоненту.

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

Сброс кэша клиента 1С:Предприятия

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

Способ 1. Ключ запуска /ClearCache

  1. Закройте 1С у этого пользователя.
  2. В окне запуска выберите базу и нажмите Изменить.
  3. Пройдите мастер до последней страницы и в поле дополнительных параметров запуска впишите /ClearCache.
  4. Нажмите Готово и запустите базу.
  5. После успешного входа уберите ключ, иначе кэш будет чиститься при каждом запуске и база станет открываться медленнее.

Тот же ключ можно передать в ярлыке:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /IBName "Бухгалтерия" /ClearCache

Имя базы в кавычках должно совпадать с названием в списке баз.

Способ 2. Удаление папок кэша вручную

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

  1. Нажмите Win+R, введите %LOCALAPPDATA%\1C\1cv8 и нажмите Enter.
  2. Удалите папки с длинными именами-идентификаторами (вида a1b2c3d4-...). Это кэш баз.
  3. То же сделайте в %APPDATA%\1C\1cv8.
  4. Файлы ibases.v8i и 1cv8strt.pfl, а также папки ExtCompT и ExtCompT64 пока не трогайте: про них — в следующих разделах.

Список баз хранится в %APPDATA%\1C\1CEStart\ibases.v8i. Его удалять не нужно — иначе пользователю придётся заново добавлять все базы.

Удаление файлов компонент из профиля

Компоненты, которые ставятся из конфигурации, тонкий клиент кладёт в профиль пользователя. Чаще всего это папка:

%APPDATA%\1C\1cv8\ExtCompT

В зависимости от версии платформы и разрядности рядом может быть отдельная папка для 64-битных компонент. Внутри — DLL и служебные файлы с описанием установленных версий.

Когда в папке скапливаются несколько версий одного драйвера или файл повреждён, платформа может постоянно считать компоненту «не той». Порядок действий:

  1. Закройте все сеансы 1С пользователя.
  2. Откройте папку %APPDATA%\1C\1cv8 и переименуйте ExtCompT в ExtCompT_old (так проще откатиться, чем при удалении).
  3. Запустите базу и дайте 1С установить компоненту один раз.
  4. Закройте базу и откройте снова. Если сообщение больше не появилось — папку 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.

Параметры запуска платформы: разрядность, права, профиль

Разрядность клиента

Если драйвер есть только в одной разрядности, клиент должен запускаться в той же.

  1. В окне запуска выберите базу и нажмите Изменить.
  2. На последней странице мастера найдите выбор разрядности и укажите нужную: 32 (x86) или 64 (x86-64).
  3. Сохраните и перезапустите базу.
СитуацияЧто выбрать
Драйвер оборудования только 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 журнал открывается через Администрирование → Обслуживание → Журнал регистрации. В Конфигураторе — через Администрирование → Журнал регистрации.

Как фильтровать:

  1. Установите период — несколько минут вокруг момента, когда вы запустили базу и увидели сообщение.
  2. Отберите записи по пользователю.
  3. Включите уровни «Ошибка» и «Предупреждение».
  4. Ищите в комментариях слова «компонент», «драйвер», «подключ».

Что подскажет журнал:

  • ❗ ошибка загрузки DLL или отказ в доступе — значит, мешает антивирус или права;
  • ❗ ошибка подключения сразу после успешной установки — вероятно, несовпадение разрядности;
  • ❗ записи от подсистемы подключаемого оборудования с именем конкретного драйвера — проверьте его настройки в Администрирование → Подключаемое оборудование.

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

Диагностика: выберите симптом

Для программиста: правильный порядок подключения

Если база доработана и цикл воспроизводится только в ней, проверьте, как код обращается к компоненте. Правильная схема — сначала подключить, установить только при неудаче, затем подключить повторно:

ИмяМакета = "ОбщийМакет.МояКомпонента";
Подключена = ПодключитьВнешнююКомпоненту(ИмяМакета, "МояКомпонента", ТипВнешнейКомпоненты.Native);
Если Не Подключена Тогда
    УстановитьВнешнююКомпоненту(ИмяМакета);
    Подключена = ПодключитьВнешнююКомпоненту(ИмяМакета, "МояКомпонента", ТипВнешнейКомпоненты.Native);
КонецЕсли;
Если Не Подключена Тогда
    Сообщить("Не удалось подключить компоненту МояКомпонента");
КонецЕсли;

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

Что ещё проверить в коде:

  • 📦 в макете компоненты есть сборки под обе разрядности Windows, а не только под одну;
  • 🏷️ имя макета и имя компоненты в обоих вызовах совпадают — опечатка в одном из них даёт «не подключена» после каждой установки;
  • ⏱️ в конфигурациях с запретом синхронных вызовов используются асинхронные аналоги этих методов, а не синхронные;
  • 🔕 уведомление об успешной установке выводится только после реальной установки, а не при каждом проходе процедуры.

После исправления обновите конфигурацию базы данных и сбросьте кэш у пользователей ключом /ClearCache.

Если ничего не помогло

  • 🔄 Обновите драйвер оборудования. Скачайте актуальную версию с сайта производителя ККТ или сканера и переустановите её. Старые драйверы плохо уживаются с новыми версиями платформы.
  • 🧪 Проверьте на другом пользователе Windows. Создайте тестовую учётную запись и откройте базу под ней. Если там цикл не воспроизводится — повреждён профиль исходного пользователя.
  • 🧰 Проверьте конфигурацию на доработки. Если база нетиповая, сравните поведение с типовой демобазой того же релиза. Повторяется только в вашей — ищите вызов установки в общих модулях и обработчиках запуска.
  • 📨 Соберите данные для поддержки: версию платформы и разрядность клиента, релиз конфигурации, имя драйвера, выдержку из журнала регистрации, точный текст сообщения.

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

Можно ли просто отключить это сообщение в настройках?
Отдельной галочки «не показывать» для него нет. Сообщение пропадёт само, когда компонента перестанет переустанавливаться при каждом запуске.
Безопасно ли удалить папку ExtCompT?
Да, если закрыты все сеансы 1С. Компоненты из конфигурации поставятся заново при первом обращении. Надёжнее не удалять, а переименовать папку и удалить её после проверки.
Почему сообщение появляется у одного пользователя, а у соседа нет?
Компоненты ставятся в профиль каждого пользователя Windows отдельно. Значит, проблема в профиле, правах или антивирусе конкретного компьютера.
Влияет ли на это файловый или клиент-серверный вариант базы?
Нет. Компоненты для оборудования и криптографии работают на клиенте, поэтому смотреть нужно компьютер пользователя, а не сервер 1С.
Нужно ли переустанавливать платформу?
Обычно нет. Переустановка нужна, если на компьютере не хватает клиента нужной разрядности или файлы платформы повреждены.