Показать сообщение отдельно
Старый 30.03.2015, 09:24   #3  
artkashin is offline
artkashin
Участник
MCBMSS
 
519 / 18 (2) ++
Регистрация: 06.12.2006
Цитата:
Сообщение от jopagames3
Цитата:
Сообщение от Дуд Посмотреть сообщение
UserSession.RESET;
UserSession.INIT;
UserSession."Session ID" := Session."Connection ID";
IF NOT UserSession.GET(Session."Connection ID") THEN
UserSession.INSERT(TRUE);
UserSession."User ID" := User_ID;
UserSession."Location Code" := Locations.Code;
А если без стеба и по делу, то так делать вааще нельзя.

Поскольку первичный ключ таблицы - Connection ID, который назначает сессии непосредственно скуль.

Т.е. он при обрыве связи, или когда юзера вышибают с терминального сервера может запросто присвоить такой же Connection ID другому, следующему подключившемуся к SQL пользователю (с другим userid в Навике)

При обрыве связи триггер logout кодеюнита 1, ессно, не отрабатывает и запись в таблице UserSession остается.
Отсюда, думаю, и ошибки. Пользователь читает не свои настройки, а настройки предыдущего зависшего бедолаги.

Но раз исправил, так исправил. Главное - работает! :-)
поддержу Jopy (не свою).
Сумрачный гений придумал на сессии вешать бизнес-логику.