Обновлено 13.02.2016
Ошибка 2147221164 0x80040154
Всем привет, сегодня рассмотрим, вопрос из за чего происходит ошибка 2147221164 0x80040154 в 1С и как ее решать. И так немного теории 🙂 , когда информационные базы данных, обмениваются между собой информацией, то они задействуют COM-соединение. И так начинается попытка соединения из конфигурации 8.3 с конфигурацией 8.1, в итоге может выскочить При попытке соединения с COM-сервером произошла следующая ошибка:
Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Класс не зарегистрирован”. Смотрим как решить.
Вот более детально как выглядит ошибка 2147221164
Ошибка 2147221164 0x80040154 в 1С
Ошибка 2147221164 0x80040154 появляется, исключительно на сервере с базой данных, если выполнить соединение локально, все будет ок. На сервере 1С установлены версии 8.1 (x86), 8.2 (x64), 8.3 (x64). Источник проблем в версии 64 битной, так как ей требуется обратиться к 32-х библиотеке comcntr.dll, а на прямую это не реально, что ведет к использованию 64-х битного COM+, который умеет работать с 32-х библиотеками.
Исправляем 2147221164
На сервере 1С выполняем следующие действия.
- Для исправления 2147221164 открываем консоль «Службы компонентов» (Панель управления -> Администрирование -> Службы компонентов).
- В этой консоли открываем Службы компонентов -> Компьютеры -> Мой компьютер. Правый клик по пункту“Приложения COM+”, Создать -> Приложение.
- Далее. В окне «Установка или создание нового приложения» выбираем «Создать новое приложение».
- Вводим понятное имя для нового приложения, например, “V8_ComConnector”, способ активации — «Серверное приложение».
- В качестве учетной записи для запуска приложения выбираем “Указанный пользователь” и через кнопку “Обзор” находим учетку, под которой запускается сервер 1С v 8.3. У нас это локальная учетная запись с именем “USR1CV8”. Следующие 2 экрана можно пропустить (Далее, Далее, Готово) или сделать следующий пункт на втором из них. Мы пропускаем.
- В ветке только что созданного приложения открываем узел «Роли» и в нём роль «CreatorOwner». Правый клик по пункту «Пользователи», Создать -> Пользователь. Здесь выбираем учетку, под которой запускается сервер 1С v 8.3. У нас это локальная учетная запись с именем “USR1CV8”.
- В ветке созданного приложения (“V8_ComConnector”) переходим на узел «Компоненты». Правый клик, Создать -> Компонент. Далее.
- Выбираем «Установка новых компонентов», и в появившемся окне выбираем нужную DLL-ку (C:Program Files (x86)1cv81bincomcntr.dll). Завершаем создание компонента.
- Открываем свойства только что созданного компонента (V81.COMConnector.1), переходим на вкладку «Безопасность», в списке «Явно установленные для выделенных объектов роли» устанавливаем флажок напротив роли “CreatorOwner”.
Все косяка 2147221164 должно уже не быть. Если соединение с базой 8.1 устанавливается из версии 8.2, то нужно в раздел “V8_ComConnector -> Роли -> CreatorOwner -> Пользователи” добавить и пользователя, от имени которого запускается сервер 1С 8.2 (у нас это “USR1CV82”). Как видите, порядок действий не такой сложный и долгий и решает ошибку 2147221164, буквально минут за 15.
Фев 13, 2016 20:19
В этой статье речь пойдет об ошибках в COM-соединениях. Один из вариантов ошибки –
это «Ошибка при вызове конструктора (COMObject):
-2147221164(0x80040154): Класс не зарегистрирован…». Бывают и другие варианты
сообщений, все я перечислять не буду, в большинстве случаев — это означает, что
при установке платформы компонента comcntr.dll не смогла зарегистрироваться
автоматически. COM — соединения используются в обменах между конфигурациями.
У меня в готовых решениях есть обработка
загрузки сотрудников из ЗУП, в которой тоже используется COM — соединение и у
пользователей тоже может появиться ошибка. В случае с моей обработкой, при
проверке соединения, может появиться сообщение, что невозможно установить
соединение с конфигурацией ЗУП. Это
может произойти, если Вы неправильно указали настройки подключения, неправильно
настроены права пользователя, через которого Вы подключаетесь или чаще всего – проблема
в компоненте comcntr.dll, которая при смене платформы автоматически не
зарегистрировалась. Вот и рассмотрим, как ее зарегистрировать вручную.
Первое что нужно сделать, это запустить
командную строку от имени администратора.
В командной строке Windows набираете cmd, в
писке выбора появится программа с таким названием, устанавливаете курсор на эту
программу и выбираете из контекстного меню «Запуск под администратором» (см.
картинку ниже).
Затем ввести команду (можно двумя способами):
1.
regsvr32
«C:Program Files (x86)1cv8[версия платформы]bincomcntr.dll»
2.
C:Program
Files (x86)1cv8[версия платформы]bin>regsvr32 comcntr.dll
Прежде чем ввести эти команды нужно
переместиться по каталогам. Допустим, при запуске командной строки появляется
совсем другой каталог, пример можно увидеть на картинке ниже.
Для смены каталога нужно написать cd, после которого установить пробел, а
затем указать тот путь, который нам нужен, например C:Program Files (x86)1cv8[версия платформы]bin, затем после указания пути к каталогу нажимаете Enter. Смотрите пример смены каталога на
картинке ниже.
Вот теперь
рядом с каталогом можно ввести regsvr32 comcntr.dll, нажать Enter и
зарегистрировать компоненту (смотрите пример на картинке ниже).
Если все
сделали правильно, то получите сообщение (см. картинку ниже).
Если компоненту не удалось
зарегистрировать, проверьте как вы запустили командную строку, возможно, что
забыли запустить от имени администратора. Если все в порядке, то нужно отключить
службу агента сервера 1С:Предприятия и все программы, использующие эту DLL.
После сообщения об успешной регистрации,
можно вновь запустить обмен или обработку, с которой у вас возникли проблемы.
Первая статья в новом 2021 году будет посвящена программе 1С. Это связанна с тем что данное ПО очень распространено. Так как альтернативы пока что нет. К типовым конфигурация претензий практически нет, в них не появляются ошибки, при обновлении, переносе и других манипуляциях. Что нельзя сказать о самопысных конфигурациях или измененных типовых. Как правило занимаются этим программисты не высокого уровня, так как час разработки профессионала стоить достаточно дорого. В результате конечный пользователь получаем огромные проблемы которые возникают после каких либо манипуляций либо с базой или клиентами. Сегодня поговорим об одной интересной ошибки которая появляется при попытке распечатать какой либо документ «Ошибка при вызове конструктора (COMOбъект) класс не зарегистрирован».
Использование COMOбъектов в 1С это прошлый век, сейчас уже ни кто так не пишет. Раньше с его помощью реализовали печать документов. Они выгружались в OpenLibre Office и от туда уже печатались.
Появиться такая ошибка может после
1 Обновления платформы
2 Переустановки ОС и 1С
3 Обновление конфигурации
4 Проблем с офисными пакетами
5 и т.д.
Это самые распространенные.
У меня есть еще несколько статей в которых я рассказывал как можно исправить различные ошибки 1С рекомендую прочитать.
Ошибка при отправке запроса на сервер
При появлении ошибки в 1С нет кнопки подробнее
Как настроить сортировку в отчете
Как сохранить обработку (как внешнюю)
Как указать версию платформы
Как посмотреть изменения в конфигурации
Три способа избавиться от ошибки «Ошибка при вызове конструктора…»
И так после каких либо манипуляций с 1С у вас стала появляться ошибка.
Ошибка при вызове конструктора (COMOбъект): -2147221164(0x80040154) класс не зарегистрирован
Первый способ
Самое простое это переустановить офисные пакеты OpenLibre, так же как вариант если у вас стоял Open поставить Libre и на оборот. Это нужно для того чтобы обновить специальный компонент.
Второй способ
Попробовать зарегистрировать самостоятельно, для этого запускаем командную строку от имени администратора, переходим в каталог введя команду.
cd windowssyswow64
И регистрируем
regsvr32 «C:Program Files (x86)1cv88.3.16.18.14comcntr.dll»
Кстати данную манипуляцию нужно проводить на сервере.
Третий способ
Установить 32 битную версию клиента 1С, можно даже поверх х64. В итоге у вас появиться два ярлычка для запуска, один для х32 второй х64.
Версию можно указать и в ярлыке запуска 1С.
Можно еще попробовать самостоятельно создать COM + , но лично из своего опыта могу сказать это не помогает. Самый действенный вариант это установка х32 клиента. Так как компонента которая необходимо работает только с х32.
Так же проблема может быть непосредственно в самом коде.
В программном обеспечении 1С, как и в любом другом, иногда возникают ошибки. Это не дает софту нормально функционировать и может затормозить работу целой организации. Поэтому нужно знать, как справляться с различными сбоями. В частности, сегодня мы разберем, из-за чего возникает ошибка «2147221164 (0x80040154): Класс не зарегистрирован», и что нужно сделать, чтобы ее исправить.
Содержание
- Когда появляется ошибка 2147221164?
- Справляемся с проблемой
- Регистрируем библиотеку comcntr.dll
- Создаем новое приложение СОМ+
Когда появляется ошибка 2147221164?
Рассматриваемая ошибка появляется из-за конфликта версий 1С, которые в данный момент устанавливают между собой соединение. Разберем подробнее. Информационные БД 1С производят обмен данных при помощи СОМ-соединения. И, если, например, платформа 1С:Предприятие конфигурации 8.3 пытается установить связь с 1С версии 8.1, то на этом этапе при попытке подключения к СОМ-серверу и выскакивает данная ошибка.
Для начала определим, что у сервера 1С есть несколько версий:
- 32-битная 8.1 (х86).
- 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)1cv828.3.XX.XXXXbincomcntr.dll». Нажимаем ОК и, если все прошло корректно, то мы увидим сообщение об успешной регистрации библиотеки.
Создаем новое приложение СОМ+
Если библиотека зарегистрирована, но проблема остается, то кликаем ПКМ по кнопке «Пуск» (для ОС Windows 10) и вызываем «Панель управления». Затем входим в раздел «Система и безопасность», после чего переходим в «Администрирование». Появляется окно, в котором мы ищем строку «Службы компонентов» и открываем ее двойным щелчком ЛКМ. В новой консоли два раза кликаем ЛКМ по папке «Компьютер» и затем «Мой компьютер». Перед нами появляется список папок. ПКМ нажимаем на «Приложения СОМ+» и выбираем «Создать»→«Приложение».
Далее действуем следующим образом.
- В открывшемся Мастере нажимаем «Далее» и, когда в следующем окне нам предложат действие на выбор, кликаем «Создать новое приложение».
- В соответствующей строке присваиваем новому приложению имя, которое будет понятно не только нам, но и другим пользователям при дальнейшей работе, например 1CV8_ComConnect. Здесь же выбираем способ активации – «Серверное приложение».
Введите имя нового приложения 1CV8_ComConnect - Теперь проводим процедуру удостоверения. В поле «Указанный пользователь» при помощи функции «Обзор» ищем учетную запись, под которым будем запускать сервер 1С версии 8.3. (Для примера обозначим ее как User1CV83).
- Пропускаем процедуры, предлагаемые в следующих окнах, и нажимаем кнопку «Готово». Мастер закрывается.
- Возвращаемся в окно «Службы компонентов» и раскрываем ветку нашего только что созданного приложения. Разворачиваем узел «Роли», в которой кликаем на пункт CreatorOwner. ПКМ щелкаем по строке «Пользователи» и создаем нового пользователя. Снова выбираем ту учетную запись, под которой будет запускаться сервер 1С (это та самая User1CV83, о которой шла речь выше).
- Переходим в ветку приложения 1CV8_ComConnect и кликаем ПКМ на узел «Компоненты». Создаем новый компонент.
- В открывшемся Мастере делаем выбор пункта «Установка новых компонентов» и, когда появляется следующее окно, определяем нужную нам библиотеку dll (она находится по пути C:Program Files (x86)1cv81bin). Завершаем работу Мастера.
- У нас появился компонент 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): Класс не зарегистрирован» больше не возникнет.
Опубликовано 20 августа 2018 Обновлено 03 октября 2020
|
|||
skupidom
22.05.19 — 13:24 |
На 1 сервере обновили платформу на 8.3.14.1694,на 2 осталась 8.3.11.3034. |
||
breezee
1 — 22.05.19 — 13:35 |
Переписать на вб-сервисы. |
||
skupidom
2 — 22.05.19 — 13:41 |
а по другому ? |
||
butterbean
3 — 22.05.19 — 13:45 |
(2) https://rusell.livejournal.com/143927.html |
||
skupidom
4 — 22.05.19 — 13:51 |
это уже было проделано как раз и результат — неопределено, при возврате подключения с параметрами из базы Бухгалтерия к Документооброту. |
||
Жан Пердежон
5 — 22.05.19 — 14:33 |
там где наоборот надо установить com от той версии к которой подключаешься. |
||
skupidom
6 — 22.05.19 — 15:11 |
положить в bin 1694 comcntr.dll ? |
||
Жан Пердежон
7 — 22.05.19 — 16:24 |
установить |
||
skupidom
8 — 22.05.19 — 18:09 |
не помогло |
||
ViSo76
9 — 22.05.19 — 18:11 |
64 разрядный клиент и 32 бита компенента может быть. Проверь при запуске в 32-хбитном клиенте |
||
skupidom
10 — 22.05.19 — 18:28 |
компоненту 32-бит попробовать регистрировать ? |
||
skupidom
11 — 22.05.19 — 18:29 |
платформы 1694 |
||
ViSo76
12 — 22.05.19 — 18:34 |
(10) Если 1С 64-ре бита, то добавь базу и укажи в настройках Разрядность 32 (x86). |
||
ViSo76 13 — 22.05.19 — 18:37 |
Вообще проверь к примеру в Excel ( VBA ) компонента присоединяется к проекту ( есть в списке ). |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Ошибки: «Не удалось подключиться к другой программе: Класс не зарегистрирован» и «Процесс сервера не может быть запущен, так как указана неправильная идентификация» при синхронизации, выгрузках и внешних подключениях
Данное сообщение часто можно встретить при анализе журнала регистрации после неудавшейся синхронизации, когда настроено прямое подключение к программе.
1. -2147221164(0x80040154): Класс не зарегистрирован.
Данное сообщение говорит о том, что не зарегистрирована COM-компонента.
Для ее регистрации необходимо запустить командную строку с правами администратора и выполнить regsvr32 [ПутьДоКомпоненты].
После выполнения команды должно появиться сообщение об успешном выполнении регистрации библиотеки.
Однако, даже регистрация компоненты через командую строку “привычным” способом помогает не всегда. В таком случае, необходимо вручную создать COM-приложение.
Новому COM-приложению нужно ввести имя “V83COMConnector” и указать, что приложение является серверным.
Также необходимо обратить внимание, что учетной записью для работы приложения НЕ может быть встроенная учетная запись.
Чтобы избежать нежелательных ошибок, лучше выбрать “указанный пользователь” и указать там администратора.
После успешного создания V83COMConnector появится новое приложение.
Далее в созданном приложении необходимо установить новый компонент через контекстное меню.
Выбрать файл comcntr.dll в каталоге установленной платформы.
В следующем окне можно убедиться, что регистрация через командную строку была ложно-успешной, так как признак “Установлено” компоненты равен “Нет”.
После успешной установки, необходимо перейти к ветке V83COMConnector. В контекстном меню выбрать «Свойства». На вкладке “Безопасность” необходимо снять галку “Принудительная проверка доступа для приложений”. Установить галку «Применить политику программных ограничений» и выбрать уровень ограничений “Неограниченный”. Сохранить параметры.
На этом ручная установка приложения завершена.
2. Процесс сервера не может быть запущен, так как указана неправильная идентификация
Причинами этой ошибки могут быть:
- при ручной регистрации COM-компоненты либо была ука
В программном обеспечении 1С, как и в любом другом, иногда возникают ошибки. Это не дает софту нормально функционировать и может затормозить работу целой организации. Поэтому нужно знать, как справляться с различными сбоями. В частности, сегодня мы разберем, из-за чего возникает ошибка «2147221164 (0x80040154): Класс не зарегистрирован», и что нужно сделать, чтобы ее исправить.
Содержание статьи:
- 1 Когда появляется ошибка 2147221164
- 2 Справляемся с проблемой
- 2.1 Регистрируем библиотеку comcntr.dll
- 2.2 Создаем новое приложение СОМ+
Ошибка «2147221164 (0x80040154): Класс не зарегистрирован» появляется из-за конфликта версий 1С, которые в данный момент устанавливают между собой соединение. Разберем подробнее. Информационные БД 1С производят обмен данных при помощи СОМ-соединения. И, если, например, платформа 1С:Предприятие конфигурации 8.3 пытается установить связь с 1С версии 8.1, то на этом этапе при попытке подключения к СОМ-серверу и выскакивает данная ошибка.
Для начала определим, что у сервера 1С есть несколько версий:
- 32-битная 8.1 (х86).
- 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)1cv828.3.XX.XXXXbincomcntr.dll». Нажимаем ОК и, если все прошло корректно, то мы увидим сообщение об успешной регистрации библиотеки.
Создаем новое приложение СОМ+
Если библиотека зарегистрирована, но проблема остается, то кликаем ПКМ по кнопке «Пуск» (для ОС Windows 10) и вызываем «Панель управления». Затем входим в раздел «Система и безопасность», после чего переходим в «Администрирование». Появляется окно, в котором мы ищем строку «Службы компонентов» и открываем ее двойным щелчком ЛКМ. В новой консоли два раза кликаем ЛКМ по папке «Компьютер» и затем «Мой компьютер». Перед нами появляется список папок. ПКМ нажимаем на «Приложения СОМ+» и выбираем «Создать»→«Приложение».
Далее действуем следующим образом.
- В открывшемся Мастере нажимаем «Далее» и, когда в следующем окне нам предложат действие на выбор, кликаем «Создать новое приложение».
- В соответствующей строке присваиваем новому приложению имя, которое будет понятно не только нам, но и другим пользователям при дальнейшей работе, например 1CV8_ComConnect. Здесь же выбираем способ активации – «Серверное приложение».
Вводим имя нового приложения 1CV8_ComConnect - Теперь проводим процедуру удостоверения. В поле «Указанный пользователь» при помощи функции «Обзор» ищем учетную запись, под которым будем запускать сервер 1С версии 8.3. (Для примера обозначим ее как User1CV83).
Ищем пользователя при помощи функции «Обзор» Конкретные шаги выбора пользователя - Пропускаем процедуры, предлагаемые в следующих окнах, и нажимаем кнопку «Готово». Мастер закрывается.
- Возвращаемся в окно «Службы компонентов» и раскрываем ветку нашего только что созданного приложения. Разворачиваем узел «Роли», в которой кликаем на пункт CreatorOwner. ПКМ щелкаем по строке «Пользователи» и создаем нового пользователя. Снова выбираем ту учетную запись, под которой будет запускаться сервер 1С (это та самая User1CV83, о которой шла речь выше).
- Переходим в ветку приложения 1CV8_ComConnect и кликаем ПКМ на узел «Компоненты». Создаем новый компонент.
- В открывшемся Мастере делаем выбор пункта «Установка новых компонентов» и, когда появляется следующее окно, определяем нужную нам библиотеку dll (она находится по пути C:Program Files (x86)1cv81bin). Завершаем работу Мастера.
- У нас появился компонент 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): Класс не зарегистрирован» больше не возникнет.