Информационный поток
Задания вакансии материалы разработки сообщения форума
Рубрики статей и материалов
Яндекс-директ

Пример использования внешнего источника данных в СКД

  • Добавить свою публикацию
  • для этого требуется регистрация

Динамика работы пользователей

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

Изображение

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

Рассмотрим поэтапное создание подобного отчета и с помощью внешнего набора данных построим его на системе компоновки данных.

Читаем журнал регистрации

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

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

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

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь; // отключаем стандартный вывод отчета - будем выводить программно 
	// Получаем настрокий отчета, в т.ч. период
	Настройки = КомпоновщикНастроек.ПолучитьНастройки(); // Получаем настройки отчета 
	ПараметрПериод = 
	     КомпоновщикНастроек.ПолучитьНастройки().ПараметрыДанных.Элементы.Найти("Период").Значение;
	
	ЖурТаб = Новый ТаблицаЗначений;
	ОтборЖурнала = Новый Структура; // Создадим структуру отбора журнала регистрации
	// Заполним отбор по периоду
	ОтборЖурнала.Вставить("ДатаНачала", ПараметрПериод.ДатаНачала);
	ОтборЖурнала.Вставить("ДатаОкончания", ПараметрПериод.ДатаОкончания);
	// Установим отбор на события
	МассивСобытий = Новый Массив;
	МассивСобытий.Добавить("_$Data$_.Delete");
	МассивСобытий.Добавить("_$Data$_.New");
	МассивСобытий.Добавить("_$Data$_.Post");
	МассивСобытий.Добавить("_$Data$_.TotalsPeriodUpdate");
	МассивСобытий.Добавить("_$Data$_.Unpost");
	МассивСобытий.Добавить("_$Data$_.Update"); 
	ОтборЖурнала.Вставить("Событие", МассивСобытий);
	// Выгружаем журнал регистрации
	ВыгрузитьЖурналРегистрации(ЖурТаб, МассивСобытий);
	// Создаем и заполняем данные для вывода в отчет
	ЖурТаб.Колонки.Добавить("Время");
	ЖурТаб.Колонки.Добавить("КоличествоСобытий");
	Для Каждого Стр Из ЖурТаб Цикл
		Стр.Время = Час(Стр.Дата);
		Стр.КоличествоСобытий = 1;
	КонецЦикла;	   
	// Группируем результат
	ЖурТаб.Свернуть("ИмяПользователя, Время", "КоличествоСобытий");

    // ..............

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

Подробнее о использовании метода "ВыгрузитьЖурналРегистрации" Вы можете прочитать в синтаксис-помощнике.

Передаем таблицу значений в СКД

Для того, чтобы СКД смогла работать с полученной таблице значений нужно проделать следующий действия:

1) Создать набор данных в схеме компоновки и задать его поля.Изображение2) В программный код модуля "ПриКомпоновкеРезультата" прописать передачу таблицы значений в СКД.

 	// Группируем результат
	ЖурТаб.Свернуть("ИмяПользователя, Время", "КоличествоСобытий");
	    	
	ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; // Создаем данные расшифровки 
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; // Создаем компоновщик макета 
	// Инициализируем макет компоновки используя схему компоновки данных 
	// и созданные ранее настройки и данные расшифровки
	СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, 
							Настройки, ДанныеРасшифровки);
	
	// Скомпонуем результат
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,
		// !!! Передаем таблицу "ЖурТаб" в процессор компоновки !!!
		Новый Структура("ЖурналРегистрации", ЖурТаб), 
		ДанныеРасшифровки);
	
	ДокументРезультат.Очистить();
	
	// Выводим результат в табличный документ
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);	
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
КонецПроцедуры

3) Настраиваем ресурсы и структуру отчета (подробнее смотри в файле отчета, ссылка на который дана в конце статьи).

На этом настройки отчета завершены и мы можем запустить его в режиме предприятия. 

Итог

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

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

Скачать отчет из примера Вы можете по следующей ссылке.

 
0
Читайте также
[СКД] Организация простейшего отчета с помощью схемы компоновки данных
Схема компоновки данных представляет большие возможности по отборам, группировкам и оформлению выходного макета
Управление видом отчета на СКД
Настройка отчета на СКД без кодирования
СКД. Вывод произвольного изображения в шапку отчета
Как добавить изображение в шапку отчета на СКД
Разработки
Реестр документов .
БП 2.0 Отчет на СКД
Консоль компоновки данных
Обработка состоит их запросов, СКД и объектов
Общий журнал документов в Управляемом приложении на СКД
Журнал документов для любой конфигурации 1С Предприятие (тонкий клиент)
Еще от автора
≡ к списку статей