Синтаксис
function GetCurrentUser: TM_User;
Описание
Возвращает пользователя, под которым авторизован клиент, вызвавший скрипт.
Важно! Данная функция работает только в скриптах, к вызову которых приводят действия пользователя выполненные через десктоп-клиент или web-клиент. К ним относятся скрипты назначенные на следующие события:
•OnClick - пользователь кликнул объект;
•OnDblClick - пользователь дважды кликнул объект;
•OnMouseUp - пользователь отпустил ЛКМ;
•OnDoneInput - пользователь завершил ввод в поле;
•OnCellClick - пользователь кликнул ячейку таблицы;
•OnEnter - пользователь перешел на страницу;
•OnLeave - пользователь покинул страницу ;
•OnSubpageEnter - пользователь перешел на подстраницу;
•OnSubpageLeave - пользователь покинул подстраницу;
•OnShow - окно было открыто на клиенте;
•OnClose - окно было закрыто на клиенте;
•Событие клавиатуры - пользователь (во время просмотра какой-либо из страниц проекта) нажал на клавиатуре сочетание клавиш с использованием клавиш Ctrl / Shift / Alt.
•Авторизация пользователя - пользователь авторизовался;
В таких скриптах точно известно, какой клиент их вызвал, поэтому в них функция GetCurrentUser работает, возвращая данные пользователя. В других скриптах, которые выполняются сервером скады независимо от клиентов, она работать не будет. Например, в скриптах на события OnDataChange, OnDataChangeEx, OnDoneSQL, "Запуск проекта", "Остановка проекта", "Выполнен SQL-запрос", "Таймер", "Начало часа", "Отчет построен" и т.д. Для примера рассмотрим скрипт с типом события "Таймер". Такой скрипт выполняется сервером Simple-Scada через заданный в парамерах скрипта интервал, даже когда к проекту не подключен ни один клиент. Вызов GetCurrentUser в этом скрипте будет всегда возвращать nil, т.к. сервер не знает, для какого именно клиента нужно вернуть данные пользователя (ведь клиентов может быть много и в каждом клиенте может быть авторизован свой пользователь).
Пример кода
var
aUser: TM_User;
begin
// получаем пользователя, под которым авторизован клиент
aUser := GetCurrentUser;
// если пользователь получен
if aUser <> nil then
begin
// выполняем действия с данными пользователя,
// например, выводим их в текст
Text1.Text :=
'Логин: ' + aUser.Login + #13#10 +
'Ф.И.О.: ' + aUser.FullName + #13#10 +
'E-mail: ' + aUser.EMail;
end;
end.