Страница 1 из 1

Получить пользователя по дескриптору

Добавлено: 21 ноя 2008, 16:50
galover
Как зная дескриптор получить nrec пользователя из x$users?

Вот так: select tuneval.cuser from tuneval where (('some_descr' == tuneval.StrVal(noindex)));

?
или есть какие специальные функции?

Добавлено: 21 ноя 2008, 16:55
k_vit
Если идёт речь о дескрипторе, под которым работает пользователь, то можно из настроек взять :
sGetTune('USER.DESCR') - Дескриптор
sGetTune('USER.FIO') - ФИО

Добавлено: 21 ноя 2008, 17:06
k_vit
А если хотите по какому-либо другому дескриптору вытянуть, то я бы сделал так

Код: Выделить всё

function GetDescNRec(desc : string) : comp;
{
  GetDescNRec := comp(0);
  _loop x$users {
    if UpCase(SubStr(x$users.xu$loginname, 1, 3)) = UpCase(desc) then {
      GetDescNRec := x$users.nRec;
      break;      
    }
  }
}

Добавлено: 21 ноя 2008, 18:48
galover
k_vit
Странно - у вас что, 3 первые буквы логина совпадают с дескриптором? У нас дескриптор может быть совсем другим.

И почему именно через _loop? Я бы написал вот так

Код: Выделить всё

private function GetUserNRec(descr : string) : comp;
{
    result := If((getFirst fastfirstrow x$Users where UpCase(descr) = UpCase(SubStr(x$users.xu$loginname, 1, 3))) = tsOk, x$Users.Atl_NRec, 0h);
}
впрочем это дело личных предпочтений

Добавлено: 21 ноя 2008, 23:44
k_vit
Ну по умолчанию в Гал-ке берется первы 3 символа от логина, а если дескриптор поменять, то уже функция не сработает :sad:

Добавлено: 22 ноя 2008, 15:02
galover
k_vit
не у нас не так, мы дескриптор руками правим -в него еще код филиала прописываем

Добавлено: 22 ноя 2008, 15:18
edward_K
tuneval.cuser это оно. есть ли непосредственно под ним то UserId. Ну и запрос бы я переписал бы с использованием tunename. Есть обратные функции - как получить значение настройки другого пользователя - sgettuneex вроде.

Добавлено: 26 ноя 2008, 19:53
galover
edward_K
А можно параметры sgettuneex? пробовал так:
sGetTuneEx('USER.DESCR', _userNrec)
-> ругается что не все параметры были указаны

Добавлено: 26 ноя 2008, 21:58
edward_K
string , longint , comp
1. наименование
2 - tuneval.obj вроде 8)
3 - ссылка на пользователя
где то было их описание в доке

Добавлено: 27 ноя 2008, 10:34
galover
edward_K
описание не нашел :( в каком доке можно посмотреть?

а tuneval.Obj - за что отвечает?

Добавлено: 27 ноя 2008, 13:36
m0p3e
TuneVal.Obj = ttUser

Добавлено: 27 ноя 2008, 13:44
galover
m0p3e
TuneVal.Obj = ttUser

что есть ttUser?

Добавлено: 27 ноя 2008, 14:52
Den
видимо const

Добавлено: 27 ноя 2008, 16:14
edward_K
это тип настройки 8) - пользовательская, системная, филилальная. Повычисляйте по Ctrl+F4 tvalue.obj - поймете.
зачем в этой функции нужно не понимаю - могли бы и по tunedef определить.