gifts2017

Выгонялка неактивных пользователей - высвобождалка лицензий 8.1, 8.2 (клиент-сервер).

Опубликовал Михаил Шумский (iRounder) в раздел Администрирование - Системное

Выгонялка неактивных пользователей (высвобождалка лицензий) для УПП и не только (клиент-сервер). Платформа 8.1, 8.2. Легко адаптируется под другие конфигурации.

Основная цель выгонялок, которые приходилось видеть здесь - закрытие базы на обслуживание. Здесь же основной идеей проходит высвобождение лицензий.

Сразу прошу - строго не судить. Сделана работа была на заре знакомства с 1С, поэтому на теперяшний ум многое можно было сделать по другому. Но т.к. она работает и есть масса иной работы, то переделывать не брался. Публиковать не собирался - прижало.

В свое время на предприятии сложилась следующая ситуация: имелось 30 лицензий на рабочие места, а учеток более 100. Из-за специфики работы в пиковое время (начало месяца) количество желающих работать в системе переваливало за 30 и начинались звонки от пользователей с сообщениями о невозможности войти в систему, т.к. нет свободных лицензий. Средств на новые лицензии не выделялось. Посему пришлось что-нибудь придумывать. Сразу скажу - не под каждую специфику подойдет. Вся эта задумка не будет работать, если пользователи используют автообновление (в списках документов и т.п.). Но опять же - по нашей специфике использование автообновления не требуется (во всяком случае пока).

Буду рад - если кому-нибудь пригодится идея.

 

А идея на самом деле проста:

1. Создаем регламентное задание (у меня выполняется раз в 180 секунд), в котором высчитываем "время простоя" пользователей. Если время превышает заданный нами эталон (у меня 1000 секунд), то создаем запись в регистре сведений.

2. В модуле приложения подключаем обработчик ожидания (у меня интервал опроса 1200 секунд).

3. Процедура обработчика анализирует регистр сведений из п.1 и выдает предупреждение пользователю (предупреждение выдается даже если 1С свернута в панель). При отсутсвии реакции на предупреждение в течение некоторого времени (у меня это 600 секунд) 1С завершает свою работу.

 В итоге с такими настроенными интервалами выгоняются пользователи, которые не работают с 1С на протяжении 30 минут (+- несколько минут).

P.s.: алгоритм был разработан под 8.1. Адаптация под 8.2 (в режиме совместимости) - изменение версии COMConnector. Не ожидается никаких проблем при адаптации под другие режимы работы и другие конфигурации.

Код и рекомендации по его использованию в прилагаемом файле.

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

Наименование Файл Версия Размер
Подготовительные работы, код и рекомендации 180
.epf 6,51Kb
30.06.12
180
.epf 6,51Kb Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение
Комментарии
0. Михаил Шумский (iRounder) 30.06.12 09:51
Выгонялка неактивных пользователей (высвобождалка лицензий) для УПП и не только (клиент-сервер). Платформа 8.1, 8.2. Легко адаптируется под другие конфигурации.


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

1. Владимир Гусев (adhocprog) 30.06.12 13:20
Спасибо! Особенно понравилась картинка :)
2. Михаил Шумский (iRounder) 30.06.12 13:21
Ну, выбор картинки был самым тяжелым этапом разработки :)
3. Babys (babys) 30.06.12 13:27
Ошибку поправь
которые на работают
4. Михаил Шумский (iRounder) 01.07.12 08:24
5. Fomix (fomix) 02.07.12 17:32
Я так понимаю, регистр сведений пухнет не по-дням, а по-часам...
6. Михаил Шумский (iRounder) 02.07.12 21:55
(5) fomix, смотря о каком регистре речь. Служебный (т.е. обязательный) "Сообщения пользователям" либо после реакции пользователя на предупреждение либо после автоматического завершения работы пользователя - очищается. Т.е. в нем нет никакой "истории" - он можно сказать для временного хранения и практически всегда либо пуст либо ограничивается не более чем 10 записями. А второй регистр - "История неактивных пользователей" мне нужен был просто для сбора статистики. Его заполнение в коде можно просто закомментировать. Либо если история нужна например за месяц - регламентно чистить и оставлять лишь записи за последний месяц.
7. Александр (МимохожийОднако) 04.07.12 06:33
Данную обработку есть смысл запускать, когда количество используемых лицензий достигает своего предела или порога. Предусмотрено ли приостанавливать обработку, если нет пиковой нагрузки?
8. Михаил Шумский (iRounder) 04.07.12 09:15
(7) МимохожийОднако, не предусмотрено. Но код открыт - каждый вправе "допиливать" по своему усмотрению
9. Дмитрий Лазарев (ldma1979) 04.07.12 13:05
(5) fomix, а что, 5-10-50 миллионов записей в таблице, - такая большая проблема?
10. Михаил Шумский (iRounder) 04.07.12 13:15
(9) Я так понимаю это ирония в мою сторону - если да - то в (6) я ответ написал. По-моему очевидно, что никаких проблем с размерами регистров быть не может.
11. Fomix (fomix) 04.07.12 13:16
(9) ldma1979, Дело не в количестве записей, а в том, что хранить этот "мусор" или нет! А если такая настоятельная потребность гасить неработающих пользователей - можно и настройки терминальных сессий поюзать
12. Михаил Шумский (iRounder) 04.07.12 13:21
(11) У нас пользователи не работают в терминалах. И опять же - обязательный регистр - всегда практически пуст. А вспомогательный - так не пишите туда ничего (да и не создавайте его - если история не нужна).
13. Дмитрий Лазарев (ldma1979) 04.07.12 14:52
(10) iRounder, вы неправильно поняли, это ирония в сторону противников записи в базу данных )) мое мнение такое - при правильной организации базы, любая история может иметь важность. На моей практике у меня попросили историю ВСЕХ изменений по заказ-наряду полуторалетней давности...
14. Дмитрий Лазарев (ldma1979) 04.07.12 14:53
(11) fomix, Вы решаете, что есть мусор, а что-нет? Я думал, что это определяется задачей...
15. ИН Север (i-sever) 05.07.12 07:59
1)Создание регламентного задания (раз в 180 секунд), не тормозит работу 1С ?
И еще, речь шла о "создаем запись в регистре сведений", по ответу оказалось, что регистров несколько:
Служебный (т.е. обязательный) "Сообщения пользователям", второй регистр - "История неактивных пользователей".
2)Как у вас происходит регламентная чистка (оставлять лишь записи за последний месяц)
3)Что приходится делать при обновлении программы (поскольку конфа изменена)?
16. Михаил Шумский (iRounder) 05.07.12 09:12
(15) i-sever,
1. Нет. А с чего оно должно тормозить - алгоритм процедуры регламентного задания достаточно прост. Но опять же - на наших объемах не тормозит. Как будет себя вести когда одновременных подключений 200 и более - не знаю. Но мое мнение, что на быстродействии не скажется никак.
Что до регистров - то да, как описано в (6), под создаем запись в регистре в описании публикации имелось в виду создание записи в служебном регистре т.к. второй необязательный.
2. У нас регламентной чистки нет, это было предложено тем, кто боится "роста" регистра. Реализовывать можно по разному. Через те же регламентные задания, например.
3. У нас вопрос так не стоит - обновления происходят очень редко, только критические. Например, как сейчас, при переходе с 8.1 УПП 1.2 на 8.2 УПП 1.3. Конфигурация у нас сильно переработана.
17. fhn iyg (zigomodo) 10.07.12 16:25
Автор молодец.Сильно помогло,а то без прав администратора фиг кого выкинешь с терминалки.
18. Михаил Шумский (iRounder) 10.07.12 17:02
(17) zigomodo, комментарий хорош, только как было определено, что автор молодец, если комментатором не была скачана обработка?
Просьба комментировать тем у кого действительно есть вопросы или публикация принесла пользу, а не тем кому нужны $m за комментарии на форуме.
19. Анянов Михаил (insurgut) 28.07.12 09:06
Проверки на модифицируемость открытых у пользователя документов нету так понимаю? А если бухгалтер редактирует большой документ, ушел на обед - с обеда вернулся и там ничего нет и все заново забивать?
20. Andrey Dyak (electronik) 30.07.12 12:46
21. Михаил Шумский (iRounder) 02.08.12 17:36
(19) Совершенно верно. У нас нет таких объемных документов, чтобы их начинать вводить до обеда - а заканчивать после.
22. Роман (roma03v1) 02.08.12 19:21
Так интересно надо скачать попробовать, всплыла такая же проблема с лицензиями
23. Анянов Михаил (insurgut) 02.08.12 22:54
(21) iRounder, кладовщики инвентаризацию за 5 минут заполняют? Или нет складов? Ну не принципиально, конечно, но не универсально уже получается.
24. Михаил Шумский (iRounder) 08.08.12 13:22
(23) Так я же без претензий на универсальность :) Я в преамбуле писал - что подойдет далеко не для всех. о своих пользователей найдет.
25. Михаил (Santur) 23.10.12 17:24
Доброго времени суток!
выдается ошибка Недопустимое значение параметра (параметр номер '1')

В процедуре СообщениеНеактивномуПользователю()
на
НеактивныйПользователь = РегистрыСведений.СообщенияПользователям.Выбрать(ОтборПользователя);


Вы забыли указать, что у измерения "Кому" в РС "СообщенияПользователям" необходимо установить Индексировать.

P.S: просто все так разжевали, какое измерение, какой ресурс и уже на автомате просто под копирку делаешь и в итоге ошибка...

За идею спасибо!
26. Михаил Шумский (iRounder) 23.10.12 19:40
27. ИН Север (i-sever) 17.04.13 11:27
Как сделать,чтобы время простоя пользователя не включало обеденный перерыв? Прописывать в обработчике или можно настроить в регламентном задании ?
28. Михаил Шумский (iRounder) 17.04.13 21:42
(27) Если не путаю - то сделать это с помощью настройки расписания регламентного задания сделать это не удастся. Посему только добавлять код в обработку. Только не совсем понимаю зачем это делать? Неужели пользователь уходя на обед не может сохранить например документ и спокойно закрыть программу?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа