04.04.2007, 15:54 | #1 |
Участник
|
Ком- коннектор, активные пользователи
Доброе всем время,
хотелось бы посредством com- интерфейса получить список активных пользователей, подключаюсь через двухзвенку прекрасно и даже на класс не ругается, но дальше затык, говорит метода getAllOnlineUserInfo нет... Чувствую, что пишу неправильно, подскажите, пожалуйста. Set ax = CreateObject("AxaptaCOMConnector.Axapta2") ax.Logon2 "pupkin", "qwerty", "", "", "", "", "конф-ия" Set Class = ax.CreateObject("SysUsersOnline") Class.Call "getAllOnlineUserInfo" WScript.Sleep 60000 ax.Logoff Set ax = Nothing На выходе: AxaptaCOMConnector.Axapta.1: 15:39:26 Ошибка времени выполнения: SysUsersOnline Объект не имеет метода getAllOnlineUserInfo'. Трассировка стека \Classes\SysUsersOnline\getAllOnlineUserInfo Прошу не судить строго, взялся за это в первый раз. |
|
04.04.2007, 16:03 | #2 |
Banned
|
getAllOnlineUserInfo - это статический метод.
Используйте IAxapta::CallStaticClassMethod HRESULT CallStaticClassMethodEx( [in] BSTR bstrClass, [in] BSTR bstrMethod, [in] IAxaptaParameterList *pParamList, [out, retval] VARIANT *pResult ); |
|
04.04.2007, 16:23 | #3 |
Участник
|
Set ax = CreateObject("AxaptaCOMConnector.Axapta2")
ax.Logon2 "pupkin", "qwerty", "", "", "", "", "кон-ия" WScript.Echo ax.CallStaticClassMethod("SysUsersOnline", "getAllOnlineUserInfo") WScript.Sleep 60000 ax.Logoff Set ax = Nothing Несовпадение типов... Беда. |
|
04.04.2007, 16:50 | #4 |
Banned
|
Вы уверены, что WScript.Echo умеет показывать аксаптовские контейнеры?
|
|
04.04.2007, 16:56 | #5 |
Участник
|
Конечно же нет, это так, глупость.
Но что с этим делать, с контейнером то? Set ax = CreateObject("AxaptaCOMConnector.Axapta2") ax.Logon2 "pupkin", "qwerty", "", "", "", "", "кон-ия" Call ax.CallStaticClassMethod("SysUsersOnline", "getAllOnlineUserInfo") WScript.Sleep 60000 ax.Logoff Set ax = Nothing |
|
04.04.2007, 16:59 | #6 |
Banned
|
Напишите свой собственный стат. метод в Аксапте, который будет возвращать обычную строку, взяв за основу getAllOnlineUserInfo. 10 минут - и проблема решена.
|
|
04.04.2007, 17:16 | #7 |
Участник
|
Не знаю, как WSScript, но под Axapta'ой это будет выглядеть так
X++: { Com ax = new Com("AxaptaCOMConnector.Axapta2"); Com cont; Com cont1; int i; int cnt; ComVariant var; str s; ; ax.Logon2("user", "password", "", "", "Server", "Instance", "Configuration"); var = ax.CallStaticClassMethod("SysUsersOnline", "getAllOnlineUserInfo"); if (var) { cont = Com::createFromVariant(var); var = cont.peek(2); cnt = var.int(); if (cnt > 0) { var = cont.peek(1); cont = Com::createFromVariant(var); if (cont) { for (i=1;i<=cont.length();i++) { var = cont.peek(i); cont1 = Com::createFromVariant(var); if (cont1) { if (cont1.length()>1) { var = cont1.peek(2); s = "UserId=" + var.bStr()+ ";"; var = cont1.peek(8); s += "UserName=" + var.bStr(); info(s); } } } } } } ax.Logoff(); ax = null; }
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 04.04.2007 в 20:30. Причина: стоны->стороны |
|
04.04.2007, 17:20 | #8 |
Участник
|
Ага, посмотрю.
Спасибо |
|
04.04.2007, 17:35 | #9 |
Участник
|
А вот так для VBA
X++: Dim cont As Object Dim cont1 As Object Dim cont2 As Object Dim ax As Object Dim i As Integer Set ax = CreateObject("AxaptaCOMConnector.Axapta2") ax.Logon2 "user", "password", "", "", "", "", "config" Set cont = ax.CallStaticClassMethod("SysUsersOnline", "getAllOnlineUserInfo") Debug.Print "Кол-во пользователей:"; cont.peek(2) Set cont1 = cont.peek(1) For i = 1 To cont1.Length() Set cont2 = cont1.peek(i) Debug.Print "UserID="; cont2.peek(2) Debug.Print "UserName="; cont2.peek(8) Next i ax.Logoff Set ax = Nothing
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: kashperuk (3). |
04.04.2007, 18:11 | #10 |
Участник
|
Я так и думал, уже почти так и сам сделал. Смотрел в HTML Help коннектора.
Большущее спасибо! |
|
04.04.2007, 18:18 | #11 |
Участник
|
Ещё раз моя благодарность!
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
Активные пользователи в Аксапта | 2 | |||
Активные пользователи и номер сессии | 4 | |||
Активные пользователи | 8 | |||
Активные пользователи | 10 | |||
Активные пользователи: 1 юзер - 3 сессии? | 3 |
|