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

29.06.20

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

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

Файлы

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

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

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

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

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

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Тестирование производилось на типовой конфигурации 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

Решение INFOSTART DataFormWizard обеспечивает проверки ввода данных, скрывает от пользователя недоступную информацию и выполняет код в обработчиках — без изменения конфигурации. Легко устанавливается и работает практически с любой конфигурацией на управляемых формах.

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

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

В рамках 18 релиза СУБД Tantor Postgres мы рассказывали об оптимизациях, которые помогают планировщику сделать более точный выбор между Nested Loop и Hash Join. В следующем релизе у нас планируются оптимизации, которые позволят ускорить выполнение как Nested Loop, так и Hash Join. Сегодня мы расскажем об одном из таких методов - фильтре Блума.

вчера в 10:30    1898    Tantor    1    

8

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

5,5 тысячи пользователей в единой базе 1С, розница в режиме 24/7 и SLA 99,98% – в таких условиях любая авария быстро превращается в очереди на кассах, потерю денег и давление со стороны бизнеса. Показываем, как выстроить процесс аварийно-восстановительных работ: от первых алертов и базового скрининга системы до подключения команды, проверки гипотез и дебрифа после инцидента. Разбираем, как метрики, дашборды, техжурнал, Zabbix, Prometheus, Grafana, Telegram-боты и скрипты помогают не гадать, а быстро находить причину проблемы. На реальных авариях объясняем, почему «быстро» не должно означать «рискованно», как работа над ошибками снижает панику и почему каждая авария может сделать систему надежнее.

11.08.2026    1990    jul.dolganova    8    

22

Администрирование СУБД Пароли Системный администратор 1С 8.3 1С:Розница 2 1С:Управление производственным предприятием Абонемент ($m)

Пароль пользователя СУБД лежит в 1CV8Clst.lst обратимо: кто читает папку srvinfo - достаёт пароли SQL всех баз кластера, минуя права 1С. Обработка показывает, у каких баз пароль извлекается, помечает слабые и выдаёт план защиты. К СУБД не подключается, ничего не пишет - только читает файл.

10 стартмани

06.08.2026    952    14    nedomolkov.ivan    0    

7

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

Прогнал набор диагностических скриптов на двух рабочих базах: боевой с 580 сеансами и малонагруженной. Разбираю пять находок: статистика 97-дневной давности, 598 запросов со сканами, журнал транзакций в 73 % от данных, tempdb в один файл и 81 % ожиданий на параллелизме, который чинить не надо. Плюс три грабли, из-за которых самописный диагностический скрипт падает на чужом сервере. Семь рабочих скриптов внутри, копируются в SSMS как есть.

05.08.2026    1327    nedomolkov.ivan    8    

8

Администрирование СУБД Журнал регистрации Системный администратор Программист 1С 8.3 Бесплатно (free)

Журнал регистрации на нагруженной базе перестаёт открываться: файлы растут на гигабайты в день, просмотр виснет, история недоступна. Рассказываю, как мы вынесли журнал трёх продуктивных баз в ClickHouse: 35 млрд событий, поиск всех ошибок за сутки — 0,11 секунды, привычная форма журнала для пользователей и падение числа ошибок в проде в 23 раза за полгода. Архитектура, схема таблицы, грабли интеграции и все цифры с прода.

04.08.2026    1611    nedomolkov.ivan    0    

8

Администрирование СУБД 1С 8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

База 1С:ERP размером 646 Гб, полное маскирование за 5 часов - без создания промежуточной незащищенной копии. Разбираем бесплатный pg_anon на сквозном примере с реального продуктива.

27.07.2026    2828    Tantor    16    

13

HighLoad оптимизация Администрирование СУБД Программист Россия Бесплатно (free)

Если вы работаете с 1С на PostgreSQL и жалуетесь на тормоза — скорее всего, дело в join predicate pushdown, которого в стандартном PostgreSQL нет. В MS SQL Server этот механизм работает «из коробки», и при миграции именно запросы к виртуальным таблицам 1С бьют по производительности сильнее всего. В этой статье — реальный кейс от Postgres Professional с разбором плана выполнения, ручным экспериментом и доработкой планировщика СУБД, которая ускорила запросы от 22 до 54 000 раз.

16.06.2026    9317    postgres_professional    13    

12

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

Вышел релиз СУБД Tantor Postgres 18, и мы хотим рассказать о его новых возможностях для работы с приложениями на платформе "1С:Предприятие". В обзоре разберем улучшения планировщика, по традиции коснемся работы временных таблиц и не обойдем вниманием вспомогательные утилиты, которые упрощают поиск и диагностику проблем в высоконагруженных системах. За каждым пунктом - реальные запросы 1С, реальные рабочие базы и сотни часов тестирования!

16.06.2026    3665    Tantor    7    

10