Просмотр и анализ журнала регистрации (отчет на СКД)










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

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

Журнал регистрации платформы 1С:Предприятие содержит записи о действиях пользователей в информационных базах. Прочитать общие сведения о данном механизме Вы можете на официальном сайте по ссылке.

 

 Стандартный функционал для работы с журналом регистрации

Работать с журналом регистрации можно либо с помощью встроенный в платформу средства, либо программно. Выше представлен скриншот встроенной в платформу обработки "Журнал регистрации", которая позволяет просматривать журнал в виде списка. Несмотря на возможность установки отборов на выводимые в список события, просмотривать журнал в таком виде зачастую не очень удобно. Куда удобнее было бы делать это с группировками, собственными полями или даже в виде диаграммы.

Как раз для таких целей и был создан представленный отчет. Используя его можно просматривать журнал регистрации в любом виде. Ограничения находятся лишь в рамках системы компоновки данных (СКД).

Основные возможности

Главная задача отчета — обеспечить удобное получение данных журнала регистрации, их просмотр и анализ.

Основной функционал отчета:

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

Отчет не решает проблемы производительности, по крайней мере в текущей версии. Интересен этот момент? Дайте знать в комментариях. Кто знает, возможно появление версии отчета для работы с журналом регистрации из SQL-баз или даже ElasticSearch.

Требования

Для корректной работы отчета требуется платформа 1С:Предприятие не ниже версии 8.3.6. Последняя версия отчета поддерживает только работу в управляемом приложении (обычные формы не поддерживаются).

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

Отчет поддерживает функционал БСП в части внешних отчетов и обработок, а также может использоваться для рассылки информации через подсистему "Рассылка отчетов".

Настройки отчета

Рассмотрим основные настройки отчета и некоторые другие возможности.

Настройки фильтров, состава полей и максимального количества записей

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

 

 Этап 1: Настройка фильтров

После установки стандартных фильтров, состава получаемых колонок и источника получения данных (журнал текущей информационной базы или сохраненный ранее файл журнала), можно сформировать отчет или предварительно изменить настройки варианта отчета СКД.

 

 Этап 2: формирование отчета и изменение варианта

Далее рассмотрим предопределенные варианты отчета и некоторые другие настройки.

Другие настройки компоновщика

Никаких ограничений на использование настроек СКД нет. В полной мере можно использовать настройку структуры отчета, условное оформление, пользовательские поля и прочие настройки. Так, например, для подсчета количества событий в отчете было добавлено пользовательское поле выражения "Количество".

 

 Пользовательские поля для расширения функций отчета

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

Таким образом, используя возможности СКД можно настроить отчет с достаточно сложной структурой вывода и разнообразными настройками, оформлением.

Варианты отчета

В отчете, прикрепленным к публикации, уже созданы несколько вариантов отчета. На следующих скриншотах представлены некоторые из них.

 

 Использование метаданных

 

 Количество транзакций в секунду

 

 Ошибки выполнения

 

 События журнала регистрации

 

 Активность пользователь (общая)

Это не полный список, который позволяет увидеть основные возможности отчета. Полный перечень предопределенных вариантов под следующим спойлером.

 

 Список всех предопределенных вариантов отчета

Не останавливайтесь на достигнутом! Постройте собственный вариант отчета!

Послесловие

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

Заранее благодарю всех за обратную связь! И удачи в делах!

История изменений

 

 1.0.0

 

 2.0.1

Другие ссылки

Авторские разработки

50 Comments

  1. Yashazz

    Надеюсь, это всё БЕЗ промежуточной выгрузки в xml, таблицу, файл и прочую ересь, т.е. напрямую? Потому как если нет, то баян.

    Reply
  2. YPermitin

    (1) Yashazz, никаких промежуточных файлов.

    Reply
  3. SirYozha

    (2) через выгрузку в таблицу значений?

    Reply
  4. YPermitin

    (3) SirYozha, устанавливайте фильтры, потом через метод «ВыгрузитьЖурналРегистрации()» в таб. значений, а она уже передается в компоновщик как внешний источник.

    В публикации об этом сказано.

    Reply
  5. wowik

    где-то я уже это видел: http://infostart.ru/public/171729/

    Reply
  6. YPermitin

    (5) wowik, скачайте этот отчет и сравните возможности.

    Reply
  7. Yashazz

    (4) Так я и думал. Извините, это фигня и лютый баян. Вот если б вы напрямую сделали, БЕЗ таблицы значений…

    Reply
  8. YPermitin

    (6) просвети мастер как ты напрямую из файла ЖР считаешь данные и передашь их в СКД. Очень интересно.

    Reply
  9. help1Ckr

    Хорошая идея и демонстрация возможностей скд.

    Reply
  10. Антон Ширяев

    (8)

    Метод на самом деле есть, но далеко не факт, что более быстрый — парсить файлы журнала регистрации напрямую. Пример прямого парсинга есть в моей обработке Анализ и редактирование файлов журнала регистрации 1С 8.1/8.2 — ELF/LOG/LGF/LGP

    Формат файлов я описал в статье — Формат файлов журнала регистрации 1С 8.1/8.2 — ELF/LOG/LGF/LGP

    Reply
  11. YPermitin

    (11) Антон Ширяев, парсить файл это не проблема.

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

    Reply
  12. kiruha

    Основная проблема с ЖР не отбор(диаграммы нафиг не нужны), а в скорости

    Как я понял ничего для этого не сделано ?

    Reply
  13. YPermitin

    (13) kiruha, настраивайте состав полей, выбираемых из ЖР. Чем меньше полей, тем быстрее формирование отчета.

    Журнал регистрации сам по себе не рассчитан на быстрое получение данных, чего уж тут. Если хотите быстро формировать по нему отчеты, то переносите в отдельную SQL-базу. Такие решения есть на Инфостарте.

    Reply
  14. kiruha

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

    Reply
  15. YPermitin

    (15) kiruha, если сделать хранение ЖР во внешней SQL-базе, то доработать отчет, чтобы он читал данные из этой базы, будет не сложно.

    Reply
  16. chmv

    Но куда то ведь выгружается. И на это надо время

    Reply
  17. chmv

    Все понятно — но зачем? Если срочно надо посмотреть что-то, что мы будем выгружать

    Reply
  18. YPermitin

    (18) chmv, не совсем понял в чем ваш вопрос или замечание.

    Reply
  19. chmv

    Ваша задача не решит вопросы. Т.к. требуется время на выгрузку

    Reply
  20. chmv

    Вот если бы Вы сразу писали журнал регистрации в другую базу — тогда понятно. Пожелание

    Reply
  21. YPermitin

    (21) chmv, это всего лишь отчет, использующий стандартные возможности платформы для чтения ЖР и использующий всю мощь СКД для гибкой настройки.

    В рамках этой публикации выгрузку в отдельную SQL-базу выполнять нет смысла. Для этого обратите внимание, например, на эту публикацию: http://infostart.ru/public/185691

    Reply
  22. chmv

    Обязательно посмотрю

    Reply
  23. the1

    Вот это я называю заслуженный плюс! Отличная публикация и полезный отчет! Спасибо

    Reply
  24. karapuzzzz

    Использую конфигурацию Документооборт. Она строится на механизмах библиотеки стандартных подсистем. Было желание подключить эту обработку как внешнюю и использовать в рассылке отчетов. С первым вопросов не возникло. Добавил в модуль объекта функции и подключил как внешнюю. А вот с использованием в рассылке отчетов возникла проблема. В момент инициализации процессора КД выдает ошибку («ПроцессорКД.Инициализировать(МакетКД, , , Истина);»). Я так понимаю, что сделать ничего не получиться?

    Reply
  25. YPermitin

    (25) karapuzzzz, при разработке отчета не учитывал возможности БСП, поэтому вряд ли отчет можно приспособить как вы хотите. Нужно его допиливать.

    Reply
  26. higs

    Спасибо! Удачно попалась на глаза. А то напрягало делать отборы в большом журнале стандартными методами самого ЖР.

    Reply
  27. YPermitin

    (27) higs, рад стараться! =)

    Reply
  28. Voltage220

    Не работают отчёты: Работа с данными, сеансы пользователей и количество транзакций в секунду. Информация в журнале регистрации имеется. Прошу разработчика помочь разобраться с этой проблемой.

    Reply
  29. Synoecium

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

    1. У поля «Метаданные» сделать выбор из списка, а не ввод строкой, легко можно ошибиться и тогда фильтр не будет применен к выборке.

    2. Зачем сделано поле «ИмяПользователя», можно было для фильтра и отборов использовать справочник «Пользователи». Проблемы те же, сложно написать по памяти строкой пользователя

    3. Разделить выполнение на 2 этапа: получение данных из ЖР и построение отчета СКД. Самая длительная операция это получение данных из ЖР, если данные получены по ним можно построить несколько отчетов (вынести доп. поля, настроить отбор), причем мгновенно.

    4. Вынести выполнение отчета в фоновое задание, тогда пока строится отчет, можно будет работать спокойно с базой. Подобное сделано в типовом отчете «Калькуляция себестоимости» в УПП, например.

    5. Добавить замер времени выполнения отчета.

    Reply
  30. YPermitin

    (31) Synoecium, отличные идеи, но в ближайшем будущем не планировал дорабатывать отчет.

    Особо им сейчас не пользуюсь, поэтому он и находится в таком «Застое».

    Посмотрим, будет время — допилю. В принципе ничего особенного.

    Reply
  31. nixel

    (31) Synoecium, в фоновых заданиях можно выполнять только процедуры из общих серверных модулей. Здесь же просто внешний отчет.

    Зачем вам замер времени? Какая практическая польза?

    Остальные пункты да, полезные.

    Reply
  32. Tilirxs

    Спасибо»!

    Reply
  33. check2

    Коллега, при использовании групповых условий — ошибка:

    Ошибка исполнения отчета

    по причине:

    Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’

    по причине:

    {ВнешнийОтчет.ПросмотрИАнализЖурналаРегистрации.МодульОбъекта(244)}: Поле объекта не обнаружено (ЛевоеЗначение)

    Reply
  34. check2

    Поправьте, в функцию нужно добавить строки, выделено жирным италиком.

    Функция СоздатьТаблицуИспользованныхОтборов(ЭлементыОтбора, СобытиеИндекс, УровеньИндекс, СтатусТранзакцииИндекс, ПоляЖурналаРегистрацииИндекс)
    
    ТабОтборов = Новый ТаблицаЗначений;
    ТабОтборов.Колонки.Добавить(«Имя»);
    ТабОтборов.Колонки.Добавить(«ИндексОтбора»);
    Для Каждого ЭлементОтбора Из ЭлементыОтбора Цикл
      Если ТипЗнч(ЭлементОтбора) = Тип(«ГруппаЭлементовОтбораКомпоновкиДанных») Тогда
    Продолжить;
    КонецЕсли;
      ИмяОтбора = Строка(ЭлементОтбора.ЛевоеЗначение);
    Если ЭлементОтбора.Использование Тогда
    Если ИмяОтбора = «Уровень» Тогда
    НовСтрТабОтборов = ТабОтборов.Добавить();
    НовСтрТабОтборов.Имя = ИмяОтбора;
    НовСтрТабОтборов.ИндексОтбора = ПолучитьИндексЭлементаОтбора(ЭлементыОтбора, ИмяОтбора);
    УровеньИндекс = НовСтрТабОтборов.ИндексОтбора;
    ИначеЕсли ИмяОтбора = «Событие» Тогда
    НовСтрТабОтборов = ТабОтборов.Добавить();
    НовСтрТабОтборов.Имя = ИмяОтбора;
    НовСтрТабОтборов.ИндексОтбора = ПолучитьИндексЭлементаОтбора(ЭлементыОтбора, ИмяОтбора);
    СобытиеИндекс = НовСтрТабОтборов.ИндексОтбора;
    ИначеЕсли ИмяОтбора = «СтатусТранзакции» Тогда
    НовСтрТабОтборов = ТабОтборов.Добавить();
    НовСтрТабОтборов.Имя = ИмяОтбора;
    НовСтрТабОтборов.ИндексОтбора = ПолучитьИндексЭлементаОтбора(ЭлементыОтбора, ИмяОтбора);
    СтатусТранзакцииИндекс = НовСтрТабОтборов.ИндексОтбора;
    ИначеЕсли ИмяОтбора = «ПараметрыДанных.ПоляЖурналаРегистрации» Тогда
    НовСтрТабОтборов = ТабОтборов.Добавить();
    НовСтрТабОтборов.Имя = ИмяОтбора;
    НовСтрТабОтборов.ИндексОтбора = ПолучитьИндексЭлементаОтбора(ЭлементыОтбора, ИмяОтбора);
    ПоляЖурналаРегистрацииИндекс = НовСтрТабОтборов.ИндексОтбора;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    
    Возврат ТабОтборов;
    
    КонецФункции
    

    Показать

    Reply
  35. YPermitin

    (36) check2, ок, постараюсь в ближайшее время обновить файл в публикации.

    P.S. В ближайшие полтора — два месяца будет новая версия отчета.

    Там будет возможность напрямую читать данные из файла ЖР нового формата, что должно быть быстрее + переработан интефрейс для работы с отборами.

    Пока только думаю делать ли для обычного приложения новую версию или сконцентрироваться на управляемом интерфейсе.

    Reply
  36. Vklonin

    Добрый день. При запуске в 1С ЕРП 2.0 при нажатии кнопки настройки выходит ошибка «Не передан служебный параметр «НастройкаОтчета»»

    Можно как то это обойти?

    Reply
  37. YPermitin

    (38) Vklonin, добрый день!

    Эту ошибку исправил.

    Самая последняя версия отчета всегда здесь.

    Исправленная версия сейчас там же. В разделе Issues можете посмотреть какие изменения будут внесены в отчет в будущем.

    Reply
  38. MariP

    Могу ли я в этом отчете посмотреть загрузку по пользователям?

    Reply
  39. YPermitin

    (40) MariP, если Вы имеете ввиду посмотреть сколько объектов было создано пользователями за период времени, то можно настроить отчет с такими показателями.

    Последняя версия отчета доступна здесь.

    Там проще с настройками работать, но он сделан только для управляемого интерфейса (на старых конфигурациях не будет работать).

    Reply
  40. Euroset1
     Если ТипЗнч(Код) = Тип(«УровеньЖурналаРегистрации») Тогда
    Возврат Код;
    ИначеЕсли ТипЗнч(Код) = Тип(«Строка») Тогда
    ЧислоИзСтроки = ПреобразоватьКЧислу(Код);
    Если Код = ЧислоИзСтроки Тогда
    Возврат УровеньЖурналаРегистрации.Информация;
    ИначеЕсли Код = ЧислоИзСтроки Тогда
    Возврат УровеньЖурналаРегистрации.Ошибка;
    ИначеЕсли Код = ЧислоИзСтроки Тогда
    Возврат УровеньЖурналаРегистрации.Предупреждение;
    ИначеЕсли Код = ЧислоИзСтроки Тогда
    Возврат УровеньЖурналаРегистрации.Примечание;
    Иначе
    Возврат Неопределено;
    КонецЕсли;
    КонецЕсли;

    Показать

    Че за дичь? Сравниваем два одинаковых значения до посинения и возвращаем разный результат? Это на каком языке должно отработать?

    Reply
  41. YPermitin

    (42)

    ЧислоИзСтроки = ПреобразоватьКЧислу(Код)

    Это называется опечатка =)

    Если будет свободное время — исправлю. Последняя версия всегда на GitHub, здесь не обновляю.

    P.S. Спасибо за корректный язык предъявления ошибки 😉

    Reply
  42. Euroset1

    (43)

    там еще в соседней какой-то процедуре тоже самое.

    Reply
  43. YPermitin

    (44) Закинул инфу в Issue.

    Reply
  44. YPermitin

    (42) (42) Эти функции попросту не использовались в текущей версии отчета и перешли из устаревшей версии 1.0, которая больше не поддерживается.

    Зафиксировал изменения этим коммитом: https://github.com/YPermitin/EventLogAnalyzer-for-1C-Enterprise-8.x/commit/4292a52dfb20d68b256c5638a91685bd48b0e0f5

    Еще раз спасибо за комментарий. Если будут еще вопросы — всегда готов помочь.

    Reply
  45. tiger12

    Ошибка

    Не передан служебный параметр <Настройки отчета>

    Reply
  46. tiger12

    (47) это в старой версии. скачал новую, все нормально

    Reply
  47. gubanoff

    (0) Просто шикарный отчет, все работает из коробки, спасибо! Только нужно скачивать последнюю версию с гитхаба.

    Reply
  48. kwazi

    (25) я сделал 🙂

    Reply
  49. kwazi

    на GIT отчет функциональнее.

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

    Это как раз те функции работы с журналом регистрации которых нет в БСП. Без них этот отчет не имеет смысла — лучше использовать обработку Журнал регистрации из БСП. А так — это просто пример использования СКД. Ну может еще возможность строить графики имеет смысл. Плюсую. Положил себе в копилку.

    Reply
  50. YPermitin

    Актуализирована публикация отчета. Опубликована последняя версия с исправлением некоторых ошибок.

    Также добавил старую версию 1.0 с поддержкой обычных форм.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *