Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Как получить у время бездействия пользователя? (число прочтений - 9073 )
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Как получить у время бездействия пользователя?
30. Октября 2007 :: 12:31
Печать  
Вообщем задача такая:
1.Есть сервер терминалов и юзьверы работает в 1С именно в нем.
2.Админы настроили закрытие сеансов пользователей при их бездействии в течении 2 часов (может быть и другое).
3.Но некоторые нерадивые юзверы помимо того еще и оставляють запущенной 1С .

Естетсвенно после убивания сеанса 1С понимает что ее завалили аварийно.
Возникает соответствующая задача:
1.Как получить время положенное сеансу на бездействие?
2.Как получить время которое текущий сеанс бездействует?

Прошу ногами не бить.
Просто надо.
PS. Отлавливать в 1С ПриДвиженииМыши() и ПриНажатииКнопкиКлавиатуры() не предлогать, до этого я сам додумался.Просто некошерно получается. Может можно как нибуть через скрипты?

  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #1 - 30. Октября 2007 :: 12:52
Печать  
Через WMI можно. Но искать долго.

вариант проще, но дороже - поставить SQL Улыбка
Там пофиг на вылеты.
  
Наверх
 
IP записан
 
vig
Junior Member
**
Отсутствует


Мой опыт показывает, что
умирают обычно другие.

Сообщений: 34
Местоположение: Киев
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #2 - 30. Октября 2007 :: 14:16
Печать  
Интуиция подсказывает, что весия dbf.
Сначала была идея написать скрипт на logoff пользователя, который чистит созданные этим пользователем
файлы *.$lk. Я так понимаю, что именно по наличию этих файлов 1С определяет, что было аварийное завершение
и требуется переиндексация. Но в таком случае, при аварийном завершении 1С и последующем logoff е
пользователя мы теряем информацию о необходимости переиндексации Печаль
Остается тупой выход - в каждой форме вызывать глобальную функцию например, ПриоткрытииЛюбойФормы,
которая обновляет глобальную переменную, полученную _GetPerformanceCounter().
А в обработке ожидания сверять, как давно открывалась любая форма. Если давно, то ЗавершитьРаботуСистемы.
Я пока вижу только этот выход.
  
Наверх
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Как получить у время бездействия пользователя?
Ответ #3 - 30. Октября 2007 :: 14:20
Печать  
Arta писал(а) 30. Октября 2007 :: 12:52:
Через WMI можно. Но искать долго.

вариант проще, но дороже - поставить SQL Улыбка
Там пофиг на вылеты.

1.А больше никак?
2.SQL нельзя.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #4 - 30. Октября 2007 :: 14:25
Печать  
В ВинАпи есть спец. функция для получения времени бездействия пользователя.
Немного разгребусь и добавлю соответствующий либо в 1С++::Информатор, либо в ФормЕкс::Сервис.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
vig
Junior Member
**
Отсутствует


Мой опыт показывает, что
умирают обычно другие.

Сообщений: 34
Местоположение: Киев
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #5 - 30. Октября 2007 :: 14:30
Печать  
Код
Выбрать все
добавлю соответствующий либо в 1С++::Информатор, либо в ФормЕкс::Сервис
 


Будет супер. По-моему, лучше в 1С++::Информатор.
  
Наверх
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Как получить у время бездействия пользователя?
Ответ #6 - 30. Октября 2007 :: 14:34
Печать  
(2) такой подход не годиться.
Потому как юзьвер может работать в базе и анализировать скажем какой нибуть отчет
или продавец открыл форму справочника и только лазить по ней и смотрит на товары цены
и работает только с одной этой формой.
есно она может быть открыта и час и два и более посму данный вариант негодиться.
+ он периодически может прыгать от 1С скажем к Excel и назад причем в 1С ничего не открывая.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Как получить у время бездействия пользователя?
Ответ #7 - 30. Октября 2007 :: 14:37
Печать  
artbear писал(а) 30. Октября 2007 :: 14:25:
добавлю соответствующий либо в 1С++::Информатор, либо в ФормЕкс::Сервис.


Точно было бы здорово.
Так может и чтение времени блокировки рабочего стола можно от туда вытащить?
И предел времени на бездействие сеанса?
  
Наверх
 
IP записан
 
vig
Junior Member
**
Отсутствует


Мой опыт показывает, что
умирают обычно другие.

Сообщений: 34
Местоположение: Киев
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #8 - 30. Октября 2007 :: 14:52
Печать  
(6) Согласен.
  
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #9 - 30. Октября 2007 :: 15:50
Печать  
vig писал(а) 30. Октября 2007 :: 14:30:
Код
Выбрать все
добавлю соответствующий либо в 1С++::Информатор, либо в ФормЕкс::Сервис
 


Будет супер. По-моему, лучше в 1С++::Информатор.

+1, избавлюсь еще от одной dll-ки...
Только вот надо еше подумать как это все использовать и где.
  
Наверх
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #10 - 30. Октября 2007 :: 16:30
Печать  
trdm писал(а) 30. Октября 2007 :: 15:50:
Только вот надо еше подумать как это все использовать и где.



Например, есть у меня внутренняя почта. И как в аське/миранде у меня вылазит всплывающее окно, когда приходит новое сообщение.
Людям такие фишки интуитивно понятны.
  
Наверх
 
IP записан
 
Alex_D
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 20
Зарегистрирован: 02. Мая 2007
Re: Как получить у время бездействия пользователя?
Ответ #11 - 31. Октября 2007 :: 01:21
Печать  
А если исползовать перехват мыши-клавиатуры из FormEx-а, что-бы сбрасывать счетчик бездействия?
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Как получить у время бездействия пользователя?
Ответ #12 - 31. Октября 2007 :: 06:48
Печать  
Alex_D писал(а) 31. Октября 2007 :: 01:21:
А если исползовать перехват мыши-клавиатуры из FormEx-а, что-бы сбрасывать счетчик бездействия?

Негодиться потому что танцуй не танцуй над Мышкой или клавой, а если окно 1С станет не активным то все перехват пропадает.
А это в корне не верно, да + учесть что в терминале работает от 20 до 30 юзверов то нагрузка на систему будет неочень-то и веселая.

Так что вариант Артура с Информатором это то что надо!
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как получить у время бездействия пользователя?
Ответ #13 - 31. Октября 2007 :: 11:03
Печать  
В принципе, я метод реализовал ( Информатор::ПолучитьВремяПростояКомпьютера() ), но в ночную сборку пока не закидывал.
Потому что есть ограничение - метод будет работать только в ВинМЕ/2000/ХП и выше.

Поэтому предварительно я решил выяснить, в каких ОС мы юзаем 1С++.
Прошу голосовать http://www.1cpp.ru/forum/YaBB.pl?num=1193827086/0
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Как получить у время бездействия пользователя?
Ответ #14 - 31. Октября 2007 :: 13:48
Печать  
ОГРОМАДНЕЙШЕЕ СПАСИБО АРТУРУ
Информатор.ПолучитьВремяПростояСистемы()
время в миллисекундах!

Работает на УРА и на локальной машине и в терминальной сесии!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать