Определение простоя в работе пользователя.

Опубликовал Андрей Скляров (coder1cv8) в раздел Администрирование - Журнал регистрации

Данная разработка предназначена для отслеживания простоя (т.е. отсутствия движений мышью/нажатий клавиатуры) работы пользователя в течение определенного промежутка времени и выполнения одного из следующих действий:
- Блокировка сеанса 1С;
- Блокировка сессии Windows;
- Завершение работы 1С;
- Завершение работы Windows.

Разработка оформлена в виде подсистемы, которая легко может быть интегрирована в любую типовую (или свою) конфигурацию.

Общая структура подсистемы:
1. Константы:
1.1. Период опроса простоя – периодичность, с которой проверяется текущее время простоя системы (в секундах).
1.2. Время простоя – максимальное время НЕ активности пользователя, после которого система считается находящейся в состоянии простоя (в секундах).
1.3. Действие при простое (одно из возможных действий, перечисление).
2. Роль «Проверять простой сеанса». Установите эту роль для пользователей, у которых должна выполняться проверка простоя работы. Предназначена для отделения обычных пользователей от тех, для кого проверка не выполняется (например, фоновые задания, внешние подключения и т.д.).
3. Обработка «Блокиратор». Форма служит для редактирования констант (недоступно пользователю, у которого установлена роль «Проверять простой сеанса»).

Порядок установки:
1. Объедините эту конфигурацию с исходной. Обратите внимание на единственное место, где требуется внести изменения в исходную конфигурацию – это модуль приложения.
2. Откройте в режиме «Предприятия» обработку «Блокиратор» и заполните настройки.
3. Установите для нужных пользователей в доступных ролях «Проверять простой сеанса».

Скачать файлы

Наименование Файл Версия Размер
DownTimeControl.zip
.1222431597 217,79Kb
10.07.13
1580
.1222431597 217,79Kb 1580 Скачать бесплатно

См. также

Комментарии
0. Андрей Скляров (coder1cv8) 3286 26.09.08 16:25 Сейчас в теме
Данная разработка предназначена для отслеживания простоя (т.е. отсутствия движений мышью/нажатий клавиатуры) работы пользователя в течение определенного промежутка времени и выполнения одного из следующих действий:
- Блокировка сеанса 1С;
- Блокировка сессии Windows;
- Завершение работы 1С;
- Завершение работы Windows.

Перейти к публикации

1. Андрей Скляров (coder1cv8) 3286 26.09.08 16:25 Сейчас в теме
Часто встречаю вопросы на форумах типа "Как заблокировать/закрыть сеанс 1С при простое", поэтому появилась такая вот безделица... )
2. Михаил Ражиков (tango) 470 26.09.08 16:29 Сейчас в теме
хорошо бы этот функционал полностью внешний
3. Андрей Скляров (coder1cv8) 3286 26.09.08 16:34 Сейчас в теме
(2) Можно если, разве что, сделать в виде внешней обработки и её открытой у пользователя держать всё время... Что, согласись, не красиво.
А так изменения вносимые в конфигурацию минимальны, только подключение обработчика ожидания при начале работы, остальные все объекты добавляются.
4. Роман Петров (PeRom) 50 26.09.08 16:53 Сейчас в теме
Отлично за идею, на досуге опробую.
5. zyto (zyto) 26.09.08 18:23 Сейчас в теме
Это из серии - работаешь, работаешь, и тут бац - заставка!
6. Андрей Скляров (coder1cv8) 3286 26.09.08 19:12 Сейчас в теме
(5) В смысле?... )
Хотя, лично у меня, не возникало необходимости в подобных утилитах... Сам бывает "медитирую" над кодом пока заставка не появится... )
Но раз люди спрашивают, значит кому-то это необходимо. Вон бывает ключиков на всех не хватает )
7. Сергеев Н. (sergeevn1) 29.09.08 03:59 Сейчас в теме
А у меня отчет формируется два часа без нажатий мыши и клавиатуры. Тоже получится простой?
8. Андрей Скляров (coder1cv8) 3286 29.09.08 08:06 Сейчас в теме
(7) Надо отчеты оптимальней писать, товарищ! ))
А если серьезно, то да, если пользователь вообще не будет трогать клавиатуру и мышь эти 2 часа, уйдет например куда-нибудь - то это простой. А если он свернет окошко 1С и будет другими делами заниматься, то простоя не будет.
9. Михаил Семенов (Shaman100M) 1176 29.09.08 14:37 Сейчас в теме
(8) Если выполняется отчет, опрос "по бездействию" пользователя не производится до тех пор, пока отчет не выполнится? Тогда, имхо, логично к накапливаемому общему времени простоя добавлять не время выполнения отчета, а просто один период опроса, или, обобщенно, [кол-во опросов за время выполнения чего-л] х [период опроса]
10. Андрей Скляров (coder1cv8) 3286 29.09.08 15:33 Сейчас в теме
(9) Да, опрос времени бездействия выполняется через ОбработчикОжидания, поэтому, естественно, в период формирования отчета/выполнения обработки он не делается. Суть в том что считается время простоя системы, а не 1С. Поэтому формирование отчета в общем случае не является простоем, что вполне логично, ИМХО.
11. Трактор Трактор (Трактор) 1126 29.09.08 21:31 Сейчас в теме
ИМХО считаю лишним делать три константы ПериодОпросаПростоя, ВремяПростоя, ДействиеПриПростое. Я бы обошёлся одной константой "НатройкаПриПростое" типа строка неограниченной длины. Туда можно запихивать структуру с нужным количеством полей.
Возможно это тема для форума, но мне лень идти на форум...
12. Андрей Скляров (coder1cv8) 3286 30.09.08 08:03 Сейчас в теме
(11) Конечно, можно вообще все константы таким образом "упаковать". Но это, на мой взгляд, не совсем методически грамотно. Да и здесь главное сделать наглядно, что бы был понятен принцип. А дальше каждый может модернизировать как считает нужным...
13. Олег Веселов (sml) 35 01.10.08 17:58 Сейчас в теме
а как насчет того, чтобы простоем считать неактивность сессии (не елозит мышь в окне 1С, не нажимаются клавиши в активном окне 1С и при этом загрузка процессора процессом 1с = 0?

дело в том, что многие юзверя понаоткрывают окон 1С на рабочем столе и в это время трут в асе или шарят в нете - а ресурсы заняты в это время.
14. Андрей Скляров (coder1cv8) 3286 01.10.08 18:53 Сейчас в теме
(13) Ну а что же вы хотите от БЕСПЛАТНОЙ разработки? ) Можно сделать и это. У софтпоинта, вроде, есть подобное решение, которое считает именно активность процесса 1С, но это и денег стоит не малых я думаю...
15. Михаил (puh) 27.11.08 17:02 Сейчас в теме
(13) 1С всегда загружает проц, либо это обработки ожидания, либо в открытых списках идет обновление информации.
16. Светлана Мих (alina-aud) 13.02.10 19:14 Сейчас в теме
заинтересовала Ваша обработка ...
подскажите, а для терминального сервера можно доработать? Т.е. человек удаленно по rdp заходит в сессию ..... срабатывает блокиратор, но после закрытии 1С через пару секунд и закрывается сеанс пользователя с сервером....
17. Андрей Скляров (coder1cv8) 3286 14.02.10 19:42 Сейчас в теме
(16) да, это возможно сделать )
18. Светлана Мих (alina-aud) 14.02.10 22:35 Сейчас в теме
(17) к сожалению, shutdown -l не поддерживает указание времени задержки в 5 секунд ... [shutdown -l -t 5]
на сервере запущена программа, которая "контролирует" закрытие 1с, а потом уже разрешает закрыть сессию .... и вот без этой задержки идея и накрылась =(
19. Андрей Скляров (coder1cv8) 3286 15.02.10 09:15 Сейчас в теме
(18) скрипт написать, вызывающий shutdown, куда вставить sleep(5000)
20. Светлана Мих (alina-aud) 15.02.10 12:24 Сейчас в теме
(19) вот, подсказали кусок кода ... как бы сюда вставить задержку?

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")

errResult = objWMIService.Create("B:\1cv8.exe", null, int1cID)

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colProcesses = objWMIService.ExecNotificationQuery _ ("Select * From __InstanceDeletionEvent Within 1 Where TargetInstance ISA 'Win32_Process'")

Do Until False = True
Set objProcess = colProcesses.NextEvent
If objProcess.TargetInstance.ProcessID = int1cID Then
Exit Do
End If
Loop

Set objShell = CreateObject("Wscript.Shell")
objShell.run "shutdown /l"
21. Вадим Иванцов (grum01) 210 06.09.11 08:13 Сейчас в теме
(20) Настрой сеанс терминала (в настройках пользователя), на запуск 1С при входе на сервер. Тогда сеанс RDP будет автоматически закрываться сам при окончании работы в программе.
:D
22. Филин (fillin) 198 11.09.11 22:06 Сейчас в теме
Какая-то польза от новой системы, наверное, есть. Напомнили, что надо воздать должное авторам. (На http://infostart.ru/profile/activity/downloads/ теперь есть значки-напоминалки)
Скачал эту разработку уже давно. Аж 25.10.08.

Прикрутил к корпоративной УПП, кое-что допилил: добавил предупреждения юзерам о скором закрытии сеансов, лог в журнал регистрации, и после закрытии сеанса с помощью AutoIt выводится сообщение о том, что сеанс 1С закрыт из-за простоя (Чтоб юзера не паниковали).
Эффект: У нас 110 ключей было. Их стало не хватать, но на новые в бюджете тек. года средств не было. После того, как прикрутил эту обработку, и мертвые сеансы стали автоматом завершаться через 2 часа, выснилось, что реально работающих пользователей в среднем 80 человек.
Теперь у нас нет проблем с нехваткой ключей.
23. Игорь (uropek) 20.09.11 21:27 Сейчас в теме
то, что доктор прописал!
24. Сергей Мурзинов (Sergey_Murzinov) 28.09.11 18:37 Сейчас в теме
Используем, сначала юзвери ворчали, потом привыкли. Нормально
25. Nur Islam (Ruslan***) 06.12.11 17:38 Сейчас в теме
Спасибо. Применил идею завершения работы в 1С.
26. Юлия Петрова (petrovaUL) 20.12.11 06:44 Сейчас в теме
Спасибо. Пригодиться - оптимизировать работу пользователей, бывает из 1С-ки не выходят и ПК не отключают.
27. Petr Ivanov (goodman12) 4 20.12.11 07:30 Сейчас в теме
Спасибо, полезно. А то черти эти вечно забывают выходить как положено
28. Николай Пархоменко (Klondaik) 26.12.11 15:12 Сейчас в теме
Отличная публикация. Сделал с ее помощью выход в режим ожидания программы, а то складские работники вечно оставляют все открытым и по свим делам ходят.
29. Иван Иванов (piton667) 18.01.12 17:56 Сейчас в теме
Столкнулся с похожей проблемой, ключей не хватает, сервак тормозит, а юзеры по 3 часа висят неактивные.....

Может кто загонялся над таким вопросом , может можно подключаться к диспетчеру служб терминалов как к КОМ-объекту? Чтобы от туда получать простои пользователя, и на основании этого выкидывать их...
33. antgrom (antgrom) 11.05.12 17:51 Сейчас в теме
Взял файл по ссылке на Народ.
Блокировка не работает ни в оригинальной конфе , ни при объединении с другой базой.
Проверял только в файловом режиме.
ОС : Виста.
Платформа : 8.1.13.41.


В чем может быть причина отсутствия блокировок ?
34. antgrom (antgrom) 12.05.12 18:04 Сейчас в теме
+ 33 Все работает. Вопрос снят.

Реализовано красиво.
35. Михаил (Santur) 8 23.10.12 17:52 Сейчас в теме
(22) fillin, а не хотели бы поделиться допиленной версией?
36. Виталий Васькович (mr_best_23rus) 29 17.07.13 22:19 Сейчас в теме
Автору респект! Подсистема помогла!
37. Иван Иванов (avk2009) 18.11.13 11:25 Сейчас в теме
Спасибо за разработку, а главное за то, что скачивание бесплатное! Сконвертировал для 1С 8.2 - все работает без нареканий.
38. Василий (Velliar) 03.02.14 11:51 Сейчас в теме
А с терминальной сессией дружит обработка?Понимает она что 1С запущенна, но терминал свернут?
39. Степан Иванов (medvedev8) 15.09.14 08:58 Сейчас в теме
Добрый день! Подскажите, пожалуйста, возможно ли в качестве времени простоя считать время простоя 1С, а не всей системы?
40. Рамиль Баширов (bashirov.rs) 13 15.10.14 12:35 Сейчас в теме
Возьмем на заметку. Спасибо - ставлю плюс!
41. Namig Pirkuleiv (Namig) 24.12.14 20:26 Сейчас в теме
в 8.0.18.2 выдает ошибку: {ОбщийМодуль.ПроверкаПростоя(8)}: Метод объекта не обнаружен (ВремяПростоя)
ВремяПростоя=Блокиратор.ВремяПростоя()/1000; // в секундах
42. Евгений Кредько (kredko) 16 03.08.15 07:33 Сейчас в теме
Для SQL-ного варианта такая фича будет когда-нибудь?
Хотя уже не надо. Написал сам для документооборота на уФ.
43. Сергей Пономарёв (izidakg) 123 16.08.16 16:08 Сейчас в теме
просто и эффективно, наткнулся на эту разработку в БД клиента и только потом уже тут нашел подробное описание и обсуждение.
у меня только один вопрос - в обработке "Блокиратор" в макете зашит файл EXE и естественно возник вопрос а что он делает?
serjik777; +1 Ответить
44. Раиса Захарова (Risoks) 16 24.11.16 13:27 Сейчас в теме
Скачала. Не могу воспользоваться:
"Структура конфигурации несовместима с текущей версией программы"
Оставьте свое сообщение