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

Администрирование - Журнал регистрации

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

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

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

 Просмотр журнала регистрации встроенными средствами платформы

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

 Форма отчета по журналу регистрации (управляемая)

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

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

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

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

 Основные настройки отчета по журналу регистрации (фильтры, состав полей, макс. количество записей)

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

Те настройки, которые реализованы с помощью отборов, позволяют установить значения фильтров на такие поля как "Уровень", "Событие" и "Статус транзакции" с учетом всех их возможных значений. В параметры в основном вынесены настройки, значения которых заполняется произвольной строкой. Подробнее узнать о возможных значениях этих параметров Вы можете узнать в синтаксис-помощнике в информации к методу "ВыгрузитьЖурналРегистрации()".

Единственное отличие в настройках - это параметр "Метаданные". Поскольку в параметр нельзя выбрать непосредственно элемент с типом "ОбъектМетаданных", то значение отбора вводится строкой. Например, отбор по метаданным справочника "Номенклатура" будет иметь следующее стрковое значение: "Справочники.Номенклатура".

Фильтр по метаданным отчета

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

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

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

Пользовательское поле

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

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

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

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

Использование метаданных      Количество транзакций в секунду

Ошибки выполнения     События журнала регистрации

На скриншоте в начале статьи был представлен отчет в виде диаграммы "Активность пользователей (общая).

Послесловие

Модуль объекта отчета открыт для просмотра/редактирования. Возможно кому-нибудь пригодиться для создания собственных разработок. В той части кода, где идет получение записей журнала регистрации спомощью метода "ВыгрузитьЖурналРегистрации()" можно произвести замену алгоритма получения записей журнала на свой собственный, например для получения данных из журнала, хранящегося в отдельной SQL-базе. Отчет работает как в обычном, так и в управляемом приложении.

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

Все замечания / предложения оставляйте в комментариях.

Мой блог: www.develplatform.com

Несколько статей по СКД:

  1. СКД. Отчет с картинками. Универсальный подход
  2. СКД не для отчетов
  3. Особенность использования механизма характеристик в СКД
  4. СКД. Вывод произвольного изображения в шапку отчета

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

Наименование Файл Версия Размер
Просмотр и анализ журнала регистрации
.erf 26,89Kb
25.07.13
668
.erf 26,89Kb 668 Скачать

См. также

Комментарии
1. Яков Коган (Yashazz) 2079 25.07.13 17:39 Сейчас в теме
Надеюсь, это всё БЕЗ промежуточной выгрузки в xml, таблицу, файл и прочую ересь, т.е. напрямую? Потому как если нет, то баян.
2. Юрий Пермитин (YPermitin) 603 25.07.13 18:05 Сейчас в теме
(1) Yashazz, никаких промежуточных файлов.
3. Сергей Гуков (SirYozha) 169 26.07.13 07:51 Сейчас в теме
(2) через выгрузку в таблицу значений?
4. Юрий Пермитин (YPermitin) 603 26.07.13 08:07 Сейчас в теме
(3) SirYozha, устанавливайте фильтры, потом через метод "ВыгрузитьЖурналРегистрации()" в таб. значений, а она уже передается в компоновщик как внешний источник.

В публикации об этом сказано.
5. Vladimir A (wowik) 276 29.07.13 10:07 Сейчас в теме
6. Юрий Пермитин (YPermitin) 603 29.07.13 13:11 Сейчас в теме
(5) wowik, скачайте этот отчет и сравните возможности.
7. Яков Коган (Yashazz) 2079 30.07.13 12:25 Сейчас в теме
(4) Так я и думал. Извините, это фигня и лютый баян. Вот если б вы напрямую сделали, БЕЗ таблицы значений...
8. Юрий Пермитин (YPermitin) 603 30.07.13 20:22 Сейчас в теме
(6) YPermitin, просвети мастер как ты напрямую из файла ЖР считаешь данные и передашь их в СКД. Очень интересно.
10. Саша Безымяный (help1Ckr) 31.07.13 12:59 Сейчас в теме
Хорошая идея и демонстрация возможностей скд.
11. Антон Ширяев (Антон Ширяев) 403 01.08.13 16:36 Сейчас в теме
(8) YPermitin,
Метод на самом деле есть, но далеко не факт, что более быстрый - парсить файлы журнала регистрации напрямую. Пример прямого парсинга есть в моей обработке Анализ и редактирование файлов журнала регистрации 1С 8.1/8.2 - ELF/LOG/LGF/LGP

