Часто перед администраторами и программистами 1С встает задача контроля рабочего времени сотрудников. Рассмотрим, как проанализировать активность пользователей в вечернее время и как ограничить им доступ к базе, если это необходимо.
Для начала важно понять, что именно мы подразумеваем под «активностью». Если сеанс пользователя просто открыт, это не всегда означает, что человек занят делом. Типовой ЖурналРегистрации фиксирует события изменений, но не всегда записывает каждое открытие формы. Тем не менее, для базового анализа можно воспользоваться следующими методами:
Сеансы = ПолучитьСписокАктивныхСеансов();
Для Каждого Сеанс Из Сеансы Цикл
Сообщить(Сеанс.Пользователь.Имя);
КонецЦикла;
ВыгрузитьЖурналРегистрации для последующего анализа событий за конкретный период. Помните, что фильтрация по времени после 17:00 позволит отсечь большую часть дневного трафика.CALL), что дает косвенное подтверждение работы пользователя даже при просмотре данных без их изменения.Если ваша задача — не просто отследить нарушителей, но и пресечь работу в нерабочее время, воспользуемся методами принудительного завершения сеансов или блокировки входа.
Вариант 1: Доработка модуля приложения
Рассмотрим вариант с проверкой времени при входе. Для этого можно добавить реквизиты «ВремяНачала» и «ВремяОкончания» в справочник Пользователи. В модуле ПередНачаломРаботыСистемы реализуем следующую проверку:
// В модуле управляемого приложения
Процедура ПередНачаломРаботыСистемы(Отказ)
ТекущееВремя = ТекущаяДатаСеанса();
Если Не ПроверитьДоступПоВремени(ТекущееВремя) Тогда
Отказ = Истина;
Предупреждение("Доступ к базе запрещен в нерабочее время!");
КонецЕсли;
КонецПроцедуры;
Вариант 2: Использование регламентных заданий
Вы можете создать регламентное задание, которое будет запускаться после 17:00 и принудительно завершать сеансы пользователей, не имеющих прав на работу в это время. Для завершения используйте метод ЗавершитьРаботуПользователя(Сеанс). Это позволит «выкидывать» из системы тех, кто забыл закрыть программу.
Разберем, на что стоит обратить внимание, чтобы система работала корректно:
ТекущаяДатаСеанса(), а не время на клиентской машине. В противном случае пользователи могут изменить системные часы на своих компьютерах и обойти ограничения.Используя предложенные методы, вы сможете выстроить прозрачную систему мониторинга и управления доступом к вашей базе 1С, обеспечивая соблюдение дисциплины и безопасности данных.