Имя: Пароль:
1C
 
ЗаблокироватьРаботуПользователя(). Как проверить, заблокирована ли работа пользовател
0 Phenomen
 
24.11.09
13:19
Сабж
1 Prikum
 
24.11.09
13:20
Спросить у него?
2 Phenomen
 
24.11.09
13:24
А ты шутник...
Проблема в том, что база блокирует юзвера при его бездействии в течении 10 минут

Если юзвер нифига не делал в базе 20 минут, то для разблокировки требуется 2 раза ввести пароль, 30 минут - 3 раза...
3 Serg_1960
 
24.11.09
13:29
А ты тоже шутник... "...база блокирует юзвера при его бездействии..." - это где так? Точнее, - кто так лихо закрутил?
4 hhhh
 
24.11.09
13:29
(2) если база заблокировала юзверя, то она об этом знает. Зачем ещё раз проверять?
5 Prikum
 
24.11.09
13:29
Я всего лишь ответил на вопрос "Как проверить, заблокирована ли работа ползовател"
6 Phenomen
 
24.11.09
13:30
Я закрутил, была необходимость блокировки.
7 Prikum
 
24.11.09
13:31
Ну тепрь открути! Мы же не знаем, что ты там накрутил?
8 Phenomen
 
24.11.09
13:31
(7) А ответ на вопрос можно?
9 Prikum
 
24.11.09
13:32
Код приведи!
10 Darky
 
24.11.09
13:33
ты же как-то определяешь, что юзер не работал 10 мин. в базе и ставишь блокировку. Соотв-но, если юзер не работал 11 мин. то база уже заблокирована
11 hhhh
 
24.11.09
13:33
(8)  
ЗаблокироватьРаботуПользователя (LockApplication)
Синтаксис:
ЗаблокироватьРаботуПользователя()
Описание:
Блокирует работу пользователя, минимизирует окно 1С:Предприятия и выводит диалог авторизации. Продолжение работы возможно только после ввода пароля.
12 Phenomen
 
24.11.09
13:33
(7) Разжую сабж. Програмно сделана функция блокировки при бездействии. Как _программно_ проверять, заблокирован ли пользователь

Процедура ПроверитьПростойВРаботеПользователя() Экспорт
   Действие = Константы.ДействиеПриПростое.Получить();
   Если Действие.Пустая() Тогда
       Возврат;
   КонецЕсли;
   Блокиратор=Обработки.Блокиратор.Создать();
   ВремяПростоя = Блокиратор.ПолучитьВремяПростоя() / 1000;    // в секундах
   МаксВремяПростоя = Константы.ВремяПростоя.Получить();
   ПревышениеОбработано = ПараметрыСеанса.ПревышениеОбработано;
   Если ВремяПростоя > МаксВремяПростоя Тогда
       Если Не ПревышениеОбработано Тогда
           ОбработатьПревышениеВремениПростоя(Действие);
       КонецЕсли;
   Иначе
       ПараметрыСеанса.ПревышениеОбработано = Ложь;
   КонецЕсли;
КонецПроцедуры

Процедура ОбработатьПревышениеВремениПростоя(Действие)
   ПараметрыСеанса.ПревышениеОбработано=Истина;
   Если Действие=Перечисления.ВидыДействийПриПростое.ЗаблокироватьСеанс1С Тогда
       ЗаписьЖурналаРегистрации("Заблокирована работа пользователя", УровеньЖурналаРегистрации.Предупреждение, , , "Простой в работе");
       ЗаблокироватьРаботуПользователя();        
   ИначеЕсли Действие=Перечисления.ВидыДействийПриПростое.ЗаблокироватьСеансWindows Тогда
       //ЗапуститьПриложение("rundll32.exe user32.dll,LockWorkStation");
   ИначеЕсли Действие=Перечисления.ВидыДействийПриПростое.ЗавершитьРаботу1С Тогда
       ЗаписьЖурналаРегистрации("Завершение работы пользователя", УровеньЖурналаРегистрации.Предупреждение, , , "Простой в работе");
       ЗавершитьРаботуСистемы(Ложь);
   ИначеЕсли Действие=Перечисления.ВидыДействийПриПростое.ЗавершитьРаботуWindows Тогда
       //ЗапуститьПриложение("shutdown -s");
   КонецЕсли;
КонецПроцедуры
13 Phenomen
 
24.11.09
13:35
(11) это ответ не на тот вопрос
14 Serg_1960
 
24.11.09
13:35
(8) Ответ: никак. В платформе нет функционала для проверки. Сам закрутил - сам и выкручивайся как хочешь. Ну например добавить что-ли в базу регистр сведений для регистрации состояния пользователя...
15 Fragster
 
гуру
24.11.09
13:35
(0) баян!
ЗаблокироватьРаботуПользователя();
Сообщить("Наконец-то разблокировался!");
16 Darky
 
24.11.09
13:35
(13) что скажешь на (10) ?
17 Fragster
 
гуру
24.11.09
13:36
ну, или модифицируя (14):

УстановитьПометкуОБлокировке();
ЗаблокироватьРаботуПользователя();
СнятьПометкуОБлокировке();
18 Phenomen
 
24.11.09
13:37
(16) скажу что не канает, потому что проверка на бездействие происходит раз в 5 минут.
Можно, конечно, поиграццо со временем... но должно быть что-нить попроще
19 Phenomen
 
24.11.09
13:38
(15) Перечитай вопрос
20 Phenomen
 
24.11.09
13:38
(14) награмождение
21 Fragster
 
гуру
24.11.09
13:38
(19) -> (17)
22 Fragster
 
гуру
24.11.09
13:39
(21) пометку ставишь куда хочешь - в РС, в файл на диске, посылаешь сообщение на веб-сервер, пофигу
23 Prikum
 
24.11.09
13:39
Я так понимаю, что 3 раза вызываешь блокировку? Может быть сделать проверку на то, что пользователь уже заблокирован?
24 Phenomen
 
24.11.09
13:41
(23) В этом и вопрос, как сделать эту проверку
Через регистр сведений - не интересно
Через параметры сеанса - еще можно подумать.. но тоже не очень интересно
25 Serg_1960
 
24.11.09
13:42
А если в параметры сеанса вбить тригер блокировки? Автора устроит?
26 hhhh
 
24.11.09
13:42
(22) ну она ведь не перейдет на следующую команду, пока пользователь на наберет пароль. Как-то через фоновые задания надо.
27 Phenomen
 
24.11.09
13:43
(14) если есть функционал блокировки, то теоритически должны быть функции для работы с ним
28 Phenomen
 
24.11.09
13:44
(25) -> (24)
29 Phenomen
 
24.11.09
13:44
(26) почему это не перейдет? перебежит еще как
30 Fragster
 
гуру
24.11.09
13:44
(26) в этом и смысл - мы ставим пометку, блокируем. пометка сама снимется при вводе пароля.
31 Fragster
 
гуру
24.11.09
13:45
(29) пробовал?
32 hhhh
 
24.11.09
13:45
(29) ну я вот попробовал в отладчике, у меня не перебежала.
33 Phenomen
 
24.11.09
13:47
(31) не особо
(32) а ПодключитьОбработчикОжидания() срабывает на ура...

Идей кроме параметров сеанса и игры со временем нет?
34 hhhh
 
24.11.09
13:50
(33) ты просто физически не сможешь снять блокировку. Смотри (11). Поэтому забей на эту команду и сделай блокировку своими средствами.
35 Fragster
 
гуру
24.11.09
13:52
(33) если тебе для нового запуска таймера -
ОтключитьОбработчикОжидания()
ЗаблокироватьРаботуПользователя()
ПодключитьОбработчикОжидания()
36 Serg_1960
 
24.11.09
13:56
(33) Есть. Предупреждать пользователя о блокировке изменяя заголовок системы :)

PS: обсуждали и не раз "Что есть бездействие...". Мнения расходятся. Магагер получил выборку с ценами и обсуждает по телефону с клиентом. А тут ты, как чёртик из табакерки, со своей блокировкой...
37 Phenomen
 
24.11.09
13:56
(34) Проблема в том, что мне не надо снимать блокировку, мне надо проверять, уже заблокирована работа пользователя или нет
(35) Хм... антиресненько... сейчас попробую
38 Phenomen
 
24.11.09
14:04
(35) Работает, спс
(36) Лучше пусть пусть очередно
39 Phenomen
 
24.11.09
14:05
(36) Лучше пусть очередной раз введен пароль, чем под его паролем кто-нить уведен пару коробок передач налево...
40 Fragster
 
гуру
24.11.09
14:08
(39) один раз сделайте как в OFF: Это ж как надо достать людей... пост № 4 - и все, никто ничего забывать не будет
41 Phenomen
 
24.11.09
14:10
(40) Учили, лечили.. приходит новенький и ппц

Всем спасибо
42 СноваЗдорова
 
24.11.09
14:15
При такой манере общения стоит радоваться что вообще ответы получал.