Внешняя компонента Native подключение через макет

1. 4way 26.10.18 18:00 Сейчас в теме
Здравствуйте. Такая проблема:
Создал внешнюю компоненту на C#.
Класс AddIn скопипастил.
Класс AddIn.cs

Создал отдельный класс, унаследованный от AddIn
Проблема собственно:
Пытаюсь подключить в 1С. Предварительно зарегистрировал компоненту.
В толстом клиенте все хорошо, компонента работает, функции вызываются.
Чтобы работать в тонком клиенте создал zip файл с манифестом
Manifest.xml

После чего пытаюсь установить компоненту.
ОбработчикУстановки = Новый ОписаниеОповещения("ОбработчикУстановкиКомпоненты", ЭтаФорма);
	НачатьУстановкуВнешнейКомпоненты(ОбработчикУстановки, "ОбщийМакет.testDll");


&НаКлиенте
Процедура ОбработчикУстановкиКомпоненты(Знач ДополнительныеПараметры) Экспорт

	ОбработчикПодключения = Новый ОписаниеОповещения("ОбработчикПодключенияКомпоненты", ЭтаФорма);
	НачатьПодключениеВнешнейКомпоненты(ОбработчикПодключения, "ОбщийМакет.testDll", "Component",ТипВнешнейКомпоненты.Native);

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

&НаКлиенте
Процедура ОбработчикПодключенияКомпоненты(Знач Результат, Знач ДополнительныеПараметры) Экспорт

	НаКлиенте = Результат;

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

Показать


И тут возвращается Ложь

На сервере через
ПодключитьВнешнююКомпоненту("ОбщийМакет.testDll", "Component",ТипВнешнейКомпоненты.Native);


Тоже выдает ложь.

Не пойму что не так, и куда вообще копать в таких случаях?

Спасибо за помощь.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. 4way 26.10.18 18:19 Сейчас в теме
Здравствуйте. Такая проблема:
Создал внешнюю компоненту на C#.
Класс AddIn скопипастил.
Класс AddIn.cs

Создал отдельный класс, унаследованный от AddIn
Проблема собственно:
Пытаюсь подключить в 1С. Предварительно зарегистрировал компоненту.
В толстом клиенте все хорошо, компонента работает, функции вызываются.
Чтобы работать в тонком клиенте создал zip файл с манифестом
Manifest.xml

После чего пытаюсь установить компоненту.
ОбработчикУстановки = Новый ОписаниеОповещения("ОбработчикУстановкиКомпоненты", ЭтаФорма);
	НачатьУстановкуВнешнейКомпоненты(ОбработчикУстановки, "ОбщийМакет.testDll");


&НаКлиенте
Процедура ОбработчикУстановкиКомпоненты(Знач ДополнительныеПараметры) Экспорт

	ОбработчикПодключения = Новый ОписаниеОповещения("ОбработчикПодключенияКомпоненты", ЭтаФорма);
	НачатьПодключениеВнешнейКомпоненты(ОбработчикПодключения, "ОбщийМакет.testDll", "Component",ТипВнешнейКомпоненты.Native);

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

&НаКлиенте
Процедура ОбработчикПодключенияКомпоненты(Знач Результат, Знач ДополнительныеПараметры) Экспорт

	НаКлиенте = Результат;

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

Показать


И тут возвращается Ложь

На сервере через
ПодключитьВнешнююКомпоненту("ОбщийМакет.testDll", "Component",ТипВнешнейКомпоненты.Native);


Тоже выдает ложь.

Не пойму что не так, и куда вообще копать в таких случаях?

Спасибо за помощь.
3. dmpas 418 26.10.18 18:34 Сейчас в теме
у вас компонента COM, а не Native.
4. 4way 26.10.18 19:05 Сейчас в теме +0.3 $m
(3) смена в манифесте не помогла
5. spacecraft 26.10.18 20:56 Сейчас в теме
(4) так сама компонента СОМ. Манифестом тут ничего не изменить.
6. 4way 27.10.18 00:07 Сейчас в теме
(5) хорошо, как мне к ней подключится через ComОбъект?
7. 4way 27.10.18 00:26 Сейчас в теме
(5)и почему это работает через толстый клиент?
8. uno-c 264 27.10.18 18:33 Сейчас в теме
На днях как раз про подобное статья подвернулась: https://infostart.ru/public/317865/
9. uno-c 264 01.11.18 15:49 Сейчас в теме
Суть оказалась вот в чем. Скомпилированные C# exe-программы и dll-библиотеки - это не обычный исполняемый процессором код, а псевдокод (байт-код) MSIL. Чтобы его выполнить - нужно предварительно перевести в исполнимый процессором код, чем занимается исполнительная среда CLR .Net-a, и делает она это непосредственно когда мы запускаем exe-шник, полученный после компиляции C#. Метод же ПодключитьВнешнююКомпоненту как и виндовский regsvr32.exe - работают с обычным процессорным кодом, а не байткодом CIL.

Решение: библиотеки на байткоде нужно регистрировать с помощью программы regasm.exe, тогда пропишутся их зависимости от исполнительной среды CLR, и они станут доступны для COM-клиентов. Таким образом, подключить библиотеку на псевдокоде с помощью ПодключитьВнешнююКомпоненту() не получится, но если ее один раз вручную зарегистрировать через regasm.exe, то из 1С можно будет сразу обращаться к зарегистрированному классу через Новый COMОбъект()
KolBbl4; vvp117; acanta; +3 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот