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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

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

Сообщение galover »

Как зная дескриптор получить nrec пользователя из x$users?

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

?
или есть какие специальные функции?
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение k_vit »

Если идёт речь о дескрипторе, под которым работает пользователь, то можно из настроек взять :
sGetTune('USER.DESCR') - Дескриптор
sGetTune('USER.FIO') - ФИО
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение 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;      
    }
  }
}
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение 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);
}
впрочем это дело личных предпочтений
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение k_vit »

Ну по умолчанию в Гал-ке берется первы 3 символа от логина, а если дескриптор поменять, то уже функция не сработает :sad:
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

k_vit
не у нас не так, мы дескриптор руками правим -в него еще код филиала прописываем
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

tuneval.cuser это оно. есть ли непосредственно под ним то UserId. Ну и запрос бы я переписал бы с использованием tunename. Есть обратные функции - как получить значение настройки другого пользователя - sgettuneex вроде.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

edward_K
А можно параметры sgettuneex? пробовал так:
sGetTuneEx('USER.DESCR', _userNrec)
-> ругается что не все параметры были указаны
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

string , longint , comp
1. наименование
2 - tuneval.obj вроде 8)
3 - ссылка на пользователя
где то было их описание в доке
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

edward_K
описание не нашел :( в каком доке можно посмотреть?

а tuneval.Obj - за что отвечает?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

TuneVal.Obj = ttUser
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

m0p3e
TuneVal.Obj = ttUser

что есть ttUser?
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

видимо const
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

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