Программирование на Атлантисе (VIP, FCOM, ARD), FastReport
Модераторы: m0p3e , edward_K , Модераторы
galover
Местный житель
Сообщения: 794 Зарегистрирован: 16 ноя 2007, 13:52
Сообщение
galover » 21 ноя 2008, 16:50
Как зная дескриптор получить nrec пользователя из x$users?
Вот так: select tuneval.cuser from tuneval where (('some_descr' == tuneval.StrVal(noindex)));
?
или есть какие специальные функции?
k_vit
Постоянный обитатель
Сообщения: 143 Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"
Сообщение
k_vit » 21 ноя 2008, 16:55
Если идёт речь о дескрипторе, под которым работает пользователь, то можно из настроек взять :
sGetTune('USER.DESCR') - Дескриптор
sGetTune('USER.FIO') - ФИО
k_vit
Постоянный обитатель
Сообщения: 143 Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"
Сообщение
k_vit » 21 ноя 2008, 17:06
А если хотите по какому-либо другому дескриптору вытянуть, то я бы сделал так
Код: Выделить всё
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 » 21 ноя 2008, 18:48
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 » 21 ноя 2008, 23:44
Ну по умолчанию в Гал-ке берется первы 3 символа от логина, а если дескриптор поменять, то уже функция не сработает
galover
Местный житель
Сообщения: 794 Зарегистрирован: 16 ноя 2007, 13:52
Сообщение
galover » 22 ноя 2008, 15:02
k_vit
не у нас не так, мы дескриптор руками правим -в него еще код филиала прописываем
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188 Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb
Сообщение
edward_K » 22 ноя 2008, 15:18
tuneval.cuser это оно. есть ли непосредственно под ним то UserId. Ну и запрос бы я переписал бы с использованием tunename. Есть обратные функции - как получить значение настройки другого пользователя - sgettuneex вроде.
galover
Местный житель
Сообщения: 794 Зарегистрирован: 16 ноя 2007, 13:52
Сообщение
galover » 26 ноя 2008, 19:53
edward_K
А можно параметры sgettuneex? пробовал так:
sGetTuneEx('USER.DESCR', _userNrec)
-> ругается что не все параметры были указаны
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188 Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb
Сообщение
edward_K » 26 ноя 2008, 21:58
string , longint , comp
1. наименование
2 - tuneval.obj вроде
3 - ссылка на пользователя
где то было их описание в доке
galover
Местный житель
Сообщения: 794 Зарегистрирован: 16 ноя 2007, 13:52
Сообщение
galover » 27 ноя 2008, 10:34
edward_K
описание не нашел
в каком доке можно посмотреть?
а tuneval.Obj - за что отвечает?
m0p3e
Местный житель
Сообщения: 1386 Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Сообщение
m0p3e » 27 ноя 2008, 13:36
TuneVal.Obj = ttUser
galover
Местный житель
Сообщения: 794 Зарегистрирован: 16 ноя 2007, 13:52
Сообщение
galover » 27 ноя 2008, 13:44
m0p3e
TuneVal.Obj = ttUser
что есть ttUser?
Den
Местный житель
Сообщения: 1846 Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:
Сообщение
Den » 27 ноя 2008, 14:52
видимо const
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188 Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb
Сообщение
edward_K » 27 ноя 2008, 16:14
это тип настройки
- пользовательская, системная, филилальная. Повычисляйте по Ctrl+F4 tvalue.obj - поймете.
зачем в этой функции нужно не понимаю - могли бы и по tunedef определить.