2147221164 класс не зарегистрирован

Введение

Случается, что при попытке подключения к информационной базе через com-соединение возникает ошибка при вызове конструктора (COMОбъект): «Класс не зарегистрирован» или «Недопустимая строка с указанием класса». Причем стандартная регистрация компоненты comcntr.dll из папки bin установленной платформы так же не помогает и «ругается» на то что точка входа в систему не определена.

Все эти ошибки несут в себе смысл того, что класс V8ххх.COMConnector (где ххх -2-ая или 3-я редакция платформы 1Сv8) не зарегистрирован в системе. Для устранения этой ошибки следует зарегистрировать указанный компонент, причем лучше всего это произвести с помощью службы компонентов операционной системы Windows.

ближайщие

Порядок регистрации компонента V8ххх.COMConnector.

1. Заходим в Панель управления → Администрирование → Службы компонентов.

2. Переходим к ветке Компьютеры → Мой компьютер → Приложения COM+.

3. В контекстном меню выбираем Создать → Приложение. Откроется Мастер установки приложений COM+.

3. В контекстном меню выбираем Создать → Приложение. Откроется Мастер установки приложений COM+.

4. Нажимаем «Далее».

5. Выбираем «Создать новое приложение».

6. Вводим имя «V82COMConnector». Устанавливаем переключатель «Серверное приложение». Нажимаем «Далее».

7. На следующем шаге устанавливаем «Текущий пользователь». Нажимаем «Далее».

8. Нажимаем «Готово».

9. В появившейся ветке «V8хххCOMConnector» переходим к подчиненный каталог » Компоненты».

10. В контекстном меню выбираем Создать → Компонент. Откроется Мастер установки компонентов COM+.

11. Нажимаем «Далее»

12. Выбираем «Установка новых компонентов».

13. Выбираем файл <ваш каталог платформы 1С>\bin\comcntr.dll.

14. Нажимаем «Далее» → «Готово».

15. Переходим к ветке V8хххCOMConnector.

16. В контекстном меню выбираем «Свойства». В открывшемся окне переходим на вкладку «Безопасность».

17. Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку «Применить политику программных ограничений». Устанавливаем Уровень ограничений — «Неограниченный».

18. Нажимаем «ОК».

ОС: Windows Server 2012R2. Сервер 1С x64.Клиент 1С v8.3.5.1186

Проблема :

Скачал Windows Script Control
Зарегистрировал: regsvr32 <Путь к установленному Windows Script Control >
Не помогло.
Решение:

  1. Запустил консоль «Службы компонентов» (%windir%\system32\comexp.msc)
  2. В ветке Приложения COM+ добавл новое приложение: Создать -> Приложение
  3. На вопрос «Установка или создание нового приложения» — выбрал «Создать новое приложение».
  4. Имя нового приложения лучше написать чтобы было понятно о чем речь: «1С_ScriptControl», способ активации — «серверное приложение».
  5. Учетная запись для запуска приложения: Локальная служба — встроенная учетная запись службы.
  6. При запросе членов Роли CreatorOwner, помимо существующей учетной записи, добавил туда System и учетную запись под которой работает сервер 1С.
  7. В ветке созданного приложения перешел на «Компоненты» и создал компонент: Создать -> Компонент
  8. В мастере «Установка компонентов COM+», выбрал «Импорт уже зарегистрированных компонентов». На шаге «Выбор компонентов для импорта» поставил флаг 32 разряда, нашел «MSScriptControl»

Проверяем в 1С — работает.

В программном обеспечении 1С, как и в любом другом, иногда возникают ошибки. Это не дает софту нормально функционировать и может затормозить работу целой организации. Поэтому нужно знать, как справляться с различными сбоями. В частности, сегодня мы разберем, из-за чего возникает ошибка «2147221164 (0x80040154): Класс не зарегистрирован», и что нужно сделать, чтобы ее исправить.

Когда появляется ошибка 2147221164?

Рассматриваемая ошибка появляется из-за конфликта версий 1С, которые в данный момент устанавливают между собой соединение. Разберем подробнее. Информационные БД 1С производят обмен данных при помощи СОМ-соединения. И, если, например, платформа 1С:Предприятие конфигурации 8.3 пытается установить связь с 1С версии 8.1, то на этом этапе при попытке подключения к СОМ-серверу и выскакивает данная ошибка.

Для начала определим, что у сервера 1С есть несколько версий:

  1. 32-битная 8.1 (х86).
  2. 64-битные 8.2 и 8.3 (х64).

Неполадки появляются на самом сервере с БД. Корень проблемы в том, что версии 1С архитектуры х64 не могут напрямую обратиться к 32-битной библиотеке comcntr.dll. В этом случае соединение происходит при помощи приложений СОМ+, способных взаимодействовать с библиотеками х86.

Читайте также: Неверный формат хранилища данных 1C 8.3 как исправить.

Справляемся с проблемой

Заканчиваем с теорией и переходим к практике – пробуем исправить ошибку «2147221164 (0x80040154): Класс не зарегистрирован».

Регистрируем библиотеку comcntr.dll

Ошибка может проявиться, если не зарегистрирована библиотека comcntr.dll. Решаем ее следующим образом. Вызываем строку «Выполнить» (кликнув ПКМ по кнопке «Пуск») и вводим regsvr32.exe «C:\Program Files(86)\1cv82\8.3.XX.XXXX\bin\comcntr.dll». Нажимаем ОК и, если все прошло корректно, то мы увидим сообщение об успешной регистрации библиотеки.

Создаем новое приложение СОМ+

Если библиотека зарегистрирована, но проблема остается, то кликаем ПКМ по кнопке «Пуск» (для ОС Windows 10) и вызываем «Панель управления». Затем входим в раздел «Система и безопасность», после чего переходим в «Администрирование». Появляется окно, в котором мы ищем строку «Службы компонентов» и открываем ее двойным щелчком ЛКМ. В новой консоли два раза кликаем ЛКМ по папке «Компьютер» и затем «Мой компьютер». Перед нами появляется список папок. ПКМ нажимаем на «Приложения СОМ+» и выбираем «Создать»→»Приложение».

Далее действуем следующим образом.

  1. В открывшемся Мастере нажимаем «Далее» и, когда в следующем окне нам предложат действие на выбор, кликаем «Создать новое приложение».
  2. В соответствующей строке присваиваем новому приложению имя, которое будет понятно не только нам, но и другим пользователям при дальнейшей работе, например 1CV8_ComConnect. Здесь же выбираем способ активации – «Серверное приложение».

    Введите имя нового приложения 1CV8_ComConnect

  3. Теперь проводим процедуру удостоверения. В поле «Указанный пользователь» при помощи функции «Обзор» ищем учетную запись, под которым будем запускать сервер 1С версии 8.3. (Для примера обозначим ее как User1CV83).
  4. Пропускаем процедуры, предлагаемые в следующих окнах, и нажимаем кнопку «Готово». Мастер закрывается.
  5. Возвращаемся в окно «Службы компонентов» и раскрываем ветку нашего только что созданного приложения. Разворачиваем узел «Роли», в которой кликаем на пункт CreatorOwner. ПКМ щелкаем по строке «Пользователи» и создаем нового пользователя. Снова выбираем ту учетную запись, под которой будет запускаться сервер 1С (это та самая User1CV83, о которой шла речь выше).
  6. Переходим в ветку приложения 1CV8_ComConnect и кликаем ПКМ на узел «Компоненты». Создаем новый компонент.
  7. В открывшемся Мастере делаем выбор пункта «Установка новых компонентов» и, когда появляется следующее окно, определяем нужную нам библиотеку dll (она находится по пути C:\Program Files (x86)\1cv81\bin\). Завершаем работу Мастера.
  8. У нас появился компонент 1CV81.ComConnect.1. Кликаем по нему ПКМ и открываем пункт «Свойства». Во вкладке «Безопасность» находим перечень «Явно установленные для выделенных объектов роли» и ставим флажок напротив CreatorOwner.

Может быть вам полезно: Обнаружено нарушение целостности системы в 1C что делать.

Мы рассмотрели соединение с базой из программы 1С:Предприятие версии 8.3. Если планируется устанавливать коннект с БД 8.1 из версии 1С 8.2, то нужно добавить нового пользователя. Переходим по пути 1CV8_ComConnect → Роли → CreatorOwner → Пользователи и добавляем новую учетную запись User1CV82, под которой будет производиться запуск сервера 1С версии 8.2.

