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

Публикация № 1257059

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

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

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

Тестирование производилось на типовой конфигурации 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 или доступа к драйверам устройств пользователем с ограниченными правами без их явного предоставления внешней компоненте.

Скачать файлы

Наименование Файл Версия Размер
Конфигурация с подсистемой СКДП (включает в себя .dll файлы компоненты в виде двоичного макета)

.cf 340,51Kb
1
.cf 340,51Kb 1 Скачать
Zip архив компоненты по технологии NativeAPI (dll файлы x86 и x64 версии библиотеки, плюс манифест). Готовая к подключению.

.zip 115,97Kb
1
.zip 115,97Kb 1 Скачать
Исходный код компоненты по технологии NativeAPI + собранные dll файлы

.zip 136,41Kb
1
.zip 136,41Kb 1 Скачать

Специальные предложения

Автор запретил комментарии

См. также

Легкое и гибкое управление списком доступных баз 1С у пользователей Промо

Стартеры 1С Сервисные утилиты Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

7 стартмани

05.12.2018    18716    20    RomikR    9    

Мастер создания копии информационной базы для отчетности

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Прототип инструмента для подготовки реплики в режиме только для чтения к использованию. Позволяет использовать "read-only" реплики как обычные информационные базы 1С.

10 стартмани

28.08.2020    7111    5    YPermitin    12    

Размер таблиц 1С в базе данных MS SQL

Статистика базы данных Администрирование СУБД v8 Абонемент ($m)

Данная обработка позволяет получить структуру БД 1С и размер таблиц без использования механизма ADODB соединения с БД MSSQL.

1 стартмани

14.08.2020    3552    25    donpadlo    5    

Переход с ERP на КА 2 или УТ 11

Администрирование СУБД Обмен данными 1С Перенос данных из 1C8 в 1C8 v8 УТ11 КА2 УУ Абонемент ($m)

Как известно сейчас 1С реализует программные продукты «1С:ERP Управление предприятием 2», «1С:Комплексная автоматизация 2» и «1С:Управление торговлей 11» одним блоком. Именно благодаря этому подходу на текущий момент во всех решениях есть переход на решения более высокого уровня. Ну как говорится если можно вперед, значит можно и назад. Хотя данный подход нигде и не задокументирован.

1 стартмани

13.07.2020    4425    11    user923728    13    

Ошибка "Для одного ссылочного кода существует более одной таблицы в базе данных" - как проще исправить

Администрирование СУБД Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

При обновлении платформы 1с 8.3.6.2100 на платформу 8.3.16.224 под УПП 1.3.138.1 возникла ошибка "Для одного ссылочного кода существует более одной таблицы в базе данных...". В интернете много есть информации по этой проблеме, в частности в публикации https://infostart.ru/public/1126277/ приведено ее решение, но оно довольно громоздкое. Есть вариант более простой

2 стартмани

28.04.2020    4870    4    Ион    3    

Транслятор запросов 1С в SQL

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 v8::Запросы 1cv8.cf Абонемент ($m)

Инструмент для трансляции запросов платформы 1С в SQL, а также их диагностики.

10 стартмани

07.01.2020    20681    168    YPermitin    89    

Работа с базами данных 1С в SQL Server Management Studio (Расширение для SSMS)

Администрирование СУБД Производительность и оптимизация (HighLoad) Администрирование данных 1С Структура метаданных v8 Абонемент ($m)

Расширение позволяет просматривать связи объектов метаданных и таблиц БД, сгруппированные данные (по группам метаданных) об используемом дисковом пространстве и выполнять трансляцию SQL текста запроса в термины 1С. И бонусом - при наведении курсора мыши на таблицу или поле показывает назначение объекта в терминах 1С.

10 стартмани

27.11.2019    14686    44    akpaevj    46    

CF & SQL : конструктор прямых запросов к БД 1С

Инструментарий разработчика Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.

1 стартмани

02.10.2019    24167    228    dmitrydemenew    49    

Закрытие незавершенных сеансов

Сервисные утилиты Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

Как удалять потерянные сеансы пользователей, чтобы они не мешали работе. Обработка протестирована на платформе версии 8.3.13.1644.

1 стартмани

20.09.2019    21745    78    AnatolPopov    10    

Создание пользователей системы взаимодействия

Обработка справочников Администрирование СУБД v8 1cv8.cf Абонемент ($m)

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

1 стартмани

12.12.2018    4907    9    da_1c    0    

Анализ настроек кластеров 1С (+ менеджер файлов на сервере)

Сервисные утилиты Администрирование СУБД v8::УФ 1cv8.cf Абонемент ($m)

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

10 стартмани

26.12.2015    29264    75    zenechka    33    

Скрипт для выгрузки информационной базы

Архивирование (backup) Скрипты автоматизации Администрирование СУБД v8 Россия Абонемент ($m)

Скрипт позволяет произвести выгрузку информационной базы 1С клиент-серверного варианта.

1 стартмани

06.11.2015    34369    14    bashirov.rs    24