Цитата:
Пример использования COM Axapta из другого приложения (например Fox, Delphi, C++).
То есть, как я понял, Аксапта является COM сервисом, а наше приложение COM клиентом. В этом случае понадобится COM Connector и соответственно лицензии на COM пользователей.
Я же имел в виду несколько иную ситуацию - наша прога - COM-сервер, Аксапта - COM клиент. В этом случае мы экономим на лицензии на COM-пользователя.
Это так, отступление. Теперь отвечаю на Ваш вопрос -
Под рукой нашлись исходники только на VB, но думаю разберетесь:
Пример 1 - Вызов методов какого либо Аксаптовского класса из нашей прог-мы:
' Коннектимся к Аксапте
Set axapta = New AxaptaCOMConnector.axapta
axapta.Logon "Admin", "", "", ""
Dim AxaptaQuery As AxaptaCOMConnector.IAxaptaObject
Dim AxaptaDataSource As AxaptaCOMConnector.IAxaptaObject
Dim AxaptaRange As AxaptaCOMConnector.IAxaptaObject
Dim CustTableBuffer As AxaptaCOMConnector.IAxaptaRecord
Dim s As String
' Создаю экземпляр класса
Set AxaptaQuery = axapta.CreateObject("myClass")
' Вызываю метод класса
AxaptaQuery.Call ("say")
Пример 2 - получение данных из Аксапты:
' Коннектимся к Аксапте
Set axapta = New AxaptaCOMConnector.axapta
axapta.Logon "Admin", "", "", ""
Dim AxaptaQuery As AxaptaCOMConnector.IAxaptaObject
Dim AxaptaDataSource As AxaptaCOMConnector.IAxaptaObject
Dim AxaptaRange As AxaptaCOMConnector.IAxaptaObject
Dim CustTableBuffer As AxaptaCOMConnector.IAxaptaRecord
Dim s As String
' Это то самое ID - свойство
CustTable = 77
CustTable_Name = 2
Set AxaptaQuery = axapta.CreateObject("Query")
Set AxaptaDataSource = AxaptaQuery.Call("AddDataSource", CustTable)
Set AxaptaRange = AxaptaDataSource.Call("AddRange", CustTable_Name)
AxaptaRange.Call "Value", "*"
Set AxaptaQueryRun = axapta.CreateObject("QueryRun", AxaptaQuery)
i = 1
While (AxaptaQueryRun.Call("Next"))
s = ""
Set CustTableBuffer = AxaptaQueryRun.Call("GetNo", 1)
s = s + Str(i) + " - " + CustTableBuffer.field("AccountNum")
s = s + " " + CustTableBuffer.field("Name")
s = s + " " + CustTableBuffer.field("Address")
s = s + " " + CustTableBuffer.field("Phone")
s = s + " " + CustTableBuffer.field("Telefax")
ListView.AddItem (s)
i = i + 1
Wend
Axapta.Logoff
Set Axapta = Nothing
А вообще, про это хорошо написано в руководстве разработчика