Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
10 окт 2024, 23:16

COM-интеграция dll

Автор Semyon Basarab, 06 сен 2018, 07:16

0 Пользователей и 1 гость просматривают эту тему.

Semyon Basarab

Доброго времени суток, прошу помощи у знатоков 1С. У меня есть некая dll(которая проверена и работает корректно) и есть код внешней обработки, который эту dll использует. Проект должен быть рабочий, мне нужно лишь настроить соединение, но в этом я не преуспел, поскольку это мое первое мини-знакомство с 1с. Проблема заключается в том, что при попытке создания COM-объекта возникает ошибка:

    Ошибка при вызове конструктора (COMОбъект)
    gth = Новый COMОбъект("Library.ComSdk.Service");
    по причине:
    -2147221164(0x80040154): Class not registered

При повторном нажатии на кнопку и повторном выполнении кода появляется другая ошибка:

    Ошибка при вызове конструктора (COMОбъект)
    gth = Новый COMОбъект("Library.ComSdk.Service");
    по причине:
    -2147024894(0x80070002): The system cannot find the file specified.

dll зарегистрирована через regasm. Перепробовал много всего, и comcntr заново регистрировал через regsvr, и пытался компоненту новую создать, ничего не помогает. В интернете много способов решения проблемы, но почему-то ничего не помогло, может кто-то поможет сузить параметры поиска решения. База находится на локальном компьютере, версия 1с 8.3.9.2033. Выполняю я все это так: создал базу, поставил в настройках галочку для запуска приложения с обычными формами, поскольку с управляемыми формами оно не работает, затем жму отладку и открываю обработку. Может где-то в этих действиях я что-то делаю не так.

alex0402

Цитата: Semyon Basarab от 06 сен 2018, 07:16regasm
что это? зарегистрируй через regsvr32, если компонента 64 бита, то может помочь регистрация в COM+.


Цитата: Semyon Basarab от 06 сен 2018, 07:16comcntr заново регистрировал через regsvr

нужна для того что бы подключаться к 1С через COM.
Спасибо за Сказать спасибо

Semyon Basarab

Цитата: alex0402 от 06 сен 2018, 07:39
что это? зарегистрируй через regsvr32, если компонента 64 бита, то может помочь регистрация в COM+.
Цитировать(Register Assembly) обозначает ее функцию, она отвечает за ввод информации о типе компонента .NET в системный реестр, чтобы службы COM могли к нему обратиться. После регистрации компонента .NET с помощью RegAsm, стандартные клиенты Windows могут сделать позднее соединение с классами компонента. Процесс регистрации компонента должен быть сделан только один раз. После регистрации все клиенты COM могут к нему обращаться.
Поскольку dll написана на С# использую RegAsm, хотя через RegSvr я тоже попробовал, но там выходит ошибка : The module was loaded but the entry-point DllRegisterSerer was not found".
Про регистрацию СОМ+, насколько я понял, это про сервис компонентов? Я создал новое приложение в СОМ+ Applications, добавил туда компонент, но этот файл нельзя выбрать как установить, а только импортировать из уже зарегистрированных(2 пункт на первом шаге при добавлении компонентов).
Еще я обнаружил такой момент, что тест = Новый СОМОбъект("V83.ComConnector"); ошибку не выдает, но насколько я понимаю - это для соединения с сервером, а у меня все локально и мне это не нужно, но может как-то поможет этот факт.

wise

(2) а процедура/функция, которая возвращает ОШИБКУ:

Ошибка при вызове конструктора (COMОбъект)
    gth = Новый COMОбъект("Library.ComSdk.Service");
    по причине:
    -2147221164(0x80040154): Class not registered

выполняется с КАКОЙ директивой компеляции??
ДОЛЖНА  &НаКлиенте
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Теги:
Рейтинг@Mail.ru

Поиск