Ошибка при вызове конструктора 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».

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

Лев Туренко

Ошибка при вызове конструктора (COMОбъект): -2147467225(0x80004027): Этот компонент или приложение содержит отключенные компоненты. После установки x64 версии 1С: Предприятия 8

Описание ошибки:
После установки сервера 1С: Предприятия x64-версии. Ошибка при вызове конструктора (COMОбъект): -2147467225(0x80004027): Этот компонент или приложение содержит отключенные компоненты. Для конструктора Новый COMОбъект(«MSScriptControl.ScriptControl») в коде механизма версионирования конфигурации 1С: Управление торговлей, ред. 10.3, релиз 10.3.55.1. Релиз платформы 1С: Предприятия — 8.3.13.1809. Версия сервера Windows — Windows Server 2008 R2 Datacenter.

Найденные решения:

1С 8 сервер x64, comобъект("msscriptcontrol.scriptcontrol") класс не зарегистрирован

Немного к слову — был удивлен такого рода ошибкой в добавленном в УТ механизме версионирования, который был максимально выдернут из комплексной ред. 1.1 и помещен в Управление торговлей 10.3: при аналогичном переводе конфигурации 1С: Комплексная на сервер x64 на другом сервере (Windows Server 2008 R2 Standart) после перехода ошибка не возникала.

Нажатие на изображении увеличит его
1С 8, Ошибка при вызове конструктора (COMОбъект): -2147467225(0x80004027): Этот компонент или приложение содержит отключенные компоненты, MSScriptControl.ScriptControl, класс не зарегистрирован{ОбщийМодуль.Хеш.Модуль(6)}: Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Этот компонент или приложение содержит отключенные компоненты.

Попытка обращения к поисковику по запросу «1с 8 новый comобъект(«msscriptcontrol.scriptcontrol») класс не зарегистрирован» привела сначала на страницу обсуждения на сайте infostart.ru с темой «выполнение Новый COMОбъект(«MSScriptControl.ScriptControl») на сервере». Указанная страница не помогла в решении, но сдержит достаточную массу предполагаемых потенциальных решений проблемы в других условиях и ссылок на другие ресурсы, которые, возможно, кому-то и смогут помочь. Не сразу, но помог переход по ссылке из вышеуказанного обсуждения в другое обсуждение — «Управляемая консоль запросов (только управляемые формы)» — а с этй страницы переход на конечную, которая окончательно помогла в решении проблемы:

Вызов 32-битных COM-объектов на стороне 64-битного сервера 1С

Описание решения проблемы состояло в создании Приложения COM+ с определенным набором параметров, связанных с MSScriptControl.ScriptControl. Последовательность действий следующая: 

1. Запускаем «Службу компонентов» через командную строку %windir%system32comexp.msc или через «Панель управления» — «Администрирование» — «Службы компонентов».

2. В ветке «Корень консоли» — «Службы компонентов» — «Компьютеры» — «Мой компьютер» — «Приложения COM+» добавляем новое приложение, выбрав пункт контекстного меню «Создать» — «Приложение».

3. Откроется «Мастер установки приложений COM+». На шаге «Установка или создание нового приложения» выбирается вариант «Создать новое приложение».

Нажатие на изображении увеличит его
1C 8, -2147221164(0x80040154): Класс не зарегистрирован для Новый COMОбъект("MSScriptControl.ScriptControl")

4. Шаг «Создание нового приложения». Ввести имя нового приложения. Для удобства понимания можно указать «1C_ScriptControl». Так же выбрать значение «Способа активации» — «серверное приложение».

5. На шаге «»Удостоверение приложения» выбрать учетную запись для запуска приложения — значение «Локальная служба — встроенная учетная запись службы».

6. На шаге «Добавление ролей приложения» оставить по умолчанию.

7. На следующем шаге «Добавление пользователей для ролей» через кнопку «Добавить» для ветки «Users» (пользователи) «Все», выполнив поиск среди пользователей и групп.

8. На следующем шаге на строке «Компоненты» в ветке созданного приложения «1C_ScriptControl» через контекстное меню «Создать» — «Компонент».

Нажатие на изображении увеличит его
1С 8, MSScriptControl.ScriptControl класс не зарегистрирован для Новый COMОбъект

