powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подключение к 1С.
8 сообщений из 8, страница 1 из 1
Подключение к 1С.
    #34774307
maximusyork
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ситуация: запущена программа 1С 7.7, тоесть зашли под одним из пользователей, пароль и логин єтого пользователя известен. Как подключиться к 1С, чтоби можна било получать с єтой программи данние.
если я виполняю єтот код
Variant ex;
ex=GetActiveObject(ProgIDToClassID("V77.Application"),NULL,&pIUnknown);
Variant us=ex.OleFunction("EvalExpr","CreateObject(\"Справочник.Валюти"\")");
тогда в посдней строке викидает сообщение Could not convert variant of type(Integer) into
type (Dispatch).
Если я запускаю
ex=GetActiveOleObject("V77.Application");
тогда видает ошибку недоступная операция.
Помогите пожалуйста.
...
Рейтинг: 0 / 0
Подключение к 1С.
    #34774493
1211212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Судя по всему это Builder. На мой взгляд стоит использовать pIUnknown
...
Рейтинг: 0 / 0
Подключение к 1С.
    #34774603
maximusyork
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guest:"Судя по всему это Builder. На мой взгляд стоит использовать pIUnknown"

Да єто Builder. Где использовать pIUnknown, я уже спользую его? Можно конкретней.
...
Рейтинг: 0 / 0
Подключение к 1С.
    #34774628
1211212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не сомненно, все должно выглядеть несколько иначе, но в принципе должно быть очень похожим:
MSDN:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
      ::CoInitialize(NULL);

      // Translate server ProgID into a CLSID. ClsidFromProgID
      // gets this information from the registry.
      CLSID clsid;
      CLSIDFromProgID(L"Excel.Application", &clsid);  

      // Get an interface to the running instance, if any..
      IUnknown *pUnk;
      HRESULT hr = GetActiveObject(clsid, NULL, (IUnknown**)&pUnk);
      ASSERT(!FAILED(hr));

      // Get IDispatch interface for Automation...
      IDispatch *pDisp;
      hr = pUnk->QueryInterface(IID_IDispatch, (void **)&pDisp);
      ASSERT(!FAILED(hr));

      // Release the no-longer-needed IUnknown...
      pUnk->Release();

     // ----------------------------------------------------
     // Your automation code here-
     // ----------------------------------------------------

     ::CoUnintialize();

...
Рейтинг: 0 / 0
Подключение к 1С.
    #34774639
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот что-то смутно припоминаю, что GetActiveObject прменительно к 1С 7.7 не работает в принципе ... возможно, ошибаюсь
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Подключение к 1С.
    #34774663
1211212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На их сайте говорится об API-функциях, но вот примеров я к сожалению не видел.
...
Рейтинг: 0 / 0
Подключение к 1С.
    #34774734
maximusyork
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При виполненний написанного отривка кода в єтой строке
hr = pUnk->QueryInterface(IID_IDispatch, (void **)&pDisp);
видаеться ошибка
...Access violation at address 00401F76....
...
Рейтинг: 0 / 0
Подключение к 1С.
    #34776984
RazBoyNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сам мучился, но вродя работает.

Variant Ole1C, rmTrade;

HResult s1cResult;

LPUNKNOWN pIUnknown = NULL;

char *IntializationLine = "/NСергей /P1";

s1cResult = GetActiveObject(ProgIDToClassID("V77.Application"), NULL, &pIUnknown);

if ( s1cResult == MK_E_UNAVAILABLE )

Ole1C = CreateOleObject("V77.Application");

else

Ole1C = GetActiveOleObject("V77.Application");

rmTrade = Ole1C.OlePropertyGet("RMTrade");


Ole1C.OleProcedure("Initialize", rmTrade, IntializationLine,"");

IntializationLine = "CreateObject(\"Справочник.Контрагенты\")";
OleVariant Buh1 = Ole1C.OleFunction("EvalExpr", IntializationLine);

Buh1.Exec(Function("ВыбратьЭлементы")<<1);
int kolvo=0;
while (Buh1.Exec(Function("ПолучитьЭлемент"))>0)
{
Variant Tip= Buh1.OlePropertyGet("Наименование");

Variant Tip2= Buh1.OlePropertyGet("ЕДРПОУ");
AnsiString Str=Tip;
AnsiString Str2=Tip2 ;
Memo1->Lines->Add(Str+' '+Str2);
kolvo++ ;
}
Label2->Caption=StrToInt(kolvo);

Это для примера!
А вот мой вопрос - кто поможет в банком? Мне нужно поле перечисления с банка...то куда поступают выписки с банка(мож бухгалтера есть).
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подключение к 1С.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]