Конференция "Corba" » Idispatch OLE, вызов функций [D7, WinXP]
 
  • 312Kbps (06.11.06 22:17) [0]
    Подскажите пожалуйста, имея idispatch я могу получить ole этого объекта ?
    или выполнить его метод ?

    Спасибо !
  • Percent (06.11.06 22:21) [1]
    получить ole этого объекта

    Получить, простите, что?!

    или выполнить его метод

    <интерфейсная ссылка>.<метод>(<параметры>)

    Только вот, у IDispatch - не так много методов, которые можно вызвать.
    Гораздо практичнее - получить нужный интерфейс, и вызывать  его методы.
  • 312Kbps (06.11.06 22:29) [2]
    подскажи , как получить нужный интерфейс, и вызывать  его методы ?

    есть 1C, в своей проге я плучаю его IDispatch , как выполнить команду 1С ?

    p.s. есть handle 1C (если надо конечно).
  • guav © (06.11.06 22:36) [3]
    var
      Disp: IDispatch;
      V: Variant;
    begin
      ...
      V := Disp;
      V.SomeMethod(Val1, Val2);
      V.SomeMethodNamedArguments(parameter1 := Val1, parameter1 := Val2);
      V.SomeProperty := SomeVaule
      ...

  • 312Kbps (06.11.06 22:46) [4]
    можно ли получить список методов которые есть ?
  • 312Kbps (06.11.06 23:19) [5]
    например в 1С есть функция "КаталогИБ()"  которая возращает путь к каталогу базы

    как мне её выполнить имея  IDispatch ?
  • guav © (06.11.06 23:32) [6]

    > [5] 312Kbps   (06.11.06 23:19)

    Так пробовал ?
    var
     Disp: IDispatch;
     V: Variant;
    begin
     V := Disp;
     V.КаталогИБ();
    end;

  • 312Kbps (06.11.06 23:38) [7]
    Пробавал, не получается (((
    Ошибка ;
    "Project 1cv7s.exe raised exception class EOleError with massage method 'КаталогИБ' not supported by automation object"  (

    что можно сделать ? даже и не знаю где искать (
  • Percent (06.11.06 23:45) [8]
    Какие интерфейсы поддерживает 1C?
    Модуль(и) с декларациями поддерживаемых интерфейсов есть?
  • 312Kbps (06.11.06 23:54) [9]
    не знаю что тебе ответить (((

    можно селать так
    Ole1C: Olevariant;
    .....
    Ole1C:=CreateOleObject('V1СEnterprise.Application');
    Ole1C.Initialize(.....);
    Ole1C.EvalExpr('КаталогИБ()');

    работает
    но у меня есть IDispatch этой 1С  и так понимаю инициализация мне не нужна

    но выполнить команду ни как не получается (
  • Сергей М. © (07.11.06 08:36) [10]

    > у меня есть IDispatch этой 1С


    Откуда он у тебя взялся ?
    Показывай код ..
  • 312kbps (07.11.06 10:14) [11]
    При запуске 1С, она цепляет dll, в которую передается pConnection: IDispatch , самой 1Ски )
    Есть специальный визард для делфи, для работы с 1С.

    !?!?!?
  • guav © (07.11.06 10:22) [12]
    > [9] 312Kbps   (06.11.06 23:54)

    А так ?
    Ole1C:=pConnection
    Ole1C.EvalExpr('КаталогИБ()');

  • Сергей М. © (07.11.06 10:23) [13]
    Ну и ?

    Ты получил интерфейс, теперь ты можешь вызывать его методы.
    В чем проблема ?
  • 312kbps (07.11.06 14:27) [14]
    так тоже не работает  (((
  • Сергей М. © (07.11.06 15:01) [15]

    > так тоже не работает


    так и говорит - "не работаю" ?
  • 312kbps (07.11.06 16:28) [16]
    когда выполняю так
    Ole1C:=pConnection
    Ole1C.EvalExpr('КаталогИБ()');

    пишет что
    "Project 1cv7s.exe raised exception class EOleError with massage method 'КаталогИБ' not supported by automation object"
  • 312kbps (07.11.06 16:30) [17]
    извиняюсь

    ошибка: не обнаружен метод EvalExpr
  • Сергей М. © (07.11.06 16:53) [18]
    Справка по встроенному в 1С:ПРедприятие языку на что дана ?

    Там ведь достаточно ясно описано, методом какого конкретно класса является метод EvalExpr() ..
  • 312kbps (07.11.06 17:01) [19]
    Сергей разъесни мне пожалуйста, может я не совсем тупой )

    !?!? )
 
Конференция "Corba" » Idispatch OLE, вызов функций [D7, WinXP]
Есть новые Нет новых   [134430   +2][b:0][p:0.001]