gifts2017

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

Опубликовал Юрий Пермитин (YPermitin) в раздел Администрирование - Журнал регистрации

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Послесловие

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

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

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

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

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

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

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

В публикации об этом сказано.
5. Vladimir A (wowik) 29.07.13 10:07
6. Юрий Пермитин (YPermitin) 29.07.13 13:11
(5) wowik, скачайте этот отчет и сравните возможности.
7. Яков Коган (Yashazz) 30.07.13 12:25
(4) Так я и думал. Извините, это фигня и лютый баян. Вот если б вы напрямую сделали, БЕЗ таблицы значений...
8. Юрий Пермитин (YPermitin) 30.07.13 20:22
(6) YPermitin, просвети мастер как ты напрямую из файла ЖР считаешь данные и передашь их в СКД. Очень интересно.
10. Саша Безымяный (help1Ckr) 31.07.13 12:59
Хорошая идея и демонстрация возможностей скд.
11. Антон Ширяев (Антон Ширяев) 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) 01.08.13 18:29
(11) Антон Ширяев, парсить файл это не проблема.

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

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

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

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

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

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

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

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

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

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

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