Формат файлов я описал в статье - Формат файлов журнала регистрации 1С 8.1/8.2 - ELF/LOG/LGF/LGP
12. Юрий Пермитин (YPermitin) 603 01.08.13 18:29 Сейчас в теме
(11) Антон Ширяев, парсить файл это не проблема.

Проблема будет передать все это дабро в СКД для использования ее возможностей. Конечно можно извратнуться и использовать вызов функций общих модулей из СКД, но фактически это будет то же самое, что и использовать промежуточные таблицы.
13. kiruha Дронов (kiruha) 359 13.08.13 09:52 Сейчас в теме
Основная проблема с ЖР не отбор(диаграммы нафиг не нужны), а в скорости
Как я понял ничего для этого не сделано ?
14. Юрий Пермитин (YPermitin) 603 13.08.13 10:35 Сейчас в теме
(13) kiruha, настраивайте состав полей, выбираемых из ЖР. Чем меньше полей, тем быстрее формирование отчета.

Журнал регистрации сам по себе не рассчитан на быстрое получение данных, чего уж тут. Если хотите быстро формировать по нему отчеты, то переносите в отдельную SQL-базу. Такие решения есть на Инфостарте.
15. kiruha Дронов (kiruha) 359 13.08.13 11:09 Сейчас в теме
Просто надеялся что возможно скрестить быстрое чтение логов + хорошая обработка как у Вас
16. Юрий Пермитин (YPermitin) 603 13.08.13 11:36 Сейчас в теме
(15) kiruha, если сделать хранение ЖР во внешней SQL-базе, то доработать отчет, чтобы он читал данные из этой базы, будет не сложно.
17. Марина Чирина (chmv) 19.08.13 08:47 Сейчас в теме
Но куда то ведь выгружается. И на это надо время
18. Марина Чирина (chmv) 19.08.13 08:48 Сейчас в теме
Все понятно - но зачем? Если срочно надо посмотреть что-то, что мы будем выгружать
19. Юрий Пермитин (YPermitin) 603 19.08.13 22:33 Сейчас в теме
(18) chmv, не совсем понял в чем ваш вопрос или замечание.
20. Марина Чирина (chmv) 20.08.13 14:32 Сейчас в теме
Ваша задача не решит вопросы. Т.к. требуется время на выгрузку
21. Марина Чирина (chmv) 20.08.13 14:33 Сейчас в теме
Вот если бы Вы сразу писали журнал регистрации в другую базу - тогда понятно. Пожелание
22. Юрий Пермитин (YPermitin) 603 20.08.13 14:45 Сейчас в теме
(21) chmv, это всего лишь отчет, использующий стандартные возможности платформы для чтения ЖР и использующий всю мощь СКД для гибкой настройки.

В рамках этой публикации выгрузку в отдельную SQL-базу выполнять нет смысла. Для этого обратите внимание, например, на эту публикацию: http://infostart.ru/public/185691
23. Марина Чирина (chmv) 21.08.13 08:53 Сейчас в теме
24. Maxim Kolkin (the1) 280 24.09.13 14:58 Сейчас в теме
Вот это я называю заслуженный плюс! Отличная публикация и полезный отчет! Спасибо
25. Кирилл Бондаренко (karapuzzzz) 58 21.01.14 15:57 Сейчас в теме
Использую конфигурацию Документооборт. Она строится на механизмах библиотеки стандартных подсистем. Было желание подключить эту обработку как внешнюю и использовать в рассылке отчетов. С первым вопросов не возникло. Добавил в модуль объекта функции и подключил как внешнюю. А вот с использованием в рассылке отчетов возникла проблема. В момент инициализации процессора КД выдает ошибку ("ПроцессорКД.Инициализировать(МакетКД, , , Истина);"). Я так понимаю, что сделать ничего не получиться?
26. Юрий Пермитин (YPermitin) 603 21.01.14 19:03 Сейчас в теме
(25) karapuzzzz, при разработке отчета не учитывал возможности БСП, поэтому вряд ли отчет можно приспособить как вы хотите. Нужно его допиливать.
27. Александр Удалов (higs) 31.03.14 08:11 Сейчас в теме
Спасибо! Удачно попалась на глаза. А то напрягало делать отборы в большом журнале стандартными методами самого ЖР.
28. Юрий Пермитин (YPermitin) 603 31.03.14 14:33 Сейчас в теме
30. Николай Коваленко (Voltage220) 24.02.15 15:01 Сейчас в теме
Не работают отчёты: Работа с данными, сеансы пользователей и количество транзакций в секунду. Информация в журнале регистрации имеется. Прошу разработчика помочь разобраться с этой проблемой.
31. Сергей Лесовой (Synoecium) 96 27.05.15 14:09 Сейчас в теме
Планируется ли доработка этого отчета? Возможности, которых не хватает на мой взгляд:
1. У поля "Метаданные" сделать выбор из списка, а не ввод строкой, легко можно ошибиться и тогда фильтр не будет применен к выборке.
2. Зачем сделано поле "ИмяПользователя", можно было для фильтра и отборов использовать справочник "Пользователи". Проблемы те же, сложно написать по памяти строкой пользователя
3. Разделить выполнение на 2 этапа: получение данных из ЖР и построение отчета СКД. Самая длительная операция это получение данных из ЖР, если данные получены по ним можно построить несколько отчетов (вынести доп. поля, настроить отбор), причем мгновенно.
4. Вынести выполнение отчета в фоновое задание, тогда пока строится отчет, можно будет работать спокойно с базой. Подобное сделано в типовом отчете "Калькуляция себестоимости" в УПП, например.
5. Добавить замер времени выполнения отчета.
32. Юрий Пермитин (YPermitin) 603 28.05.15 06:31 Сейчас в теме
(31) Synoecium, отличные идеи, но в ближайшем будущем не планировал дорабатывать отчет.
Особо им сейчас не пользуюсь, поэтому он и находится в таком "Застое".

