Как получить список пользователей, работающих в 1С после определенного времени?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Анализ активности пользователей через 1С

Для начала важно понять, что именно мы подразумеваем под «активностью». Если сеанс пользователя просто открыт, это не всегда означает, что человек занят делом. Типовой ЖурналРегистрации фиксирует события изменений, но не всегда записывает каждое открытие формы. Тем не менее, для базового анализа можно воспользоваться следующими методами:

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

Как программно ограничить доступ пользователям

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

Вариант 1: Доработка модуля приложения

Рассмотрим вариант с проверкой времени при входе. Для этого можно добавить реквизиты «ВремяНачала» и «ВремяОкончания» в справочник Пользователи. В модуле ПередНачаломРаботыСистемы реализуем следующую проверку:


// В модуле управляемого приложения
Процедура ПередНачаломРаботыСистемы(Отказ)
    ТекущееВремя = ТекущаяДатаСеанса();
    Если Не ПроверитьДоступПоВремени(ТекущееВремя) Тогда
        Отказ = Истина;
        Предупреждение("Доступ к базе запрещен в нерабочее время!");
    КонецЕсли;
КонецПроцедуры;

Вариант 2: Использование регламентных заданий

Вы можете создать регламентное задание, которое будет запускаться после 17:00 и принудительно завершать сеансы пользователей, не имеющих прав на работу в это время. Для завершения используйте метод ЗавершитьРаботуПользователя(Сеанс). Это позволит «выкидывать» из системы тех, кто забыл закрыть программу.

Важные рекомендации по контролю

Разберем, на что стоит обратить внимание, чтобы система работала корректно:

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

← На главную