Подключить 1С в С++

noss

Напишите, плз, как на С++ подключить 1С и получить доступ, например к какому-либо справочнику

peter1dav

Через ОЛЕ
Нпример: http://erpg.ru/1c/builder/index.htm

noss

в Делфях могу через ОЛЕ подключить
а в сях слабоват
может подскажешь?

yolki

Все олешные функции - это те же апишные вызовы. с соотв. классами.
В дельфях я могу юнит сделать из typelibrary - а в плюсах так можно?
наверняка. импортни и пользуй как в дельфи

noss

почему то 1С нету в Type Library
в форумах написано, что через Dispatch надо работать
через ОЛЕ на c++ нигде не нашел

yolki

У тебя есть typelibrary от 1C?
Если есть - можешь сделать из неё .h файл? с классами и нужными константами?
Какой компилятор используешь?
в Делфях могу через ОЛЕ подключить
форумах написано, что через Dispatch надо работать
Мне непонятна глубина познания в ОЛЕ и с какого места надо начать объяснять

noss

нету typelibrary
.Net 2003 использую

yolki

поищи в каталоге установки 1С-ки файл *.tlb

noss

нет файлов с таким расширением

noss

так работает только из Делфи, VB и С билдера
в c++ так не работает

peter1dav

Как вариант, написать ДЛЛ на билдере или дельфи, апотом ее юзать

noss

да уж
или всю прогу на Делфи написать
чтобы так не мучиться

yolki

Библиотека типов в системе зарегистрирована?
OLE/COM Object Viewer, раздел Type Libraries - там нет нужной библиотеки типов?
Если есть - экспортируй хотя бы IDL. что с ним делать в С++ - ума не приложу.
Дельфя умеет делать юниты из библиотек типов. Может, их можно просто так инклюдить?
Можешь у спросить, он вроде большой спец по С++ (и .NET вообще)
После того, как у тебя есть нужные классы - дальше просто:
CoCreateInstance(...,App)
App->QueryInterface(I1)
App->QueryInterface(I2)
App->QueryInterface(I3)
..
Как в дельфях - кстати, хороший примерчик по работе с ОЛЕ из дельфи есть на примере взаимодействия дельфи и экселя.

noss

где то в форумах прочитал, что 1С не удосужилась делать библиотеку типов,
посмотрел в OLE/COM Object Viewer, раздел Type Libraries, там нет такой библиотеки
1С запускается, а как доступ к элементам получить?

yolki

Если нет библиотеки типов - значит через ОЛЕ к ней не достучаться..

psm-home

Что-то не могу я щас сообразить, можно для 1С использовать директиву #import или нет... По идее #import генерит классы обёртки для Automation'а по заданному type lib. Которого для 1С якобы нет... Посмотри на ATLный класс CComDispatchDriver, может он тебе поможет. Выглядеть должно примерно так:


IDispatchPtr pDispatch;
HRESULT hr = pDispatch.CreateInstance( "V77.Application" );
if ( SUCCEEDED( hr ) )
{
CComDispatchDriver pDd( pDispatch );
_variant_t result;
_variant_t param("мама мыла раму");
hr = pDd.Invoke1(OLESTR("myCoolMethodName" &param, &result);
<....>

slonishka

Леший закрылся!
Оставить комментарий
Имя или ник:
Комментарий: