Показать сообщение отдельно
Старый 25.06.2005, 23:49   #22  
maximus is offline
maximus
Участник
 
153 / 10 (1) +
Регистрация: 16.03.2005
2velk
Прочтайте внимательно и, думаю, найдете ответ на половину ваших вопросов. Описано для Axapta 3.0 SP 3

1. Запустите Excel, вид\панели инструментов\visual basic
2. Войдите в редактор васика (первая пиктограмма слева на появившейся панели)
3. insert module
4. введите код, не забывая, что одиночная кавычка означает комментарий

Sub main()

Dim Axapta ' As AxaptaCOMConnector.Axapta2
Dim AxaptaQuery ' As AxaptaCOMConnector.IAxaptaObject

Dim accnum
Dim name

Dim AxaptaDataSource ' As AxaptaCOMConnector.IAxaptaObject
Dim CustTableBuffer ' As AxaptaCOMConnector.IAxaptaRecord
' Log on to Axapta
Set Axapta = CreateObject("AxaptaCOMConnector.Axapta2")
Axapta.Logon "", "", "", ""

' Table ID
CustTable = 77
Set AxaptaQuery = Axapta.CreateObject("Query")
Set AxaptaDataSource = AxaptaQuery.Call("AddDataSource", CustTable)
Set AxaptaQueryRun = Axapta.CreateObject("QueryRun", AxaptaQuery)
I = 1
While (AxaptaQueryRun.Call("Next"))
Set CustTableBuffer = AxaptaQueryRun.Call("GetNo", 1)
accnum = CustTableBuffer.field("AccountNum")
name = CustTableBuffer.field("Name")
MsgBox CStr(accnum) + " " + name
I = I + 1
Wend
' Log off
Axapta.Logoff
Set Axapta = Nothing
End Sub

Это слегка модифицированный пример из мануала.

5. Запустите server manager и АОС (статус AOS = running, при этом в течение минимум 20 сек. он не падает)
6. в конфигурации клиента установите галку connect to Axapta Object Server(AOS)
7. Нажмите settings и убедитесь, что в Axapta Object Server Host Names что-то есть (или в Axapta Object Server IP Adress masks, здесь еще надо проверить наличие такого IP с сети) + запомните это имя
8. В окне васика нажмите F8, потом для трассировки нажимайте shift+f8
9. Если у вас все правильно настроено, то строка Axapta.Logon "", "", "", "" выполнится без ошибок. Данная строка работает следующим образом: берутся текущие настройки клиента. Если, например, во втором параметре указать запомненное вами имя, то данный скрипт будет всегда коннектиться через указанный АОС,т.е. настройка ложится поверх настроек клиента. Иногда здесь возникаю ошибки, об этом читайте далее.
10. Если все успешно работает и custtable содержит несколько клиентов, то у вас выскочит несколько msgbox'ов.
11. По окончании работы скрипта попытайтесь остановить AOS(не сервер manager!!!)
Он у вас будет долгое время висеть в stop pending. Это значит, что он не может остановиться. Наиболее вероятная причина - COM созданный в васике - еще жив!!!.
12. Останавливаем AOS через server manager.
13. Запускаем и то, и другое.
14. Пробуем вновь запустить скрипт. На строке логина имеем ошибку WINAPI 80020009 в шестнадцатеричном формате. Дело в том, что васик в экселе кеширует COM соединение, вместо того, чтобы его создавать заново!!!
12. Закрываем васик, можно сохраниться.
13. Открываем и запускаем скрипт. И он снова работает.

Вывод, Delphi, по-видимому, также кеширует COM соединение.