Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ActiveX на .Net и 1C++ (число прочтений - 1824 )
Thorvardr
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 15
Зарегистрирован: 21. Декабря 2007
ActiveX на .Net и 1C++
17. Марта 2010 :: 11:06
Печать  
Операционная система: Windows 7 64bit
1С: 7.70.027
1С++: 2.5.0.7
MS Developer Studio 2010, MS VB .Net
Использованная в проекте версия Framework = 2.0
===================================
Написал ActiveX, подписал, зарегистрировал в операционке. Замечательно подключается и работает в 1С. Но есть одна проблемка. Никак не могу поймать событие, порождаемое контролом.
Сделано так:
Public Class MyForm
    Public Event Test()
...
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
         RaiseEvent Test()
     End Sub
End Class

в 1С ловлю так:
Процедура ФТочкаВхода_Test()
    Сообщить("Есть срабатывание");
КонецПроцедуры

Как способ решения имеется компонент-контейнер для подключения таких объектов "Душелов.NetControlInserter1C". Если подключить мой контрол через него, то, возможно, оно и заработает, сейчас попробую. Но все таки, вопрос: как добиться того, чтобы 1С ловила события без такого промежуточного компонента? Интересно было бы посмотреть исходники этой NetControlInserter1C Улыбка
В чем вообще подводный камень? Душелов же добился как то нормальной передачи событий
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ActiveX на .Net и 1C++
Ответ #1 - 17. Марта 2010 :: 12:15
Печать  
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Thorvardr
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 15
Зарегистрирован: 21. Декабря 2007
Re: ActiveX на .Net и 1C++
Ответ #2 - 17. Марта 2010 :: 12:20
Печать  
Да, да, эту тему я читал, но не помогла она мне. Я пример в вопросе попроще написал, а в реальном проекте у меня как раз событие должно в 1С передать значение, а последние сообщения в том посте и были о том, что с этим есть проблемы. И я что то туплю, не понял почему у меня ругалка идет на метод компоненты Душелова "ДобавитьКонтрол", дескать, метод не описан в подключенном объекте. Пишу так:
Перем Контейнер;
Процедура ПослеОткрытия()
     Контейнер = СоздатьОбъект("АктивИкс");
     Контейнер.УстановитьАтрибут(Форма, "АктХ");
     Контейнер.СоздатьЭУ("Душелов.NetControlInserter1C");
     Контейнер.УстановитьФокус();
     Контейнер.ДобавитьКонтрол("ric319.WebCamForm", "C:\test\RIC319.dll", "ric319.WebCamForm");
КонецПроцедуры

Процедура АктХ_ПриВозникновенииСобытия(Событие, Параметры)
    Сообщить(Событие);
КонецПроцедуры
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ActiveX на .Net и 1C++
Ответ #3 - 17. Марта 2010 :: 12:35
Печать  
Thorvardr писал(а) 17. Марта 2010 :: 12:20:
Да, да, эту тему я читал, но не помогла она мне. Я пример в вопросе попроще написал, а в реальном проекте у меня как раз событие должно в 1С передать значение, а последние сообщения в том посте и были о том, что с этим есть проблемы.

С параметрами проблемы были, но события то вызывались, а у тебя в #0 и этого нет.

События из .NET ещё v7CLR: ВК для работы с .NET-типами без CCW умеет.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Thorvardr
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 15
Зарегистрирован: 21. Декабря 2007
Re: ActiveX на .Net и 1C++
Ответ #4 - 17. Марта 2010 :: 13:03
Печать  
Сегодня не мой день Улыбка
Сделал так:

Процедура ПослеОткрытия()
    ПутьКФайлу=КаталогИБ();
    ПутьКФайлу=ПутьКФайлу+?(Прав(ПутьКФайлу,1)="\","","\")+"Внешние компоненты\v7CLR.dll";
     
    Если ФС.СуществуетФайл(ПутьКФайлу)=0 Тогда
           Предупреждение("Не найден файл "+ПутьКФайлу);
           Возврат;
    КонецЕсли;
     
    Попытка
       ЗагрузитьВнешнююКомпоненту(ПутьКФайлу);
    Исключение
       Предупреждение("Пытались, но не загрузили компоненту 1С++ Печаль");
       Возврат;
    КонецПопытки;

    Factory=СоздатьОбъект("CLRFactory");
     
    К=Factory.CreateControl(Форма.АктХ,"RIC319.WebCamForm, RIC319, Version=1.0.3728.29485, Culture=neutral, PublicKeyToken=d258b3b6b2f98426");
    К.ПривязатьСобытияККонтексту(Контекст,"ф_");
КонецПроцедуры

Процедура ф_ShotMaked(Арг)
    Сообщить(Арг);
КонецПроцедуры

Валится 1С на ".CreateControl". Ладно, завтра еще покопаюсь.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать