Ошибка при вызове конструктора com объект

Содержание:

1.     Что такое COM и COM объект 1С

         COM – это объектная модель данных, выстроенная на Майкрософт компоненте, которая является независимой от платформы и распределённой объектной системой. Данная объектная модель служит для создания компонентов в двоичном программном обеспечении, при условии взаимодействия компонентов.

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

         Рассмотрим, что такое COM объект 1С – это некий объект, доступ к данным которого можно получить только при помощи функций, которые связаны. Набор из таких функций называют интерфейсом платформы 1С, а функции внутри наборов называются методами.

         Помимо этого, в модели COM сервера 1С необходимо, чтобы для получения доступа к интерфейсным методам нужно было обращаться к указателям на интерфейсы платформы 1С.   

2.     Ошибка вызова конструктора COMОбъекта в 1С

         Ошибка возникает в некоторых случаях, когда бывает, что во время установки системы 1С не регистрируется файл с названием «comcntr.dll», из-за чего работать с COM соединением сервера 1С нельзя ни при каких условиях.

         В этом случае, при решении ошибки, важно учитывать нюансы при работе с операционной системой Windows (при этом, версия Windows должна быть выше XP, т.е. будем рассматривать выход для новых версий) и с администрированием системы 1С.   

3.     Устранение ошибки при вызове конструктора COMОбъект

Ошибка при вызове конструктора COMОбъект в 1С имеет следующее отображение: «2147221164 (0х80040154): Класс не зарегистрирован» либо «Ошибка при вызове конструктора COMОбъект: Недопустимая строка с указанием класса 1С»), вид ошибки представлен на скриншоте ниже:

Выполняем такие действия:

·        Для начала, переходим в режим администратора и запускаем командную строку. Важно обратить внимание, что в командной строке должно быть написано: «C:windowssystem32» (либо 64 в конце, если это 64-х битная версия операционной системы). Получаем, что корректный путь для корневой строки должен выглядеть таким образом:

·        Следующий шаг – это написать команду «regsvr32», она будет выглядеть так: «C:Program Files1cv88.3.ХХ.ХХХХbincomcntr.dll». Стоит отметить, что нужно прописать свой точный номер релиза платформы, а путь к самой библиотеке нужно брать в кавычки, конечный итог продемонстрирован ниже:

После этих действий, ошибка полностью устранена. В скриншотах-примерах была показана версия платформы 1С под номером «8.3.11.2867 х64».

Специалист компании «Кодерлайн»

Лев Туренко

  • Главная
  •  / 
  • Статьи
  •  / 
  • Программирование на 1С:Предприятие
  •  / 
  • Ошибка 1С «Ошибка при вызове конструктора comobject

Объект V81.Application выполняется в рамках нового процесса 1cv8.exe.

Объект V81.COMConnector является внутрипроцессным сервером. На удаленном компьютере нет процесса, в котором он может быть создан.

Чтобы объект V81.COMConnector можно было создать на удаленном компьютере, регистрации компоненты comcntr.dll в COM утилитой regsvr32.exe недостаточно. Требуется выполнить регистрацию на удаленном компьютере компоненты comcntr.dll в качестве приложения COM+.


Для этого:

  • запустите утилиту Component Services;
  • создайте пустое COM+ приложение с:
    • Activation type — Server application;
    • именем, например, V81_COMConnector;
    • укажите имя пользователя Windows, от имени которого компонента будет запускаться специальный процесс dllhost.exe;
  • в ветке Components добавьте новую компоненту comcntr.dll из каталога загрузочных модулей 1С:Предприятия.

В результате при создании объекта V81.COMConnector на удаленном компьютере будет запущен специальный системный процесс dllhost.exe, и в нем будет создан объект V81.COMConnector.


ошибка при вызове конструктора comobject класс не зарегистрирован

Объект V81.Application выполняется в рамках нового процесса 1cv8.exe.

Объект V81.COMConnector является внутрипроцессным сервером. На удаленном компьютере нет процесса, в котором он может быть создан.

Чтобы объект V81.COMConnector можно было создать на удаленном компьютере, регистрации компоненты comcntr.dll в COM утилитой regsvr32.exe недостаточно. Требуется выполнить регистрацию на удаленном компьютере компоненты comcntr.dll в качестве приложения COM+.


Для этого:

  • запустите утилиту Component Services;
  • создайте пустое COM+ приложение с:
    • Activation type — Server application;
    • именем, например, V81_COMConnector;
    • укажите имя пользователя Windows, от имени которого компонента будет запускаться специальный процесс dllhost.exe;
  • в ветке Components добавьте новую компоненту comcntr.dll из каталога загрузочных модулей 1С:Предприятия.

В результате при создании объекта V81.COMConnector на удаленном компьютере будет запущен специальный системный процесс dllhost.exe, и в нем будет создан объект V81.COMConnector.

Возврат к списку

Первая статья в новом 2021 году будет посвящена программе 1С. Это связанна с тем что данное ПО очень распространено. Так как альтернативы пока что нет. К типовым конфигурация претензий практически нет, в них не появляются ошибки, при обновлении, переносе и других манипуляциях. Что нельзя сказать о самопысных конфигурациях или измененных типовых. Как правило занимаются этим программисты не высокого уровня, так как час разработки профессионала стоить достаточно дорого. В результате конечный пользователь получаем огромные проблемы которые возникают после каких либо манипуляций либо с базой или клиентами. Сегодня поговорим об одной интересной ошибки которая появляется при попытке распечатать какой либо документ «Ошибка при вызове конструктора (COMOбъект) класс не зарегистрирован».

Использование COMOбъектов в 1С это прошлый век, сейчас уже ни кто так не пишет. Раньше с его помощью реализовали печать документов. Они выгружались в OpenLibre Office и от туда уже печатались.

Появиться такая ошибка может после

1 Обновления платформы

2 Переустановки ОС и 1С

3 Обновление конфигурации

4 Проблем с офисными пакетами

5 и т.д.

Это самые распространенные.

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

Ошибка при отправке запроса на сервер

При появлении ошибки в 1С нет кнопки подробнее

Как настроить сортировку в отчете

Как сохранить обработку (как внешнюю)

Как указать версию платформы

Как посмотреть изменения в конфигурации

Три способа избавиться от ошибки «Ошибка при вызове конструктора…»

И так после каких либо манипуляций с 1С у вас стала появляться ошибка.

Ошибка при вызове конструктора (COMOбъект): -2147221164(0x80040154) класс не зарегистрирован

Ошибка при вызове конструктора (COMOбъект) класс не зарегистрирован
Ошибка при вызове конструктора (COMOбъект): -2147221164(0x80040154) класс не зарегистрирован

Первый способ

Самое простое это переустановить офисные пакеты OpenLibre, так же как вариант если у вас стоял Open поставить Libre и на оборот. Это нужно для того чтобы обновить специальный компонент.

Второй способ

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

cd windowssyswow64

И регистрируем

regsvr32 «C:Program Files (x86)1cv88.3.16.18.14comcntr.dll»

-2147221164(0x80040154) класс не зарегистрирован

Кстати данную манипуляцию нужно проводить на сервере.

Третий способ

Установить 32 битную версию клиента 1С, можно даже поверх х64. В итоге у вас появиться два ярлычка для запуска, один для х32 второй х64.

Ошибка при вызове конструктора (COMOбъект)

Версию можно указать и в ярлыке запуска 1С.

Ошибка при вызове конструктора (COMOбъект):  класс не зарегистрирован

Можно еще попробовать самостоятельно создать COM + , но лично из своего опыта могу сказать это не помогает. Самый действенный вариант это установка х32 клиента. Так как компонента которая необходимо работает только с х32.

Так же проблема может быть непосредственно в самом коде.

Обновлено 13.02.2016

Ошибка 2147221164 0x80040154 в 1С

Ошибка 2147221164 0x80040154

Всем привет, сегодня рассмотрим, вопрос из за чего происходит ошибка 2147221164 0x80040154 в 1С и как ее решать. И так немного теории 🙂 , когда информационные базы данных, обмениваются между собой информацией, то они задействуют COM-соединение. И так начинается попытка соединения из конфигурации 8.3 с конфигурацией 8.1, в итоге может выскочить При попытке соединения с COM-сервером произошла следующая ошибка:

Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Класс не зарегистрирован”. Смотрим как решить.

Вот более детально как выглядит ошибка 2147221164

Ошибка 2147221164-2

Ошибка 2147221164 0x80040154 в 1С

