Подсистема автоматизированного завершения сеансов 1С при неактивности пользователей


У многих клиентов на сервере терминалов, особенно крупных, часто возникает проблема нехватки лицензий. Часто это связано с тем, что пользователь в удаленном филиале по тем или иным причинам не завершил свой сеанс. Была поставлена задача автоматически завершать сеансы 1С, неактивные в течении определенного промежутка времени. Решение было частично взято из публикации http://infostart.ru/public/16441/ и переделано как под обычные, так и под управляемые формы.

Как и в источнике (//infostart.ru/public/16441/), решения оформлены в виде подсистемы, подключаемой к любой типовой конфигурации. Подсистема имеет две роли: Администрирование системы простоя и  Проверять простой сеанса.

Пользователь с первой ролью может устанавливать значения констант: Период опроса простоя, Время простоя и Действие при простое. При этом, первые две константы задаются в секундах.

Обработка «Блокиратор». Форма служит для редактирования констант.
В качестве проверяющего инструмента для простоя использован скрипт, предоставленный //infostart.ru/profile/12366/
Порядок установки:
  1. Объедините эту конфигурацию с исходной. Обратите внимание на единственное место, где требуется внести изменения в исходную конфигурацию – это модуль обычного приложения (или модуль управляемого приложения).
  2. Откройте в режиме «Предприятия» обработку «Блокиратор» и заполните настройки.
  3. Установите для нужных пользователей в доступных ролях «Проверять простой сеанса».

В версиях 1.01 добавлены еще две константы: Время начала проверки (имеет формат времени, если заполнена, то будет выбрасывать пользователей не ранее установленного параметра) и Таймаут вывода запроса (устанавливается в секундах и, если он больше нуля, то выводит запрос пользователю перед завершением работы сеанса).

11 Comments

  1. cj512

    А че стандартный способ выкидывания спящих сеансов уже не работает? P.S. настраивается в конфигураторе

    Reply
  2. graphbuh

    Можно ли доработать эту систему, чтобы выдавала предупреждения о том, что работа будет завершена (на случай, если пользователь просто запустил отчет на формирование и ушел покурить на 2 ч.)

    Reply
  3. Protey77

    (2) Сделать можно все. А за дополнительную плату еще больше 🙂

    А с Вашим вопросом, лучше все-таки ввести дополнительную константу типа времени, чтобы отключалась, например, только после 17:00. В результате человек, работающий в вечернее время будет работать, а оставивший сеанс открытым и ушедший домой — будет отключен.

    Reply
  4. Kontakt

    (3) актуально. Можно реализовать от какого времени отключать. Например после 19:00

    Reply
  5. Protey77

    (4)В версиях 1.01 добавлены еще две константы: Время начала проверки (имеет формат времени, если заполнена, то будет выбрасывать пользователей не ранее установленного параметра)

    т.е. уже реализовано.

    Reply
  6. Kontakt

    Из за чего может не срабатывать? Платформа на сервере 1С 8.3.8

    Reply
  7. Kontakt

    Процедура ПроверитьПростойВРаботеПользователя() кем запускается у Вас?

    Reply
  8. DrBlack

    Мы на УПП используем регламентное задание, которое срабатывает раз в сутки (ночью), нас это вполне устраивает, кому интересно, вот код:

    Процедура аск_ЗавершениеСеансовПользователей() Экспорт
    ПараметрыАдминистрированияИБ = СоединенияИБ.ПолучитьПараметрыАдминистрированияИБ();
    СоединенияИБ.ОтключитьСоединенияИБ(ПараметрыАдминистрированияИБ);
    КонецПроцедуры
    

    ЗЫ: Да-да-да, всего пару строк, а столько проблем снимают… 🙂

    Reply
  9. Kontakt

    (8) Если кто по ночам работает? Формирует отчеты, запускает обработки на ночь. Как с ними?

    Reply
  10. Kontakt

    Добавил в модуль СоединенияИБГлобальный строки. Иначе не не запускалась процедура.

    // Выполнить завершение текущего сеанса, если установлена блокировка соединений
    // с информационной базой.
    //
    Процедура КонтрольРежимаЗавершенияРаботыПользователей() Экспорт
    
    //+++Блокировка
    //Для проверка роли, не гоняем лишний раз файл на проверку.
    Если РольДоступна(«Ст_ПроверятьПростойСеанса»)Тогда
    
    ПараметрыСеанса.Ст_ПревышениеОбработано=Ложь;
    ПроверитьПростойВРаботеПользователя();
    
    КонецЕсли;
    //—

    Показать

    Reply
  11. DrBlack

    (9) ну я описал частный случай, даже подчеркнув:

    нас это вполне устраивает

    Мало ли кого это тоже устроит? Решение ведь совсем простое… 🙂

    Reply

Leave a Comment

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