Вход | Регистрация
    1  2
1С:Предприятие :: 1С:Предприятие 8 общая

Очень нужен шаблон внешней компоненты для 1С 8 (не 7.7) на Visual Basic-е

Очень нужен шаблон внешней компоненты для 1С 8 (не 7.7) на Visual Basic-е
Я
   Cyrix
 
04.05.19 - 22:43
Здравствуйте!
Кто знает, как написать внешнюю компоненту для 1С 8 не на Visual C++ а на Visual Basic 6 ?
На диске ИТС какой-то бред для 8.0, который не работает. Мне необходимо ПодключитьВнешнююКомпоненту("TestVK.dll","Test",ТипВнешнейКомпоненты.Native)
затем ВК = Новый ("AddIn.TestVK");
ВК.ShowAbout() - и тут должно показаться окно VB6 (желательно модально) с одной единственной кнопкой "ОК", которая закрывает это окно и возвращает управление в 1С

Вот кааак это сделать??

ПодключитьВнешнююКомпоненту("TestVK.dll","Test",ТипВнешнейКомпоненты.Native) подключается нормально, а вот дальше при ВК = Новый ("AddIn.TestVK") - ошибка! Тип не определён (AddIn.TestVK)

Я пытался подключить как Компонент = Новый COMОбъект("test.Class1");

На VB6 писал в Class1:

Public Sub test()
   MsgBox ("ok")
End Sub

вроде бы как подключился Компонент = Новый COMОбъект("test.Class1") без ошибок, но при попытке выполнить в 1С
Компонент.test();
получил Н-И-Ч-Е-Г-О! Ни сообщения "ок", ни ошибки, вообще ничего!
просто Компонент.test() молча выполнилось и всё!

я готов даже рассмотреть вариант на Visual Basic .NET, если есть такое решение

помогите разобраться, я совсем запутался!
 
 
   H A D G E H O G s
 
101 - 27.05.19 - 17:27
скриншот будет?
   Garykom
 
102 - 27.05.19 - 17:43
(100) На сервере:
1. может быть x64 хотя на клиенте x32
2. а нету там форм
   Cyrix
 
103 - 27.05.19 - 17:44
вот так работает

&НаКлиенте
Процедура Команда1(Команда)
//    Команда1НаСервере();

    
Попытка
    ПодключитьВнешнююКомпоненту("c:\addin.dll","test",ТипВнешнейКомпоненты.COM);    
    ВК = Новый ("AddIn.test.vk");
Исключение
    Сообщить(ОписаниеОшибки());
КонецПопытки;
    сообщить(ВК.Sum(10,13));
        
        
КонецПроцедуры


А вот так не работает

&НаСервере
Процедура ПриОткрытииНаСервере()
Попытка
    ПодключитьВнешнююКомпоненту("c:\addin.dll","test",ТипВнешнейКомпоненты.COM);    
    ВК = Новый ("AddIn.test.vk");
Исключение
    Сообщить(ОписаниеОшибки());
КонецПопытки;
    сообщить(ВК.Sum(10,13));
    
    
КонецПроцедуры

Пишет, что мол метод Sum не найден
   H A D G E H O G s
 
104 - 27.05.19 - 17:49
(103) не может быть старая версия dll-ки? База - файловая или клиент - серверная?
   Garykom
 
105 - 27.05.19 - 17:55
(104) Все проще, кто то СП не купил:

"Описание варианта метода:
Компонент должен быть выполнен по технологии COM и зарегистрирован в реестре MS Windows.
Эти компоненты совместимы с компонентами 1С:Предприятия 7.7.
Внимание! Вариант метода не работает на сервере и во внешнем соединении."
   Garykom
 
106 - 27.05.19 - 17:57
(105)+ Или я путаю вариант?
   H A D G E H O G s
 
107 - 27.05.19 - 18:01
(106) Да, Егор.
   Сияющий в темноте
 
108 - 27.05.19 - 18:45
На сервере можно обычные Com-обьекты гонять,и можно даже открыть окно,но его никто не увидит,так как окна из служб открываются в неотображаемой сессии.
внешняя компонента нужна,когда хочется использовать ее методы типа ВнешнееСобытие и т.п.
в остальных случаях Com-обьект справляется без проблем,и из него прекрасно можно открыть модальное окно,просто,1с не узнает,что происходит,пока из вызова функции ком-обьекта поток не вернется в 1с.
   Garykom
 
109 - 27.05.19 - 19:51
(107) Да, в отпуск пора
   Cyrix
 
110 - 27.05.19 - 19:53
(105) это надо понимать как - на серверной части работать не будет? Только на клиенте?
(108) а это надо понимать, как - (105) - всё фигня и работать всё-таки будет на сервере??
   Cyrix
 
111 - 27.05.19 - 19:56
Sub ILanguageExtender_CallAsFunc(ByVal iMethodNum As Long, retVal As Variant, ParamVal() As Variant)

Select Case iMethodNum
    Case methSum
     '   Form1.Show vbModal
        retVal = Str(ParamVal(0) + ParamVal(1))
             
End Select

End Sub

чему тут не работать на сервере? Сервер не может передать пару параметров и получить готовый результат в виде суммы двух параметров?
  1  2

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.