В повседневной работе пользователей часто возникает ситуация, когда необходимо ненадолго отойти от рабочего места. Оставлять программу 1С открытой небезопасно: посторонние лица могут получить доступ к конфиденциальным данным или случайно изменить документы. Закрывать программу полностью тоже неудобно, ведь в ней могут быть открыты важные отчеты, не сохраненные черновики документов или ресурсоемкие обработки. В этой статье мы подробно разберем, как реализовать временную блокировку сеанса в 1С:Предприятие 8.3 без завершения работы программы.
Самый простой и правильный способ решить эту задачу на программном уровне — использовать встроенную функцию платформы 1С. Глобальный контекст содержит специализированный метод, созданный именно для этих целей.
Давайте проанализируем синтаксис и особенности работы метода ЗаблокироватьРаботуПользователя():
Для вызова блокировки достаточно выполнить простую команду на клиенте:
&НаКлиенте
Процедура ЗаблокироватьСеансВыполнить()
ЗаблокироватьРаботуПользователя();
КонецПроцедуры
Выясним, как предоставить пользователю удобный доступ к этой функции в зависимости от используемого типа клиента.
Для толстого клиента (обычные формы):
В старых конфигурациях или при работе в режиме толстого клиента кнопка блокировки доступна на уровне платформы. Если она скрыта, пользователь может добавить ее самостоятельно:
Для тонкого клиента (управляемые формы, БСП):
В современных конфигурациях на платформе 8.3 (таких как Управление торговлей 11, ERP, Комплексная автоматизация) стандартной кнопки блокировки на панели разделов нет. Чтобы решить эту задачу для пользователей, мы можем создать простейшее расширение конфигурации. Разберем по шагам, как это сделать:
БлокировкаЭкрана) и назначьте ей понятную картинку (например, изображение замка или ключа).
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ЗаблокироватьРаботуПользователя();
КонецПроцедуры
Если безопасность вашей компании требует, чтобы программа блокировалась или закрывалась автоматически, когда сотрудник забывает это сделать сам, обратим внимание на новые возможности платформы 1С.
Начиная с версии платформы 8.3.26, разработчики добавили стандартный механизм принудительного завершения сеанса при отсутствии активности пользователя. Рассмотрим, как его настроить:
Время завершения сеанса при бездействии (в секундах). Например, установив значение 600, система автоматически закроет программу через 10 минут простоя.Время предупреждения о завершении сеанса при бездействии. В этом случае перед закрытием пользователю будет показано всплывающее окно с таймером обратного отсчета. Если пользователь вернулся за компьютер, он может нажать кнопку продолжения работы.Управлять этими настройками можно и программно из кода вашей конфигурации с помощью следующих методов:
// Установка времени бездействия (в секундах)
УстановитьВремяЗавершенияСеансаПриБездействии(900); // 15 минут
// Установка времени вывода предупреждения (в секундах)
УстановитьВремяПредупрежденияОЗавершенииСеансаПриБездействии(60); // 1 минута
Важное примечание: Обратите внимание, что использование этого автоматического механизма на уровне платформы требует наличия лицензии уровня КОРП.
Если ваша компания использует версии платформы ниже 8.3.26 или у вас нет КОРП-лицензии, то для автоматического освобождения лицензий и завершения неактивных сеансов можно настроить параметры на уровне кластера серверов 1С:
Помните, что этот метод в первую очередь предназначен для оптимизации потребления серверных лицензий и ресурсов, а не для мгновенной защиты экрана компьютера от посторонних глаз сразу после ухода сотрудника.
Как мы уже выяснили, стандартный метод ЗаблокироватьРаботуПользователя() не поддерживается при работе через интернет-браузеры (веб-клиент). Если вам критически важно обеспечить блокировку экрана именно в веб-клиенте, рассмотрим альтернативный программный вариант.
Для этого потребуется разработать собственную форму блокировки экрана. Алгоритм реализации выглядит следующим образом:
БлокировкаЭкрана.Пример кода вызова такой формы из управляемого интерфейса:
&НаКлиенте
Процедура ЗапуститьЛокальнуюБлокировку()
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("РежимБлокировки", Истина);
// Открываем форму блокировки модально, чтобы перекрыть весь интерфейс
ОткрытьФорму("ОбщаяФорма.БлокировкаЭкрана", ПараметрыОткрытия, , Истина);
КонецПроцедуры
Проанализируем еще один простой, но надежный способ — блокировку на уровне операционной системы Windows. Для этого пользователю достаточно нажать комбинацию горячих клавиш Win + L перед тем, как встать из-за стола.
Преимущества данного подхода:
Недостатки и ограничения:
ЗаблокироватьРаботуПользователя() система заблокирует окно программы, но для последующей разблокировки пользователю может потребоваться ввести пароль от своей доменной учетной записи, что необходимо учитывать при первоначальной настройке прав доступа.Таким образом, выбор конкретного метода блокировки сеанса зависит от технических условий работы ваших пользователей, используемых типов клиентских приложений и требований информационной безопасности вашей компании.