Система контроля действий пользователя / Employee Monitoring Software (СКДП, EMS)

29.06.20

База данных - Администрирование СУБД

Подсистема для сбора информации об активности пользователей.

Скачать исходный код

Наименование Файл Версия Размер
Конфигурация с подсистемой СКДП (включает в себя .dll файлы компоненты в виде двоичного макета)
.cf 340,51Kb
3
.cf 340,51Kb 3 Скачать
Zip архив компоненты по технологии NativeAPI (dll файлы x86 и x64 версии библиотеки, плюс манифест). Готовая к подключению.
.zip 115,97Kb
2
.zip 115,97Kb 2 Скачать
Исходный код компоненты по технологии NativeAPI + собранные dll файлы
.zip 136,41Kb
2
.zip 136,41Kb 2 Скачать

Тестирование производилось на типовой конфигурации ERP 2.4.7.151 (версия БСП 3.0.1.434)

 

Часть 1. Описание подсистемы.

 

Представляю вашему вниманию подсистему "СКПД", основное назначение которой - собирать время бездействия пользователей на клиентских машинах. Эта информация может быть полезна: руководителям, программистам, администраторам и аналитикам. Как именно распорядится этой информацией зависит от вас. Вот список некоторых кейсов, где эта информация может пригодится:

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

Пример собранных данных за месяц работы подсистемы (ед.изм. в секундах). В базе более 1000 пользователей и с постоянным онлайном 300-400 человек:

 

 

Что можно сказать по этим данным. Пользователь начинает работать с 1С около 8 утра и заканчивает около 17:00, оставляет компьютер/терминал включенным.

Работает непосредственно с компьютером меньше половины рабочего времени. Но в целом работу делает.

На 12:00 (обед) приходится взрывной рост производительности труда.

 

А это уже данные по другому сотруднику, программисту...

 

Существует второй вариант отчета, который предназначен для вывода графика и консолидированной информации по всем пользователям:

 

Тут можно проанализировать есть ли в данных какая-либо системность. Повторяются ли наблюдаемые значения.

Анализы по моему предприятию за 2 месяца наблюдений выявили следующую закономерность.

В среднем, пользователи половину своего рабочего времени за компьютером ничего не делают. Это около 4-5 часов в день из 9 (включая обед).

 

Часть 2. Интеграция подсистемы в конфигурацию предприятия.

 

Вся подсистема выстроена над API функции Windows - GetLastInputInfo(), которая вызывается через внешнюю компоненту. Таким образом подсистема может работать только на пользовательских станциях под управлением MS Windows (тестировалось на WinXP, Windows 7, Windows 10).

Компонента устанавливается пользователю через временный каталог в неявном виде, никаких уведомлений при этом он не получает. Это автоматически ограничивает её использование в Web клиентах, где без разрешения пользователя никакие компоненты установить нельзя.

Подсистема использует функции БСП и особенности конфигурации ERP 2.4, на которой производились тесты. Не должно составить особой сложности перевести подсистему на любую другую конфигурацию.

 

Список объектов подсистемы:

Общие модули: _СКДП,_СКДПКлиент,_СКДПВызовСервера,_СКДПКлиентГлобальный,_СКДПВызовСервераПовтИсп,_СКДПКлиентСервер

Регламентные задания: _СКДППеренесЗамеров

Константы: _ПараметрыСКДП

Отчеты: _СКДПАнализРезультатовЗамеров

Обработки: _СКДП

Регистр сведений: _СКДПЗамерыВремени

 

Для работы подсистемы необходимо модифицировать следующие общие модули: ОбщегоНазначенияКлиентЛокализация, ОбщегоНазначенияЛокализация.

В них нас интересуют процедуры: ПередНачаломРаботыСистемы,ПриНачалеРаботыСистемы,ПослеНачалаРаботыСистемы

и ПриДобавленииПараметровРаботыКлиентаПриЗапуске

При сравнении и объединении конфигураций будет хорошо видно, что необходимо дополнить.

 

Часть 3. Описание принципа работы и настройки.

 

В момент входа пользователя в прикладное решение, на его компьютер со стороны сервера передается файл с внешней компонентой, который записывается во временный каталог пользователя, а затем происходит подключение компоненты на клиенте со стороны 1С. Компонента из временного каталога удаляется (при возможности). Объект компоненты продолжает свое существование в адресном пространстве приложения 1С на клиенте в переменной ПараметрыПриложения (глобальная переменная БСП в модуле управляемого приложения).

Подключается обработчик ожидания, который через каждый заданный интервал (по умолчанию 20 секунд) вызывает функцию внешней компоненты.

Данные накапливаются в течении 5 минут (по умолчанию), а затем передаются на сервер и записываются в Хранилище Системных Настроек.

Один раз в час (по умолчанию), регламентным заданием данные извлекаются из хранилища системных настроек и переносятся в Регистр Сведений.

Такой механизм сбора данных выбран не случайно. Если писать данные в регистр сведений каждые 5 минут от имени 500 пользователей, то Журнал Регистрации будет сильно разрастаться и содержать в себе очень много лишних данных о событиях записи.

 

Из-за особенностей в подходе сбора данных появилась необходимость реализовать удобное управление настройками и данными.

Настройки сохраняются в константе, а управление ими осуществляется через команду "Настройки СКДП" в подсистеме:

Флажок "Выполнять замеры" отвечает за включение/выключение подсистемы. При отключении - никаких замеров и установок компоненты не производится, регламентное задание перестает работать, а результаты собираться.

Есть возможность писать напрямую в регистр сведений минуя хранилище системных настроек. За это отвечает настройка "Использовать регламентное задание". Но этот вариант может подойти только для систем с небольшим количеством пользователей или для отладочных целей.

Настройка "Сворачивать замеры" необходима для консолидации (группировки) данных, основная цель которой - сокращение объемов данных для хранения. Без "сворачивания" замеров в реквизитах регистра сведений будет более точная информации о времени события, также будет доступна расширенная информация.

"Интервал замеров" отвечает за частоту вызова функции компоненты. Чем ниже значение, тем выше нагрузка на ПК, тем больше объем данных, тем меньше вероятная погрешность в вычислении.

"Интервал сохранения результата" - насколько часто надо передавать накопленные данные на сторону сервера. Чем ниже значение, тем чаще идет вызов сервера, тем меньше данных накапливается в памяти приложения.

ВНИМАНИЕ: после изменения настроек пользователи должны перезайти в программу, т.к. настройки кэшируются.

 

Дополнительные функции управления скрыты в меню:

 

 

С помощью команды "Перенести замеры" можно не дожидаться выполнения регламентного задания, а сделать перенос моментально.

Команда "очистить временное хранилище замеров" очищает все настройки (замеры) подсистемы, которые успели накопиться за время её работы.

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

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

 

Сюда выводятся данные, которые содержатся в Системном Хранилище Значений, но которые еще не были перенесены в Регистр Сведений. Т.е. данные,

которые пока еще не попали в основной отчет по замерам. Исходя из того, что регламентное задание по переносу замеров запускается 1 раз в час, то это все те данные, которые успели накопиться за час работы за минусом последних 5 минут, которые содержаться пока еще на стороне клиента и за минусом тех 20 секунд со времени последнего полученного значения.

Тут также есть команда выполняющая технические функции:

Позволяет просматривать содержимое всего того, что накопилось в Системном Хранилище Значений:

 

Часть 4. Вместо заключения.

 

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

Стоит понимать, что полученные данные с помощью этой подсистемы нельзя воспринимать как истину в последней инстанции. При принятии любого решения следует опираться на другие источники информации и факты.

Сбор данных идет только пока работает 1С, это значит, что пока приложение закрыто - системой это будет трактоваться в пользу сотрудника (отсутствующие показания воспринимаются как Активность). Таким образом, если пользователь оставляет постоянно 1С включенным, когда уходит домой, то данные необходимо анализировать только за время его рабочей смены иначе он попадает в поле необоснованного подозрения (как все программисты 1С оставляющие приложение на терминале на выходные).

Данные действительны только для 1 сеанса пользователя, а не для компьютера/сервера в целом. Таким образом, если человек раскладывает Пасьянс при свернутом приложении 1С, то для подсистемы это будет Активностью. Она видит, что происходят нажатия клавиш или дергается мышка, но с какой целью и в каком приложении конкретно - неизвестно.

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

Данные аккумулируются порциями каждые 20 секунд в одно общее значение. Поэтому если в результатах стоит значение 20 минут за 1 час, то это может означать, что человек либо 20 минут подряд ничего не делал на компьютере. Либо 40 минут активно работал на компьютере, но периодически отвлекался на бумаги или на совещания, но суммарно накопилось 20 минут небольшими порциями.