Посмотрим, будет время - допилю. В принципе ничего особенного.
33. Никита Грызлов (nixel) 74 25.06.15 16:47 Сейчас в теме
(31) Synoecium, в фоновых заданиях можно выполнять только процедуры из общих серверных модулей. Здесь же просто внешний отчет.
Зачем вам замер времени? Какая практическая польза?

Остальные пункты да, полезные.
34. Тимур Муртазаев (Tilirxs) 03.11.15 17:31 Сейчас в теме
35. Евгений Чекушкин (check2) 20 01.05.16 05:06 Сейчас в теме
Коллега, при использовании групповых условий - ошибка:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{ВнешнийОтчет.ПросмотрИАнализЖурналаРегистрации.МодульОбъекта(244)}: Поле объекта не обнаружено (ЛевоеЗначение)

36. Евгений Чекушкин (check2) 20 01.05.16 05:13 Сейчас в теме
Поправьте, в функцию нужно добавить строки, выделено жирным италиком.
Функция СоздатьТаблицуИспользованныхОтборов(ЭлементыОтбора, СобытиеИндекс, УровеньИндекс, СтатусТранзакцииИндекс, ПоляЖурналаРегистрацииИндекс)
	
	ТабОтборов = Новый ТаблицаЗначений;
	ТабОтборов.Колонки.Добавить("Имя");
	ТабОтборов.Колонки.Добавить("ИндексОтбора");
	Для Каждого ЭлементОтбора Из ЭлементыОтбора Цикл
		Если ТипЗнч(ЭлементОтбора) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда
			Продолжить;
		КонецЕсли;
		ИмяОтбора = Строка(ЭлементОтбора.ЛевоеЗначение);
		Если ЭлементОтбора.Использование Тогда
			Если ИмяОтбора = "Уровень" Тогда
				НовСтрТабОтборов = ТабОтборов.Добавить();
				НовСтрТабОтборов.Имя = ИмяОтбора;
				НовСтрТабОтборов.ИндексОтбора = ПолучитьИндексЭлементаОтбора(ЭлементыОтбора, ИмяОтбора);
				УровеньИндекс = НовСтрТабОтборов.ИндексОтбора;
			ИначеЕсли ИмяОтбора = "Событие" Тогда 
				НовСтрТабОтборов = ТабОтборов.Добавить();
				НовСтрТабОтборов.Имя = ИмяОтбора;
				НовСтрТабОтборов.ИндексОтбора = ПолучитьИндексЭлементаОтбора(ЭлементыОтбора, ИмяОтбора); 
				СобытиеИндекс = НовСтрТабОтборов.ИндексОтбора; 
			ИначеЕсли ИмяОтбора = "СтатусТранзакции" Тогда
				НовСтрТабОтборов = ТабОтборов.Добавить();
				НовСтрТабОтборов.Имя = ИмяОтбора;
				НовСтрТабОтборов.ИндексОтбора = ПолучитьИндексЭлементаОтбора(ЭлементыОтбора, ИмяОтбора);
				СтатусТранзакцииИндекс = НовСтрТабОтборов.ИндексОтбора;
			ИначеЕсли ИмяОтбора = "ПараметрыДанных.ПоляЖурналаРегистрации" Тогда
				НовСтрТабОтборов = ТабОтборов.Добавить();
				НовСтрТабОтборов.Имя = ИмяОтбора;
				НовСтрТабОтборов.ИндексОтбора = ПолучитьИндексЭлементаОтбора(ЭлементыОтбора, ИмяОтбора);
				ПоляЖурналаРегистрацииИндекс = НовСтрТабОтборов.ИндексОтбора;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла; 
	
	Возврат ТабОтборов;
	
