VAR
oConn: ASBCONNECTION;
oConns: ASBCONNECTIONS;
sConnNo: STRING[];
sUserName: STRING[];
sList: STRING[];
sForAdmin: STRING[];
i: NUMERIC[0];
R: NUMERIC[0];
BEGIN
LOOP
(*Сбор формата списка sList*)
sList := "";
oConns := ASBCONNECTIONS.Create();
i := 0;
WHILE i < oConns.Count DO
oConn := oConns.Item(i);
sConnNo := FLDTOSTR(oConn.ConnectionNo, "0", 0);
IF (sConnNo[0] # CHR(0)) & (sConnNo[1] = CHR(0)) THEN
sConnNo := "0"+sConnNo;
END;
IF oConn.My THEN
sConnNo := "*"+sConnNo;
END;
IF ~!oConn.UserDomain THEN
sUserName := oConn.UserDomain+"\"+oConn.LoginName;
ELSE
sUserName := oConn.LoginName;
END;
INC(sList,
"|"+
FLDTOSTR(sConnNo, "", 6, "R")+
" "+
FLDTOSTR(sUserName, "", 18, "L")+
" "+
FLDTOSTR(oConn.FullName, "", 19, "L")+
" "+
FLDTOSTR(oConn.IPAddress, "", 15, "L"));
INC(i);
END(*WHILE*);
sForAdmin := "";
IF ISADMIN() | ISPROGRAMMER() THEN
(* Если пользователь, под именем которого выполнено наше подключение, *)
(* не является администратором или программистом проекта, вызывать *)
(* метод Watch нельзя, иначе будет выброшено исключение. *)
sForAdmin := " "+"%< консоль `Пользователя >B";
END;
i := 0;
R := STDFORM("|"+
" Connection User Name Full Name IP-Address |"+
" %,11AI "+
"||||||||||||"+
"%< `Закрыть окно >X"+
" "+
"%< `Обновить информацию >B"+
sForAdmin,
" Активные пользователи ",
,
,
sList, i);
IF R = 0 THEN
EXIT;
ELSIF R = 2 THEN
oConn := oConns.Item(i);
oConn.Watch();
END;
END(*LOOP*);
END. |