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

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

Оценка эффективности работы сотрудников, в частности бухгалтеров и операторов ввода данных, является одной из классических задач управленческого учета. Часто руководство ставит задачу: «Выяснить, сколько реально работает сотрудник». Одним из объективных критериев здесь выступает объем введенной или измененной первичной документации. В этой статье мы подробно разберем, как технически реализовать такой анализ средствами платформы 1С и стандартных подсистем библиотеки стандартных подсистем (БСП).

Использование подсистемы Версионирование объектов БСП

Первым делом проанализируем возможности стандартной подсистемы «Версионирование объектов». Эта подсистема позволяет хранить историю изменений объектов (документов и справочников) и отвечать на вопросы: кто, когда и что именно изменил.

Рассмотрим техническую сторону. Все версии хранятся в регистре сведений ВерсииОбъектов. Основная сложность заключается в том, что данные версии хранятся в поле ВерсияОбъекта, которое имеет тип ХранилищеЗначения. Внутри этого хранилища находится сжатый XML-файл с сериализованным объектом.

Чтобы программно извлечь данные о количестве строк в табличных частях, нам потребуется выполнить следующие шаги:

  1. Выбрать две последовательные версии документа из регистра ВерсииОбъектов.
  2. Распаковать двоичные данные из ХранилищаЗначения.
  3. Десериализовать XML в объект или прочитать его через ЧтениеXML.
  4. Сравнить количество строк в нужных табличных частях (например, в ТЧ «Товары»).

Разберем пример кода, который демонстрирует принцип получения данных версии:


Выборка = РегистрыСведений.ВерсииОбъектов.Выбрать(Новый Структура("Объект", СсылкаНаДокумент));
Пока Выборка.Следующий() Цикл
    ДанныеВерсии = Выборка.ВерсияОбъекта.Получить();
    Если ДанныеВерсии <> Неопределено Тогда
        Чтение = Новый ЧтениеXML;
        Чтение.УстановитьСтроку(ДанныеВерсии);
        // Используем СериализаторXDTO для восстановления объекта
        Попытка
            ОбъектВерсии = СериализаторXDTO.ПрочитатьXML(Чтение);
            КоличествоСтрок = ОбъектВерсии.Товары.Количество();
            Сообщить("Версия №" + Выборка.НомерВерсии + ", строк в ТЧ: " + КоличествоСтрок);
        Исключение
            Сообщить("Ошибка десериализации версии");
        КонецПопытки;
    КонецЕсли;
КонецЦикла;

Важное замечание: такой метод крайне ресурсозатратен. Если мы решим построить отчет по всей базе за месяц «на лету», система может значительно замедлиться. Для массового анализа рекомендуется либо использовать регламентное задание для предварительного сбора статистики, либо внедрить «облегченный» регистр учета действий.

Анализ через Журнал регистрации

Если версионирование в базе включено не для всех объектов (так как оно увеличивает размер базы), мы можем обратиться к Журналу регистрации (ЖР). ЖР фиксирует события создания, изменения и проведения документов.

Проанализируем ситуацию: ЖР не содержит данных о количестве строк в документе, но он позволяет вычислить «плотность работы». Мы можем выгрузить события Данные.Изменение и Данные.Добавление в таблицу значений и рассчитать временные интервалы между ними. Если между записью двух документов прошло более 15–20 минут, можно предположить, что в это время сотрудник занимался другой работой или простаивал.

Пример получения данных из ЖР программно:


Фильтр = Новый Структура;
Фильтр.Вставить("ДатаНачала", НачалоДня(ТекущаяДата()));
Фильтр.Вставить("Событие", "_$Data$_.Post"); // Событие проведения

ТаблицаСобытий = Новый ТаблицаЗначений;
ВыгрузитьЖурналРегистрации(ТаблицаСобытий, Фильтр, "Дата, Пользователь, Данные");

Для Каждого Строка Из ТаблицаСобытий Цикл
    // Анализируем активность пользователя
КонецЦикла;

Подсистема Бизнес-статистика

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

Рассмотрим преимущества этого подхода:

Методология оценки: Коэффициенты сложности

Выясним причину, по которой простой подсчет строк может быть неинформативен. Как справедливо отмечалось в обсуждении, один бухгалтер может вводить накладную вручную «с нуля», а другой — создавать её «на основании» заказа клиента нажатием одной кнопки. Очевидно, что трудозатраты в этих случаях несопоставимы.

Для качественного анализа мы предлагаем внедрить систему коэффициентов сложности:

  1. Ручной ввод нового документа: Коэффициент 1.0.
  2. Ввод на основании: Коэффициент 0.2 (учитывается только время на проверку данных).
  3. Корректировка старого документа: Коэффициент 0.5.
  4. Количество номенклатуры: Если в документе более 50 строк, применяется повышающий коэффициент.

Реализовать это можно, добавив в подписку на событие ПриЗаписи документов логику, которая будет проверять ПараметрыЗаписи.ИсточникКопирования или анализировать ЭтотОбъект.ЗаполненИзПараметровВыбора.

Альтернативный метод: Оценка производительности (APDEX)

Посмотрим на ситуацию под другим углом. Подсистема «Оценка производительности» фиксирует время выполнения ключевых операций. Если мы настроим замер на операцию «Проведение документа», мы сможем косвенно оценить объем данных. Проведение документа со 100 строками обычно занимает больше времени, чем проведение документа с 1 строкой, из-за записи в регистры накопления.

Хотя этот метод менее точен для оценки работы *человека*, он отлично подходит для оценки нагрузки на *систему*, создаваемую этим человеком.

Заключение и рекомендации

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

  1. Использовать Версионирование объектов для выборочного контроля качества (анализ количества исправлений за собой).
  2. Использовать Журнал регистрации для оценки общего времени активности в программе.
  3. Внедрить небольшую доработку (расширение), которая при записи документа будет фиксировать количество строк и способ создания (вручную или на основании) в отдельный регистр сведений. Это позволит строить быстрые и точные отчеты без нагрузки на систему хранения версий.

Такой комплексный подход позволит руководителю увидеть не просто «количество бумажек», а реальную картину загруженности каждого сотрудника.

← На главную