Имя: Пароль:
1C
 
ПодключитьВнешнююКомпоненту(): на сервере подключается, но не создаётся...
,
0 dave2000
 
20.11.15
18:35
Платформа 8.3.5.1068, файловая база, управляемые формы.


Компонента, написанная под COM, на клиенте работает нормально, подключалась так:

Если ПодключитьВнешнююКомпоненту("AddIn.MyComponent") Тогда
   Компонента = Новый("AddIn.MyComponent");
КонецЕсли;


Понадобилось перенести её в серверный модуль для регламентного задания. Делаю так:

Если ПодключитьВнешнююКомпоненту("d:\MyComponent.dll", "MyComponent", ТипВнешнейКомпоненты.COM) Тогда
   Попытка
      Компонента = Новый("AddIn.MyComponent");
   Исключение
      СтрОшибка = ОписаниеОшибки();
   КонецПопытки;
КонецЕсли;

Не хочет работать, срабатывает исключение: СтрОшибка="Тип не определен (AddIn.MyComponent)"

Как его заставить работать?
1 dave2000
 
20.11.15
18:36
Компонента написана на C#
2 mehfk
 
20.11.15
18:37
Описание варианта метода:

Компонент должен быть выполнен по технологии COM и зарегистрирован в реестре MS Windows.
Эти компоненты совместимы с компонентами 1С:Предприятия 7.7.
Внимание! Вариант метода не работает на сервере и во внешнем соединении.
3 mehfk
 
20.11.15
18:38
Сторно (2)
4 Serginio1
 
20.11.15
18:42
(0) Зачем тебе ВК на сервере?
5 VikingKosmo
 
20.11.15
18:43
(4) ну например ВК используется в контексте фонового задания
6 H A D G E H O G s
 
20.11.15
18:44
Компонента = Новый("AddIn.MyComponent.MyComponent");
7 Garykom
 
гуру
20.11.15
18:46
(6) только хотел это написать
8 Serginio1
 
20.11.15
18:47
(5) Это понятно. ВК это обычно получение глобального контекста и вызов внешних событий через IAsyncEvent
Хватит и простог Com Объекта
9 Garykom
 
гуру
20.11.15
18:51
(8) на сервере под линукс ))
10 Serginio1
 
20.11.15
18:54
(9) Угу
ПодключитьВнешнююКомпоненту("d:\MyComponent.dll", "MyComponent", ТипВнешнейКомпоненты.COM)
11 dave2000
 
20.11.15
19:15
(6) Спасибо, создать получилось!

А почему нужно именно "AddIn.MyComponent.MyComponent"? Ведь в самой компоненте указано просто [ProgId("AddIn.iTouch")]
12 H A D G E H O G s
 
20.11.15
19:16
(11) Ты префикс задал
ПодключитьВнешнююКомпоненту("d:\MyComponent.dll", "MyComponent", ТипВнешнейКомпоненты.COM) Тогда
2 параметром
13 dave2000
 
20.11.15
19:16
ой, т.е. [ProgId("AddIn.MyComponent")]
14 dave2000
 
20.11.15
19:18
(12) Т.е. сначала указываем то, что прописано в компоненте (AddIn.ИмяКомпоненты), а потом через точку то имя, которое я задал при ПодключитьВнешнююКомпоненту(,Имя)?
15 Смотрящий
 
20.11.15
19:20
Да
16 Serginio1
 
20.11.15
19:21
(0) Кстати у меня к тебе такой вопрос. Динамическая компиляция для использования .Net событий в 1С
позволяет вообще отказаться от написания ВК.
Почему ты не хочешь воспользоваться ей
17 Смотрящий
 
20.11.15
19:23
(16) Нативный код и псевдонативный код меняющийся от релиза к релизу.
Разницу чуешь ?
18 Serginio1
 
20.11.15
19:27
(17) Нет. У него Компонента написана на C#.
В .Net 4.6 вызывается код написанный на .Net 2.0. А конечный машинный код совершенствуется от версии к версии
19 Смотрящий
 
20.11.15
19:29
(18) ... вызывается код написанный на .Net 2.0...
Да?! Чем докажешь ?
20 Serginio1
 
20.11.15
19:36
(19) Да сколько раз подгружал DLL написанных на старых версиях.
https://msdn.microsoft.com/ru-ru/library/jj152935(v=vs.110).aspx
21 Serginio1
 
20.11.15
19:43
22 dave2000
 
20.11.15
20:50
(16) За это не слышал, интересно почитать, спасибо за статейки!
23 Serginio1
 
20.11.15
21:12
(22) У меня их много http://catalog.mista.ru/profile/82159/public/
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс