Re: Сейчас интересует создание внешних компонентtempus1October 28 2010, 06:55:00 UTC
Под 7.7 есть шаблон для создания ВК (кажется на ИТС был когда-то раздел "Методика создания ВК"). Но под 7.7 в основном писали все на делфи (и как правило не по шаблону :))
Между 7.7, 8.0 и 8.1 отличия незначительные. Везде это СОМ-объекты с определённым интерфайсом, правда часть доступных функций в 8.0, 8.1 порезана. По сути из-за того, что 8.1 нормально поддерживает работу с COM (в том числе обработка событий), то внешние компоненты в 8.1 были уже почти не нужны. 8.2 принципиально отличается тем, что кроме COM есть еще свой API - "Native API". Если всё делать тщательно и аккуратно, то такая ВК запускается и во всех режимах работы (сервер предприятия под вин32/вин64/лин, толстый клиент, тонкий клиент, веб-клиент IE, веб-клиент Firefox) - в этом может быть смысл. Из-за этой долбаной кроссплатформенности из языков остался тока С++ (или писать свою обёртку к вызовам функций .NET/JRE из неуправляемого кода). Я сейчас хочу понять для себя, достаточна ли производительность ВК, чтобы на неё скидывать "легковесные" задачи, которые не реализованы платформой (пример - в посте). Если заработает, то можно приемнять ВК именно в этом контексте.
Здравствуйте. Наткнулся на странность: две сэмпловые компоненты, одна - на vb, другая - на C#. Первая отлично работает в 7.7, вторая - только в 8.2. Обе - по COM-технологии (не NAPI), вроде бы собраны без особых различий (ну, за исключением разной обработки проектов в VS2010). Но С# почему то не хочет работать в 7.7. Ошибка: Ошибка при инициализации объекта из компоненты <Неизвестная компонента> При этом объект создается, но с каким то странным именем... (блок данных компоненты с подчеркиванием, вместо ProgID). Может подскажете хотя бы в какую сторону копать?
Я вот такую функцию юзаю: Функция Таймер() Script = New COMОбъект("MSScriptControl.ScriptControl"); Script.language = "vbscript"; Timer = Script.Eval("Cdbl(Timer)"); Return Timer; КонецФункции
А можно исходники на почту кинуть? начал разбираться с ВК, хочу прикрутить библиотеку Qt к 1С кое что уже получилоьс, только вот не пойму как вернуть результат выполнения функции из вк в 1с? мож подскажешь?
Так вроде если COM-технология используется, то в функции public void CallAsFunc(int lMethodNum, ref object pvarRetValue, ref System.Array paParams) вторым параметром (pvarRetValue) - как раз место, куда надо слить значение для 1С... (Осталось только с соответствием типов разобраться - но там вроде не сложно)
Comments 9
Правда меня больше интересует под 7.7
Reply
Но под 7.7 в основном писали все на делфи (и как правило не по шаблону :))
Reply
Reply
Просто для клюшек писал много, а вот под 8.2 как-то не приходилось :)
Reply
8.2 принципиально отличается тем, что кроме COM есть еще свой API - "Native API". Если всё делать тщательно и аккуратно, то такая ВК запускается и во всех режимах работы (сервер предприятия под вин32/вин64/лин, толстый клиент, тонкий клиент, веб-клиент IE, веб-клиент Firefox) - в этом может быть смысл. Из-за этой долбаной кроссплатформенности из языков остался тока С++ (или писать свою обёртку к вызовам функций .NET/JRE из неуправляемого кода). Я сейчас хочу понять для себя, достаточна ли производительность ВК, чтобы на неё скидывать "легковесные" задачи, которые не реализованы платформой (пример - в посте). Если заработает, то можно приемнять ВК именно в этом контексте.
Reply
Ошибка: Ошибка при инициализации объекта из компоненты <Неизвестная компонента>
При этом объект создается, но с каким то странным именем... (блок данных компоненты с подчеркиванием, вместо ProgID).
Может подскажете хотя бы в какую сторону копать?
Reply
Функция Таймер()
Script = New COMОбъект("MSScriptControl.ScriptControl");
Script.language = "vbscript";
Timer = Script.Eval("Cdbl(Timer)");
Return Timer;
КонецФункции
Reply
Reply
public void CallAsFunc(int lMethodNum, ref object pvarRetValue, ref System.Array paParams)
вторым параметром (pvarRetValue) - как раз место, куда надо слить значение для 1С... (Осталось только с соответствием типов разобраться - но там вроде не сложно)
Reply
Leave a comment