Ошибка 2147221164 0x80040154 появляется, исключительно на сервере с базой данных, если выполнить соединение локально, все будет ок. На сервере 1С установлены версии 8.1 (x86), 8.2 (x64), 8.3 (x64). Источник проблем в версии 64 битной, так как ей требуется обратиться к  32-х библиотеке comcntr.dll, а на прямую это не реально, что ведет к использованию 64-х битного COM+, который умеет работать с 32-х библиотеками.

Исправляем 2147221164

На сервере 1С выполняем следующие действия.

  1. Для исправления 2147221164 открываем консоль «Службы компонентов» (Панель управления -> Администрирование -> Службы компонентов).
  2. В этой консоли открываем Службы компонентов -> Компьютеры -> Мой компьютер. Правый клик по пункту“Приложения COM+”, Создать -> Приложение.
  3. Далее. В окне «Установка или создание нового приложения» выбираем «Создать новое приложение».
  4. Вводим понятное имя для нового приложения, например, “V8_ComConnector”, способ активации — «Серверное приложение».
  5. В качестве учетной записи для запуска приложения выбираем “Указанный пользователь” и через кнопку “Обзор” находим учетку, под которой запускается сервер 1С v 8.3. У нас это локальная учетная запись с именем “USR1CV8”. Следующие 2 экрана можно пропустить (Далее, Далее, Готово) или сделать следующий пункт на втором из них. Мы пропускаем.
  6. В ветке только что созданного приложения открываем узел «Роли» и в нём роль «CreatorOwner». Правый клик по пункту «Пользователи», Создать -> Пользователь. Здесь выбираем учетку, под которой запускается сервер 1С v 8.3. У нас это локальная учетная запись с именем “USR1CV8”.
  7. В ветке созданного приложения (“V8_ComConnector”) переходим на узел «Компоненты». Правый клик, Создать -> Компонент. Далее.
  8. Выбираем «Установка новых компонентов», и в появившемся окне выбираем нужную DLL-ку (C:Program Files (x86)1cv81bincomcntr.dll). Завершаем создание компонента.
  9. Открываем свойства только что созданного компонента (V81.COMConnector.1), переходим на вкладку «Безопасность», в списке «Явно установленные для выделенных объектов роли» устанавливаем флажок напротив роли “CreatorOwner”.

Все косяка 2147221164 должно уже не быть. Если соединение с базой 8.1 устанавливается из версии 8.2, то нужно в раздел “V8_ComConnector -> Роли -> CreatorOwner -> Пользователи” добавить и пользователя, от имени которого запускается сервер 1С 8.2 (у нас это “USR1CV82”). Как видите, порядок действий не такой сложный и долгий и решает ошибку 2147221164, буквально минут за 15.

Фев 13, 2016 20:19

Перейти к содержимому

Настройка 1С

Решения по использованию программ 1С. Техподдержка. Сопровождение. Услуги программистов.

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

На что обратить внимание

  1. Зарегистрируйте библиотеку comcntr вручную. При выполнении операции или открытия командной строки используйте запуск от имени администратора (полные права).

Например,
regsvr32 «C:Program Files1cv88.3.xx.xxxxbincomcntr.dll»
или
regsvr32 «C:Program Files (x86)1cv88.3.xx.xxxxbincomcntr.dll»

, где 8.3.xx.xxxx — версия целевой технологической платформы. Путь к каталогу «Program Files» зависит от разрядности вашей ОС и клиента 1С.

До сообщения «Успешное выполнение DllRegisterServer в [путь_компоненты]».

★ Возможно, потребуется удалить или отменить регистрацию старой версии, которая была ранее активна (запуск regsvr32 с ключом «/u» — отмена регистрации через DllUnregisterServer).

  1. Проверьте соответствие разрядности библиотеки и клиента 1С, который вызывает com-коннектор.
  2. Проверьте настройки в «Администрирование — Службы компонентов — Приложения COM+ — V83COMConnector» с помощью оснастки comexp. Подробная регистрация коннектора — в заметке (п. 3).
  3. Перезагрузите ПК.

Бывает, что программа установки не может автоматически зарегистрировать новую DLL, поэтому приходится делать регистрацию comcntr из каталога bin установленной версии вручную.

Не получается? Зовите на помощь ИТ-специалиста или обратитесь с нашим джедаям техподдержки → +7-911-500-10-11

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка при вызове конструктора httpсоединение установлен безопасный режим
  • Ошибка при вызове внутренней функции outlook 2016
  • Ошибка при вызове конструктора ftpсоединение
  • Ошибка при вызове pkcs7расшифровать менеджера криптографии 1с

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии