Доброго времени суток, прошу помощи у знатоков 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. Выполняю я все это так: создал базу, поставил в настройках галочку для запуска приложения с обычными формами, поскольку с управляемыми формами оно не работает, затем жму отладку и открываю обработку. Может где-то в этих действиях я что-то делаю не так.
(9)У Вас 32-битный клиент, а COM-объекты зарегистрированы как x64.
Вам необходимо:
1. Удалить регистрацию СОМ: ПутьКx64\regasm regasm /u "ПолныйПуть\ИмяВашейDLL.dll"
2. Зарегистрировать COM объект как x32: ПутьКx32\regasm /codebase "ПолныйПутьКДЛЛ\ИмяВашейДЛЛ.dll"
3. Создать COM+ приложение для работы x32 COM объектов в x64 ОС:
Примерно как здесь https://infostart.ru/public/839172/
(2) 64, обычная win 10
x64, поскольку компонент написан на C#, то регистрировал я его через:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe
/codebase не использовал
(4) По-моему 64, но я не уверен из-за отсутствия опыта с 1С, я просто установил 1с:Предприятие, создал демо-базу локально, затем я захожу в конфигуратор и запускаю дебаг "Толстый клиент"(видимо 64, раз клиента запускаю здесь же), где уже и открываю внешнюю обработку.
Вообще задача стоит как - запустить внешнюю обработку клиенту, но хоть как-то открыть форму я смог только через запуск "Толстого клиента без управляемых форм", но функционал не работает из-за форм.
(9)У Вас 32-битный клиент, а COM-объекты зарегистрированы как x64.
Вам необходимо:
1. Удалить регистрацию СОМ: ПутьКx64\regasm regasm /u "ПолныйПуть\ИмяВашейDLL.dll"
2. Зарегистрировать COM объект как x32: ПутьКx32\regasm /codebase "ПолныйПутьКДЛЛ\ИмяВашейДЛЛ.dll"
3. Создать COM+ приложение для работы x32 COM объектов в x64 ОС:
Примерно как здесь https://infostart.ru/public/839172/
(10) Спасибо, ошибка исчезла, теперь нормально подключается, правда появилась "ошибка при вызове метода контекста", но это совсем другая история, хотя бы подключилось, буду дальше ковыряться)
(10) Извините за назойливость, но можно у вас еще совета спросить, может быть вы сможете подсказать.
У меня есть один и тот же код, который работает в OneScript, но вылетает в самой 1С при первом же вызове функции СОМ-Объекта. Я сначала предполагал, что проблемы с dll, но проверил в OneScript, и все работает.
Я создал СОМ-объект и при вызове GetSettingService() вылетает: "Ошибка при вызове метода контекста" по причине "Неизвестная ошибка"
pvService = Новый COMОбъект("Library.ComSdk.Service");
pvService.Initialize();
settingService = pvService.GetSettingService();
/* */