#0
by Diabolicum 1C
Вопрос собственно в том, как осуществляется данное взаимодействие? Проштудировал и руководство по разработке ВК, и пример с ИТС. В общем разобрался и с классами и методами. Но нигде не сказано, как из внешней компоненты работать с 1С как с OLE automation server'ом. В мануале указано только, что ссылка типа void*, передаваемая в метод Init ВК, является, по сути, ссылкой IDispatch* и у нее есть свойство IDispatch* AppDispatch, являющееся ссылкой на COM интерфейс 1C:Предприятия. Однако уже на этапе получения данного свойства возникает либо ошибка стека (т.е. несоответствие соглашений о вызовах между описанием и реализацией по ссылке), либо просто падение 1С. Код выглядит примерно так: 1. В объявлении описания класса добавлено новое свойство: [1С]class .... { ... private: ... IDispatch* m_iOLEInterface; }[/1C] 2. В метод Init добавлена строка: [1С]init(void* Connection) {... m_iOLEInterface = (IDispatch*)Connection;}[/1C] 3. Во все перечисления добавлено соответствующее описание процедуры 4. В процедуре CallAsProc добавлен код [1С]CallAsProc(...) { .... switch(...) { .... case eMetaName: { DISPID sProp; HRESULT hr; LPOLESTR sProp = L"AppDispatch"; hr = m_iOLEInterface->GetIDsOfNames(IID_NULL, &sProp, 1, 0, &dispid); } } }[/1C] Проект нормально компилируется. DLL подключается, однако при попытке вызова добавленного метода возникает runtime ошибка. Методом научного тыка выяснил, что ошибку вызывает строка: [1С]hr = m_iOLEInterface->GetIDsOfNames(IID_NULL, &sProp, 1, 0, &dispid).[/1C] Подскажите, пожалуйста, в чем ошибка.
#3
by Diabolicum 1C
Требование заказчика :(. NativeAPI - потому что нужно подключать и на сервере (nix'ы). Библиотека должна расширять некоторые сервисные возможности платформы. Необходимо читать метаданные конфигурации. ----------------------------------------------------- П.С. По сути помочь можешь?
#4
by supremum
По сути мы должны получается либо передавать метаданные в вызываемый метод ВК (что думаю правильнее), либо подключаться в ВК к 1С через COM-соединения (ИМХО)
#5
by DmitrO
[В мануале указано только, что ссылка типа void*, передаваемая в метод Init ВК, является, по сути, ссылкой IDispatch*] Если мы говорим о компонентах NativeAPI, то это не правда - нет такого в документации. В Init передается указатель на IAddInDefBase. Из компонент NativeAPI невозможно работать с данными 1С.
#6
by DmitrO
Передавать метаданные будет весьма трудно, т.к. передать можно только простые типы, а подключаться COM-соединением на *nix серверах не получится.
#10
by supremum
+ Тогда можно будет и от внешней компоненты отказаться и нормально передавать структуры и данные.
#11
by DmitrO
Выход1: а ну его в задницу этот *nix и NativeAPI; Выход2: выносить мозг сериализацией, например xml; Обычно тем кто задачу знает полностью и выход всегда найти легче. Хороший вопрос, черт побери, тока не по адресу.. сам понимаешь. :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Работа из 1С с Excel (да и вообще работа через OLE)
- Работа с индексами.
- Некорректная работа выгрузки в 7.7бухгалтерию из УТ
- v7: работа с HTTPS и бинарными данными с помощью MSXML.XMLHTTP
- Универсальный обмен данными данными XML через COM с передачей параметров.
- Подключенеи внешней компоненты. Ошибка "Ошибка при подключении внешней компоненты"
- v8: Образец внешней компоненты Native API для 8.2 (Infostart)
- Подключение внешней компоненты из макета внешней обработки в толстом клиенте
- Компоненты Native API и их кэширование НаСервере
- Подключение внешней компоненты во внешней обработке 1С 8.2
- Подсистема "Работа с файлами" из БСП против внешней базы 1с.
- API внешней компоненты - обращение к процедуре как к функции
В этой группе 1С
- Запись пустых тегов в xml
- Инвентаризация в УТ 10.3
- Недостаточно прав для отражения в регламентированном учете. Изменения не могут б
- Переход в табличном поле
- Как правильно отфильтровать по наименованию с оторбражением иерархии?
- Как обновить доработанную конфигурацию?
- Файловый и клиент-серверный вариант ЗУП 8.2
- Ошибка при проведении документа расчет себестоимости!
- Передача давальческого сырья сторонней организации
- Есть отчет на СКД, 8.1. Как указать границу периода?
- Сканер штрих PROTON IMS3100 или ICS110. Распиновка кабеля RS-232.
- Корректировка вып. прод. в Закрытии месяца- счет откуда берется ? почему 76.06?
- Форма выбора типа цен
- Автоматическое обновление списка документов в 1С 8.1
- вылетает 1с при проведении документов
- УПП 8.2 Не работает отбор в журнале регистрации
- ЗУП. Полетели взносы за весь год
- Как программно определить в какой группе находится контрагент в 8.1
- СКД, объединение наборов данных Запрос и Объект: не действует отбор
- Как записать реквизит формы?