КонецФункции
...Показать Скрыть
37. Юрий Пермитин (YPermitin) 603 01.05.16 13:36 Сейчас в теме
(36) check2, ок, постараюсь в ближайшее время обновить файл в публикации.

P.S. В ближайшие полтора - два месяца будет новая версия отчета.
Там будет возможность напрямую читать данные из файла ЖР нового формата, что должно быть быстрее + переработан интефрейс для работы с отборами.
Пока только думаю делать ли для обычного приложения новую версию или сконцентрироваться на управляемом интерфейсе.
38. Владимир клонин (Vklonin) 02.06.16 14:31 Сейчас в теме
Добрый день. При запуске в 1С ЕРП 2.0 при нажатии кнопки настройки выходит ошибка "Не передан служебный параметр "НастройкаОтчета""
Можно как то это обойти?
39. Юрий Пермитин (YPermitin) 603 07.06.16 23:04 Сейчас в теме
(38) Vklonin, добрый день!

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

Самая последняя версия отчета всегда здесь.
Исправленная версия сейчас там же. В разделе Issues можете посмотреть какие изменения будут внесены в отчет в будущем.
40. MariP Назарова (MariP) 15 05.09.16 12:25 Сейчас в теме
Могу ли я в этом отчете посмотреть загрузку по пользователям?
41. Юрий Пермитин (YPermitin) 603 05.09.16 13:06 Сейчас в теме
(40) MariP, если Вы имеете ввиду посмотреть сколько объектов было создано пользователями за период времени, то можно настроить отчет с такими показателями.

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

Там проще с настройками работать, но он сделан только для управляемого интерфейса (на старых конфигурациях не будет работать).
42. Антон Володченко (Euroset1) 4 27.02.17 07:17 Сейчас в теме
	Если ТипЗнч(Код) = Тип("УровеньЖурналаРегистрации") Тогда
		Возврат Код;
	ИначеЕсли ТипЗнч(Код) = Тип("Строка") Тогда
		ЧислоИзСтроки = ПреобразоватьКЧислу(Код);
		Если Код = ЧислоИзСтроки Тогда
			Возврат УровеньЖурналаРегистрации.Информация;
		ИначеЕсли Код = ЧислоИзСтроки Тогда
			Возврат УровеньЖурналаРегистрации.Ошибка;
		ИначеЕсли Код = ЧислоИзСтроки Тогда
			Возврат УровеньЖурналаРегистрации.Предупреждение;
		ИначеЕсли Код = ЧислоИзСтроки Тогда
			Возврат УровеньЖурналаРегистрации.Примечание;
		Иначе
			Возврат Неопределено;
		КонецЕсли;     		
	КонецЕсли;
...Показать Скрыть


Че за дичь? Сравниваем два одинаковых значения до посинения и возвращаем разный результат? Это на каком языке должно отработать?
43. Юрий Пермитин (YPermitin) 603 27.02.17 10:49 Сейчас в теме
(42)
ЧислоИзСтроки = ПреобразоватьКЧислу(Код)


Это называется опечатка =)
Если будет свободное время - исправлю. Последняя версия всегда на GitHub, здесь не обновляю.

P.S. Спасибо за корректный язык предъявления ошибки ;)
44. Антон Володченко (Euroset1) 4 27.02.17 17:17 Сейчас в теме
(43)
там еще в соседней какой-то процедуре тоже самое.
45. Юрий Пермитин (YPermitin) 603 27.02.17 18:55 Сейчас в теме
46. Юрий Пермитин (YPermitin) 603 03.03.17 22:20 Сейчас в теме
(42) (42) Эти функции попросту не использовались в текущей версии отчета и перешли из устаревшей версии 1.0, которая больше не поддерживается.
Зафиксировал изменения этим коммитом: https://github.com/YPermitin/EventLogAnalyzer-for-1C-Enterprise-8.x/commit/4292a52dfb20d68b256c5638a91685bd48b0e0f5

Еще раз спасибо за комментарий. Если будут еще вопросы - всегда готов помочь.
47. Анатолий Андреев (tiger12) 3 18.04.17 16:38 Сейчас в теме
Ошибка

Не передан служебный параметр <Настройки отчета>
Прикрепленные файлы:
48. Анатолий Андреев (tiger12) 3 18.04.17 16:43 Сейчас в теме
(47) это в старой версии. скачал новую, все нормально
Оставьте свое сообщение