Если спокойно и внимательно следовать алгоритму, то исправление ошибки на деле окажется простым и быстрым. Благодаря вышеописанным действиям программа 1С версий 8.2 и 8.3 сможет обратиться за информацией к библиотеке comcntr.dll и ошибка «2147221164 (0x80040154): Класс не зарегистрирован» больше не возникнет.

Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83’

Часто бывает, что при настроенной синхронизации после обновления платформы появляется ошибка «Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ отличается от версии корневого модуля ‘core83′». Так происходит потому, что автоматически не зарегистрировалась компонента comcntr.dll из-за проблем с правами пользователя на компьютере.

Решить данную проблему можно двумя способами.

Способ №1.

Переустановить платформу под правами Администратора или под пользователем, у которого есть такие права.

Способ №2.

Если не получилось как в способе №1, то можно вручную зарегистрировать самому эту компоненту.

Перед этим нам необходимо изменить Параметры контроль учетной записи.

Для Windows 7 нам необходимо зайти в Пуск затем в Панель управления.

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Панель управления и перейти по открывшейся ссылке.

В правом верхнем углу Панели управления выбрать Просмотр-Мелкие значки и затем в списке перейти в Учетные записи пользователей.

Там выбрать Изменить параметры контроля учетных записей.

Затем поставить ползунок в самом нижнем положении.
И перезапустить компьютер.

После перезагрузки необходимо:

Для Windows 7 надо перейти в Пуск, затем в строке поиска ввести cmd.exe,нам покажет что найдена Командная строка и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

Для Windows 10 нам необходимо в левом нижнем углу панели задач в строке поиска набрать Командная панель или cmd.exe и, щелкнув по ней правой клавишей мыши, выбрать «Запуск от имени администратора».

У нас откроется Командная строка, где нам необходимо ввести команду:

1.Для платформы x86

2.Для платформы х64

Затем нажать клавишу Enter.

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

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

Ошибка происходит при попытке загрузить из Excel в 1С, когда код обработчика выполняется не на клиенте, а на сервере и в большинстве случаев текст ошибки говорит об отсутствии прав у пользователя сервера 1С.

Особенности

Кодом со стороны 1С без изменения места исполнения не устраняется, использование других функций подключения Com также не дает положительных результатов.

Убедиться в причине ошибки возможно, если посмотреть логи системы.

Устранение:

  • на сервере убиваем excel (taskkill /im excel.exe /f)
  • открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
  • в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
  • справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем пользователя с администраторскими правами, ОК.

Может оказаться, что «Microsoft Excel Application» отсутствует в списке, в данном случае

  1. Запускаем REGEDIT
  2. Открываем ветку Computer\HKEY_CLASSES_ROOT\AppID\EXCEL.EXE, если ее нет, то создаем
  3. Создаем в ней строковый параметр AppID = {00020812-0000-0000-C000-000000000046}
  4. Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты.
  5. После этого в Component Services должен появиться «Microsoft Excel Application»

Чтобы решить эту проблему, я включил пользователя USRV82, под которым запускается сервер приложений 1С Предприятия 8.3, в группу Distributed COM Users, но ошибка сразу не ушла, потребовалась перезагрузка.

Для правки использовалась оснастка Локальные пользователи и группы (lusrmgr.msc) — это инструмент, предназначенный для управления локальными пользователями и группами. Локальный пользователь или группа — это учетная запись, которой могут быть предоставлены разрешения и права на вашем компьютере.

Осложняло проблему то, что ошибка плавала: периодически выходила, либо в момент создания объекта, либо уже в момент вызова методов excel-application.

Так что нельзя однозначно сказать, что же решило проблему.

В большинстве случаев уйти от дополнительной настройки операционной системы возможно, если использовать вызова Com-Объекта на клиенте. При правильной установке объектов они работают даже при различных по битности 1с и Excel, OS.

В моем же случае клиентские компьютеры работали на Ubuntu, поэтому вся обработка перенесена на сервер.

Бывает такое: вы прописываете для компонента пользователя и пароль.

Затем через некоторое время меняете пароль и компонент перестает работать: выходит такая же ошибка «Интерфейс не поддерживается». Следует просто вбить новый пароль.