9. И в «Мастере установки компонентов COM+» на первом шаге выбрать вариант «Импорт уже зарегистрированных компонентов». А на следующем шаге «Выбор компонента для импорта» установить флажок «32 разряда» и найти в списке «MSScriptControl.ScriptControl«. Выделить его и нажать «Далее».

1С 8 ошибка на сервере x64, Ошибка при вызове конструктора (COMОбъект): -2147467225(0x80004027): Этот компонент или приложение содержит отключенные компоненты

Важное замечание, если база серверная, то и пользователь, под которым будет выполняться компонента, должен быть таким же, что и тот, под который работает служба «Агент сервера 1С: Предприятие» в службах. Например, если служба агента сервера запущена под локальной системой (локальной системной учетной записью), то и компонент должен быть настроен под учетную запись локальной службы. Или если агент сервера работает под пользователем по умолчанию USR1CV8, то и компонента должна работать под «указанным пользователем».

Нажатие на изображении увеличит его

Еще замечание. Если не указали правильно пользователей на шаге 7, то в последствии другие пользователи могут получать сообщения с содержанием: {ОбщийМодуль.Хеш.Модуль(6)}: Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Отказано в доступе.

Нажатие на изображении увеличит его
1С 8, Ошибка при вызове конструктора (COMОбъект), -2147221164(0x80040154), Отказано в доступе

Тогда в в ветке «Роли» созданного приложения «1C_ScriptControl» нужно корректно настроить пользователей. В данном примере будет добавление прав для группы пользователей. Для этого вызываем контекстное меню и в подменю «Создать» выбираем «Пользователь».

1С 8,

Используя форму «Выбор: пользователи или группы», нажимая на кнопку «Дополнительно…», выполняя «Поиск», находим группу «Все».

1С 8, как устранить, убрать, исправить, ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): отказано в доступе

И последовательно нажимая кнопки «ОК» в формах в результате увидим, что группа «Все» будет добавлена в «Пользователи». После этого отказа в доступе не должно быть. Так же можете настроить и по каждому пользователю в отдельности. Но, кажется, для стабильной работы приложения — это лишнее, и группы пользователей достаточно.

1С 8, отказано в доступе для конструктора (COMОбъект), как убрать, исправить, устранить сообщение

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

22-08-2019

Журавлев А.С.
(Сайт azhur-c.ru)

После обновления платформы, перестал работать код который на сервере. Вываливает «Ошибка при вызове конструктора (COMОбъект): -2147024891(0x80070005): Отказано в доступе.»

&НаСервере

Процедура ТестНаСервере()    

    ComОбъект = Новый COMОбъект(«V83.COMConnector»);

КонецПроцедуры // ТестНаСервере()

Сделал процедурку на клиенте.

&НаКлиенте

Процедура ТестНаКлиенте(Команда)

    ComОбъект = Новый COMОбъект(«V83.COMConnector»);

КонецПроцедуры

На клиенте отрабатывает как надо, создает объект итд.

Перелопатил всё что можно переустанавливал коннектор итд, хоть убейся на серваке работать не хочет. Базы крутится в кластере с двумя серверами. Сиська пару недель назад чистил папку srvinfo. Вчера обновил платформу и всё, конец маршрута. Не знаю куда копать.

Обновлено 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

Ошибка при вызове конструктора (COMObject) по причине: Интерфейс не поддерживается

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

Быстрый переход

  • Особенности
  • Устранение:
    • Может оказаться, что  «Microsoft Excel Application» отсутствует в списке, в данном случае
  • Заключение

Особенности

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

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

Устранение:

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

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

  1. Запускаем REGEDIT
  2. Открываем ветку ComputerHKEY_CLASSES_ROOTAppIDEXCEL.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, поэтому вся обработка перенесена на сервер.

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

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

Реклама – это не выигрывание призов Эффи и Золотых Львов. Это зарабатывание денег рекламодателям.

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове конструктора comобъект v77
  • Ошибка при вызове конструктора comобъект invalid class string
  • Ошибка при вызове конструктора comобъект excel application
  • Ошибка при вызове конструктора comобъект 2147467262
  • Ошибка при вызове конструктора comобъект 2147221005 0x800401f3