#0
by бомболюк
Добрый день. Написал на дельфях COM объект, который планирую использовать в 1С 7.7. Проблема в том, что не получается изменив значение параметра метода в теле COM объекта вернуть его в 1С. Вот описание метода, проблема с параметром OutData: function DoSomeMethod(const InData: WideString; var OutData: WideString): Integer; safecall; Подскажите, куда копнуть, все уже перепробовал, но кроме как в результате метода вернуть ничего не получается.
#1
by Serginio1
Вообще то все параметры в 1с передаются по ссылке. Если что, можешь через ВК Исходник ВК, которая загружает Объект Автоматизации, поддерживающий ITypeInfo и выполняет все его свойства и методы через IlanguageExtender Поддержка Var и Out параметров
#3
by H A D G E H O G s
Специально для вас создали конструктор интерфейсов и их свойств и методов в Delphi.
#4
by H A D G E H O G s
Пробуй так: function DoSomeMethod(const InData: WideString; var OutData: OleVariant): Integer; safecall;
#5
by Serginio1
А там переделывать ничего не надо. Загрузить объект в ВК можно двумя способами ЗагрузитьВнешнююКомпоненту("AddInFromITypeInfo.dll"); д=CreateObject("AddinTypeInfo.AddinTypeInfo"); Загрузить объект в ВК можно двумя способами Где AddInFromITypeInfo.dll это данная ВК; AddinTypeInfo.AddinTypeInfo пример Automation Object находящийся в VKITypeInfoAddinTypeInfo .LoadOleObject(д); Где AddInFromITypeInfo.dll это данная ВК; AddinTypeInfo.AddinTypeInfo пример Automation Object находящийся в VKITypeInfoAddinTypeInfo То есть подгрузив в ВК ты вызываешь все методы и свойства твоего оле объекта. Это просто прокси. Например OutData сможешь изменить в своем оле объекте
#6
by Serginio1
Внутри проверяется параметр по ссылке или по значению if FuncDesc.lprgelemdescParam[j].tdesc.vt =VT_PTR Then //Данный параметр передается по ссылке MethodArray[i].Params[j]:=FuncDesc.lprgelemdescParam[j].tdesc.ptdesc.vt
#7
by Serginio1
Внутри ВК вызов метода твоего объекта function TAddInObject.CallAsFunc(lMethodNum: Integer; var pvarRetValue: OleVariant; var paParams: PSafeArray{(OleVariant)}): HResult; stdcall; Inf:ExcepInfo; begin if FillParams(MethodArray[lMethodNum],Args,paParams,DispParams)<>S_OK Then result:=obj.Invoke(MethodArray[lMethodNum].DispId, GUID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD OR DISPATCH_PROPERTYGET, DispParams, @VarResult, , nil); If Result<>S_OK Then Begin If TVarData(VarResult).VType = varByRef or varVariant Then
#8
by Serginio1
Вот методо заполнения параметров Function FillParams(Var MethodRecord:TMethodRecord;Var Args:TArgs; var paParams: PSafeArray{(OleVariant)}; var DispParams: TDispParams): HResult; Var P:PParamsArray; i,j:Integer; begin if Length(MethodRecord.Params)=0 Then For i:=0 to j Do Begin If MethodRecord.Params[i].IsPtr Then //========================================================= If MethodRecord.Params[i].ParamType=VT_VARIANT Then begin Args[j-i].vt:=VT_BYREF or VT_VARIANT; begin if MethodRecord.Params[i].ParamType<>TvarData(p^[i]).VType Then begin If MethodRecord.Params[i].ParamType=VT_VARIANT Then begin if MethodRecord.Params[i].ParamType<>TvarData(p^[i]).VType Then
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
В этой группе 1С
- Добавить в отчет на СКД поля набора данных программно
- Получить объект во внешней обработке
- Медицинское страхование полисы ДМС и ОМС в ЗУП 3.0
- оптимизация запроса скд
- ЗУП. Реестр пособий в ФСС для женщин в ранние сроки беременности
- Запуск 1С через планировщик заданий (Win 7)
- Как использовать временное хранилище в фоновом задании
- 1c8 УПП посоветуйте по расчету себестоимости
- Накрылся Microsoft Security Essentials
- Снятие резерва одной позиции в УТ
- 1с ЗУП 2,5 Расчетные листки
- УТ 11.1 Запуск внешней обработки по расписанию
- ЗУП 2.5 Доп отпуск за счет ФСС
- Подключение к sql через 1С
- Не получается отправить отчет
- Не работает функция CopyFile в делфи 7
- как программно задать высоту строки табличного документа
- Галочка "Вести партионный учет по сериям". УТ 10.3
- Универсальный отчет. Группировка дат по месяцам.
- БП 3.0 Платежное поручение, прочее списание, нет выбора НДС