О том, как обрабатывается ситуация, когда открыто 10 сеансов на одном или разных компьютерах под одним пользователем. Представьте швею, которой поручили шить сразу на 3-х швейных машинках. Пока она шьет на одной, на двух остальных накапливается время бездействия. В итоге, суммарно, время бездействия с двух машинок превысит время активности на одной. Даже в том случае, если она будет попеременно работать на всех.

Задача сводится к тому, чтобы найти перекрывающиеся периоды, объединив значения на пересечениях. Таким образом подсистема считает, что машинистка работала какое-то суммарное время и неважно на каких машинках, если принять за факт то, что с физической точки зрения сотрудник не может одновременно работать сразу за несколькими аппаратами. В противном случае (когда 2 разных пользователя под одной учетной записью или, когда один левой рукой водит мышкой одного компьютера, а правой рукой мышкой другого компьютера) время будет считаться не совсем корректно, т.к. объединение периодов активности приведет к уменьшению времени бездействия. В подобных ситуациях потребуется дополнительный анализ того почему такое происходит с помощью альтернативных источников данных. Нередко пользователи могут сидеть под чужими учетными записями сотрудника, который ушел в отпуск и пытаются его подменить (с учетом его прав) всем коллективом.

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

Поддержка Linux и MacOS не планируется ввиду трудностей реализации аналогичной функции, которая бы не требовала XServer или доступа к драйверам устройств пользователем с ограниченными правами без их явного предоставления внешней компоненте.

СКДП NativeAPI Компонента Бездействие GetLastInputInfo Неактивность

См. также

Устранение ошибки выполнения скрипта "Создать сервис RAGENT" в ЦКК

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В статье показано, как устранить ошибку выполнения скрипта "Создать сервис RAGENT" в системах 1С:Центр контроля качества или в 1С:Центр автоматизации. Будет полезна администраторам ЦКК и ЦА, которые только начали знакомство с этими системами.

вчера в 17:30    134    artemusII    0    

4

Долгая реструктуризация, замеры времени и очистка Ветис. Розница 2.3

HighLoad оптимизация Администрирование СУБД Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Бесплатно (free)

При подготовке к обновлению возникли проблемы на стадии тестирования и исправления базы данных, также при создании файлов РИБ для магазинов.

16.04.2024    247    xKaskadx    4    

0

Установка и получение лицензии на базовую конфигурацию 1С на Mac OS

Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

Установить купленную базовую конфигурацию 1С и получить лицензию на MAC OS не так просто, как кажется на первый взгляд и как хотелось бы. Официально в системных требованиях на базовую конфигурации 1С пишет всякие виндовсы и пару-тройку линуксов. МакОс там нет. В статье расскажу, как все-таки поставить на Мак базовую конфигурацию 1С.

11.04.2024    344    pahmutov    0    

2

Установка тонкого клиента 1С на Rasbian (Raspberry Pi 5)

Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

После приобретения Raspberry Pi 5 решил проверить, есть ли возможность использования устройства для организации тонкого клиента. В результате столкнулся с особенностью установки 1С: Предприятие 8.3.23 на Raspbian, решением которой я хочу поделиться с сообществом.

07.04.2024    605    Bessome    3    

5

Порционный шринк базы

Администрирование СУБД Бесплатно (free)

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

28.03.2024    1271    Garilia    3    

15

Создаем сценарии обслуживания SQL в Центре Контроля Качества 1С (Центр Администрирования)

Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

Данная статья научит вас, как создавать скрипты обслуживания MS SQL для Центра Контроля Качества (ЦКК) или Центра Администрирования (ЦА).

20.03.2024    742    Silenser    0    

5

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    5911    dsdred    53    

83

Инструкция по установке Postgres для OLTP приложений и 1С. Часть 1. Базовая конфигурация

Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

В Postgres достаточно подробная документация, и, видимо, поэтому при инсталляции Postgres для 1С большинство параметров приходится выставлять самим. Параметров в Postgres много, а составить эффективную комбинацию не так просто. Все упрощается, если рассмотреть профиль нагрузки, например, 1С это прежде всего профиль OLTP нагрузки – так устроены его метаданные (объекты). Если сосредоточиться на оптимизации профиля OLTP, понимание Postgres сразу упростится.

15.02.2024    2541    1CUnlimited    14    

28