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

29.06.20

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

INFOSTART DataFormWizard: Управление данными и формами в 1С 8.3

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


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

См. также

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

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

02.06.2025    1671    user1914479    14    

3

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С v8.3 Бесплатно (free)

В финальной статье по докладу «Дамп – не приговор, а повод задуматься», с которым выступили на осенней конференции INFOSTART TECH EVENT 2024, рассказываем, чем может быть полезна информация, полученная из дампа.

27.05.2025    1672    it-expertise    0    

12

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

Клиент-серверная архитектура 1С Предприятия 8.3 подразумевает работу в связке с так называемой системой управления базами данных (СУБД). Одной из самых распространённых и популярных до сих пор остается MS SQL Server.

19.05.2025    2547    Kostin1978    5    

4

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

Рассмотрим, почему при обновлении итогов регистров накопления СУБД может выбирать неоптимальный план запроса, и как это исправить.

28.04.2025    2703    Tantor    7    

26

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С v8.3 Бесплатно (free)

Во второй статье по докладу «Дамп – не приговор, а повод задуматься», с которым выступили на конференции INFOSTART TECH EVENT 2024, рассмотрим, какую информацию содержат файлы дампа, чем она полезна и как ее анализировать.

14.04.2025    1585    it-expertise    7    

16

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

Где лежат данные идентификаторов, как прочитать, как поменять...

10.04.2025    1445    atdonya    0    

6

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С v8.3 Бесплатно (free)

Опубликовали первую статью по итогам доклада «Дамп – не приговор, а повод задуматься», с которым выступали на конференции INFOSTART TECH EVENT 2024.

25.03.2025    1182    it-expertise    7    

10