Автоматическое отключение пользователя из системы 1С:Предприятие в случае, когда пользователь не работает в запущенном сеансе











Доработка сделана через расширение, платформа 8.3.12.1529 (8.3.11.2867), работает на конфигурациях 1С: ЗУП, БП, КА, ERP и т.д. в общем на всех основных конфигурациях 1С: Предприятие.
Часто бывает, что в организации пользователь с утра запускает 1С и уходит на весь день по своим делам, а лицензия израсходована. Для оптимизации использования лицензий на предприятии и сделана данная доработка. Доработка позволяет в автоматическом режиме выбрасывать пользователей из системы 1С если пользователь не работает в системе. По умолчанию проверка активности пользователя происходит через 2 часа после запуска системы, но данный параметр можно настраивать отдельно для каждого пользователя. Если пользователь не активен его сессия закрывается.
Расширение работает как в клиент — серверном так и в файловом варианте работы 1С

Скачиваем расширение и проделываем следующие шаги. В приложенных файлах 2 расширения одно с режимом совместимости "Версия 8.3.10", второй файл без режима совместимости для самых "свежих" конфигураций.

Добавляем расширение в конфигурацию

По кнопке "Добавить" загружаем скаченное расширение

Отключаем "галочку" — "Безопасный режим, имя профиля"

Добавляем 2 новых значения в "Дополнительных сведениях"

Для справочника "Пользователи" добавляем 2 новых значения

ВАЖНО!!! Тип значения и имя свойство должно полностью соответствовать тому что указано на скринах

Далее, при необходимости если нужно для какого то из пользователей установить время работы в системе менее или более 2 часов. Заходим в справочник "Пользователя" и для необходимого пользователя устанавливаем значение "Время работы пользователя (минуты)".

Кстати, если у кого то нету доступа к консоли серверов, а пользователя нужно отключить. Можно у необходимого пользователя поменять время начала сеанса (сделать минус 2 часа) и в течении 15 минут пользователь будет отключен от системы. Проверка осуществляется каждые 15 минут.

В момент проверки активности пользователя, выходит информационное окно с вопросом о подтверждении дальнейшей работы пользователя в системе. Если пользователь отвечает утвердительно, он остается работать в системе до следующей проверки активности.

P.S. коллеги если вам понравилась публикация, не забываем проставлять "звездочки" в рейтинге разработки.

6 Comments

  1. Darklight
    Reply
  2. mityushov.vv

    (1) Много написали)))

    Да вариантов реализации много, хотите допилите сами.

    Но данное решение работает уже не в одной организации и ничего пользователи не возмущаются.

    Наоборот это решение дисциплинирует пользователя при работе с системой. Не надо куда то убегать ничего не сохранив в 1С.

    А если пользователь в запарке куда то там нажал, ну надо значит воспитывать таких пользователей что бы в запарке они никуда не нажимали.

    Это из области «Я ехала на мерседесе и засмотрелась в телефон и врезалась» Кто в этом виноват производители Мерседеса?

    Да вопрос зависших сеансов эта доработка не решает, зависшие сеансы иногда и через консоль серверов «убить» не получается, только помогает перезапуск агента сервера.

    Зато эта доработка решает вопрос с нехваткой лицензий очень, очень хорошо, и экономит большие деньги для организации на покупку доп лицензий.

    Представляете в той организации где я ранее работал было 800 пользователей, и если они откроют по одному разу 4-5 разных баз и убегут в туалет на 5 часов. Там вообще ни каких лицензий не хватит.

    Reply
  3. mityushov.vv

    (1) Таймаут кстати у меня 5 минут, можно поменять при желании

    &НаКлиенте
    Процедура КлиентГлобальныйПриНачалеРаботыСистемы() Экспорт
    
    ПолныеПраваМодуль.УстановитьВремяНачалаСеанса();
    
    ПодключитьОбработчикОжидания(«ПроверитьНеобходимостьДальнейшейРаботыПользователя», 900);
    
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ПроверитьНеобходимостьДальнейшейРаботыПользователя() Экспорт
    
    ВремяРаботыВБазе = 120;
    ВремяНачалаСеанса = ПолныеПраваМодуль.ПолучитьВремяНачалаСеанса();
    Если ЗначениеЗаполнено(ВремяНачалаСеанса) Тогда
    ВремяРаботыПользователя = ПолныеПраваМодуль.ПолучитьВремяРаботыПользователяВСистеме();
    Если ВремяРаботыПользователя > 0 Тогда
    ВремяРаботыВБазе = ВремяРаботыПользователя;
    КонецЕсли;
    
    Если ТекущаяДата() — ВремяНачалаСеанса > ВремяРаботыВБазе * 60 Тогда
    ПоказатьОповещениеПользователя(«! Завершение работы 1С !»);
    
    Режим = РежимДиалогаВопрос.ДаНет;
    Оповещение = Новый ОписаниеОповещения(«ПослеЗакрытияВопроса»,СтандартныеПодсистемыКлиент);
    ПоказатьВопрос(Оповещение, «Система запрашивает необходимость продолжения работы с информационной базой.» + Символы.ПС + «Продолжить работу?», Режим, 300);
    КонецЕсли;
    КонецЕсли;
    
    КонецПроцедуры

    Показать

    Reply
  4. Darklight

    (2)Это будет больше похоже не на воспитание а на дрессировку. Ну, не мне Вас судить. Не жалуются — ну и хорошо. У меня бы вой был бы на всю компанию! Пользователи тут ого-го с каким норовом есть. Да и простой офисный планктон бы тоже ещё тот писк поднял бы!

    А контроллировать многократно занятые лицензии — лучше через web-сервис, и механизм «Внешнее управление сеансами» — через обработку каждого нового сеанса. Там и число сеансов можно ограничить на пользователя (причем по своей логике и классификации пользователей). Вести учет числа занятых лицензий и заниматься поиском как зависших сеансов, так и сеансов с отлучившимися надолго, сотрудниками — когда лицензий станет не хватать.

    ну а вообще-то, если пользователи часто открывают по куче баз — лучше использовать аппаратные ключи — экономически более выгодно — на крайняк — ставить лицензии на компьютеры (если, конечно, речь не идёт о работе в web, хотя на лицензии на копьютеры, кажется, и в терминальном сервере тоже нельзя использовать).

    Reply
  5. mityushov.vv

    (4) У нас как раз вся работа через терминальный сервер и планируется работа через web.

    Тем более уже лицензии куплены и стоят на сервере, один ключ. На каждый компьютер покупать нет возможности и так далее.

    Тем более эта разработка рассчитана как на работу в клиент-серверном так и в файловом режиме работы 1С. Кстати про это надо написать, забыл.

    А тут просто скачивается расширение ставиться на базу 5 минут без каких либо доработок системы и снятия ее с поддержки.

    А если у вас дерзкие пользователи, значит ИТ наверное всегда в запарке и всегда во всем виновато))) ну это уже как бы ваши проблемы и не мне вас судить.

    Reply
  6. Darklight

    (5)У нас как раз чем больше сеансов открыто — тем нам лучше — дочерним компаниям мы сдаём лицензии в аренду — и считаем макс число открытых сеансов в день по организациям — выставляем в конце месяца счет!

    Пока лишь просто ограничились макс числом сеансов на пользователя, и ночью все (не находящиеся в исключении) сеансы закрываются.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *