Как убрать ошибку «Недопустимая строка с указанием класса» в 1С 8.3
📋 Содержание
Ошибка Недопустимая строка с указанием класса с кодом -2147221005 (0x800401F3) означает, что Windows не нашла COM-компонент, который пытается запустить 1С 8.3. Класс не зарегистрирован в системе — отсюда и «недопустимая строка».
Чаще всего это всплывает при COM-подключении к базе (V83.COMConnector), при выгрузке в Excel или Word, при обмене между базами и в обработках, использующих внешние компоненты. Ниже — как понять, какой именно класс не найден, и как его зарегистрировать. Все команды рабочие, разложены по шагам.
Что означает ошибка -2147221005 (0x800401F3)
Полный текст в 1С обычно выглядит так:
Ошибка при вызове конструктора (COMОбъект)
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса
Код 0x800401F3 — это системная константа Windows REGDB_E_CLASSNOTREG, дословно «класс не зарегистрирован». То есть 1С вызвала конструктор Новый COMОбъект("Имя.Класса"), а Windows не нашла такой класс в реестре.
💡 Ключевое слово — «класс не зарегистрирован». Дело не в 1С и не в базе. Проблема в том, что нужная COM-библиотека либо не установлена, либо не прописана в реестре Windows, либо у неё не совпадает разрядность с процессом 1С.
Какие «строки с указанием класса» встречаются чаще всего:
- 🔌
V83.COMConnector— COM-соединитель для подключения к другой базе 1С. - 📊
Excel.Application— выгрузка/загрузка данных через Microsoft Excel. - 📝
Word.Application— печать в Word. - 🗄️
ADODB.Connection— прямые запросы к внешним БД. - 🧩
MSComctlLib...— компоненты изmscomctl.ocxв старых обработках.
Быстрая диагностика: с чего всё началось
Прежде чем что-то регистрировать, определите сценарий. Решение зависит от того, какой класс не найден.
Регистрируем COMConnector (comcntr.dll)
Самый частый случай — обмен или подключение к другой базе через V83.COMConnector. За это отвечает файл comcntr.dll из каталога платформы. Если его не зарегистрировали при установке, получаем ровно нашу ошибку.
Шаг 1. Найдите путь к comcntr.dll
Файл лежит в подкаталоге bin установленной платформы. Пример пути:
C:\Program Files (x86)\1cv8\8.3.24.1548\bin\comcntr.dll
Версия в пути (8.3.24.1548) у вас будет своя. Откройте каталог 1cv8, зайдите в папку с максимальным номером версии — это актуальная платформа.
Шаг 2. Зарегистрируйте dll в нужной разрядности
Запустите командную строку от имени администратора и выполните одну из команд.
Для 32-битной платформы (папка Program Files (x86)):
C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.24.1548\bin\comcntr.dll"
Для 64-битной платформы (папка Program Files):
C:\Windows\System32\regsvr32.exe "C:\Program Files\1cv8\8.3.24.1548\bin\comcntr.dll"
Если всё прошло, Windows покажет окно DllRegisterServer выполнено успешно.
⚠️ Обязательно запускайте
cmdименно от администратора. Без прав администратораregsvr32выдаст ошибку доступа к реестру, и класс так и не пропишется.
Шаг 3. Перезапустите 1С и проверьте
Полностью закройте все окна 1С (включая фоновые сеансы) и запустите заново. Ошибка должна уйти.
Проверяем разрядность: 32 или 64 бит
Вторая по частоте причина — несовпадение разрядности. COM-объект и процесс, который его вызывает, должны быть одной битности.
Классический конфликт: платформа 1С 64-битная, а Microsoft Office стоит 32-битный (или наоборот). Тогда Excel.Application не находится, хотя Office явно установлен.
| Что вызывает COM | Что должно совпасть | Как проверить |
|---|---|---|
| Клиент 1С (x86) | 32-битный Office и SysWOW64\comcntr.dll | В 1С «О программе» указана платформа |
| Клиент 1С (x64) | 64-битный Office и System32\comcntr.dll | Разрядность Office: Файл → Учётная запись → Об Excel |
| Сервер 1С (обычно x64) | 64-битные компоненты | Через какой процесс идёт вызов |
Что делать при несовпадении:
- 🔁 Проще всего привести к одной разрядности. Например, поставить 32-битный Office под 32-битную платформу.
- 🧭 Если менять Office нельзя — запускайте нужную операцию в клиенте той же разрядности, что и внешний компонент.
- 🖥️ Для серверных фоновых заданий учитывайте, что
rphostобычно 64-битный — компоненты тоже нужны 64-битные.
💡 Разрядность Office проверяется так: откройте Excel → Файл → Учётная запись → Об Excel. В заголовке будет
32-разряднаяили64-разрядная.
Регистрируем недостающие библиотеки (ocx/dll)
Если ошибка вылезает в конкретной обработке, дело часто в старых компонентах — mscomctl.ocx, comdlg32.ocx, msflxgrd.ocx. Их нет в чистой Windows, а обработка их требует.
Порядок действий на примере mscomctl.ocx:
- Найдите файл
mscomctl.ocx(идёт с обработкой либо ищется в дистрибутиве компонента). - Скопируйте его в системную папку по разрядности:
- 64-бит система, 32-бит компонент →
C:\Windows\SysWOW64\ - 32-бит система →
C:\Windows\System32\
- 64-бит система, 32-бит компонент →
- Зарегистрируйте из
cmdот администратора:
C:\Windows\SysWOW64\regsvr32.exe C:\Windows\SysWOW64\mscomctl.ocx
- Перезапустите 1С.
⚠️ Не тащите
.ocxиз непроверенных источников. Заражённый компонент — прямой путь к трояну с правами системы. Берите файл только из дистрибутива нужной программы.
Если после регистрации выходит ошибка Модуль загружен, но точка входа DllRegisterServer не найдена — значит, этот файл вообще не является COM-библиотекой и regsvr32 тут не нужен.
Настройка DCOM при подключении по сети
Когда V83.COMConnector цепляется к базе на другом компьютере или к серверу 1С, одной регистрации мало. Нужны настройки DCOM и права.
Что проверить:
- 👤 Пользователь, под которым идёт COM-подключение, должен иметь права на запуск и активацию DCOM-приложения.
- 🔐 В оснастке
dcomcnfg(Службы компонентов → Компьютеры → Мой компьютер → Настройка DCOM) должно быть приложение соединителя с корректными правами. - 🧱 Брандмауэр не должен резать RPC-порты между машинами.
- 🗝️ Учётка должна существовать на обеих машинах (или в домене) с одинаковым паролем.
Для локального подключения (к базе на том же ПК) DCOM настраивать не нужно — хватает регистрации comcntr.dll.
Типичные ошибки при исправлении
Что чаще всего идёт не так:
- ❌ Регистрируют не ту разрядность. Для 32-битной платформы нужен
SysWOW64\regsvr32.exe, а неSystem32. Названия папок в Windows сбивают с толку:SysWOW64— это как раз 32-битные компоненты. - ❌ Забыли права администратора.
regsvr32без админа не пишет в реестр — регистрация не проходит, а ошибка в 1С остаётся. - ❌ Указали старую версию платформы. После обновления путь к
binменяется — регистрируют dll от прошлой версии, а работает уже новая. - ❌ Не перезапустили все сеансы 1С. Фоновый сеанс или служба 1С висит в памяти со старым состоянием. Закрывайте всё, при необходимости — через диспетчер задач.
- ❌ Лечат базу вместо системы. Проверка/исправление конфигурации тут не поможет: класс регистрируется в Windows, а не в базе 1С.
Проверка после исправления
Быстрый чек-лист, чтобы убедиться, что всё встало на место.
Если не помогло
Регистрация прошла, а ошибка Недопустимая строка с указанием класса осталась? Идём дальше по списку.
- Проверьте, тот ли класс не найден. Точный текст ошибки в 1С часто содержит имя класса (
Excel.Application,V83.COMConnectorи т.д.). Регистрируйте именно тот компонент. - Переустановите проблемный компонент. Для Excel/Word — восстановление Office (Панель управления → Программы → Изменить → Восстановить). Для COMConnector — «Изменить» установку платформы и включить компонент.
- Отмените регистрацию и зарегистрируйте заново. Сначала
regsvr32 /u <путь>, потом обычная регистрация — иногда помогает при «битой» записи в реестре. - Проверьте разрядность ещё раз. Это причина №1 из «незакрывающихся». Клиент x86 не увидит 64-битный компонент, даже идеально зарегистрированный.
- Посмотрите права пользователя Windows. Под ограниченной учёткой доступ к COM-объекту может быть закрыт политиками.
💡 Если операцию запускает не человек, а фоновое/регламентное задание на сервере — регистрируйте компоненты под тем аккаунтом, от которого работает служба 1С (
USR1CV8или ваша сервисная учётка).
Проверьте себя
Частые вопросы
Что за ошибка «Недопустимая строка с указанием класса» в 1С 8.3?
-2147221005 (0x800401F3), REGDB_E_CLASSNOTREG — «класс не зарегистрирован». 1С пытается создать COM-объект, а нужная библиотека не прописана в реестре или не установлена.Как исправить ошибку при подключении к другой базе через COM?
comcntr.dll из папки bin актуальной версии платформы командой regsvr32 от администратора. Для 32-битной платформы используйте SysWOW64\regsvr32.exe, для 64-битной — System32\regsvr32.exe.Почему ошибка появляется при выгрузке в Excel?
Проблема в базе 1С или в Windows?
Зарегистрировал dll, но ошибка осталась — что не так?
System32 вместо SysWOW64), не закрыты все сеансы 1С, либо зарегистрирована dll от старой версии платформы. Проверьте эти пункты.Нужно ли настраивать DCOM?
comcntr.dll.Материал подготовлен редакцией 1С 8.3 — независимый справочник. Проверено и обновлено: 12.07.2026. Независимый справочник. Мы не представляем фирму «1С» и не аффилированы с ней.