В один прекрасный момент на предприятии возникла необходимость создать отчет – «паутинку» как на Инфостарте.
Сначала предыстория: есть некоторый документ, в нем заполняются компетенции, т.е. скилы сотрудника . После проведения документа данные попадают в соответствующий регистр накопления. А дальше начинается магия!
Теперь нам необходимо построить отчет – «паутинку». Данный отчет будет формироваться по конкретному сотруднику, так же необходимо вывести все доступные компетенции у этого сотрудника, и при выборе другой вложимости «паутинка» должна перестраиваться.
Создадим новый объект метаданных Отчет, добавим ему форму. На форму выводим данные о сотруднике, ДеревоЗначений – для вывода компетенций, и самое главное добавляем объект Диаграмма.
Теперь настроим диаграмму таким образом, чтобы она отображалась именно паутинкой, точки которой связаны между собой. Для этого открываем настройки диаграммы:
Открывается окно настроек диаграммы, где нам необходимо выбрать следующие параметры:
Так же вы можете настроить фон у диаграммы, рамку, палитру отображаемых цветов, это уж как вам понравится. Стоит отметить, что при соединении всех точек между собой и при выборе цветовой палитры, будет выбран только один цвет, рандомный. Если вы хотите каждый «листик» диаграммы выделить своим цветом, необходимо убрать соединение точек. На мой взгляд такая диаграмма будет менее читабельной. Но как говориться, у каждого свои вкусы, кому то может понравится разноцветные «листики» =).
Итак, после всех настроек шаблон диаграммы будет выглядеть вот так:
На самом деле осталось самое легкое, настроить вывод данных в диаграмму. Для этого на форму отчета вывожу кнопку «Сформировать диаграмму». (В данном конкретном случае так было удобнее, но можно было сделать формирование при изменении сотрудника).
Заполняем дерево активных компетенции сотрудника, выбирая данные из Регистра накоплений, не забываем выбирать родителя и выводить итоги, чтобы дерево было иерархическим и можно было переключать уровни.
функция ПервоначальноЗаполнитьДеревоКомпетенций(Дерево) Запрос = новый запрос; Запрос.Текст = "ВЫБРАТЬ | СУММА(КомпетенцииОстатки.ОтработанныеЧасы) КАК ОтработанныеЧасы, | КомпетенцииОстатки.Родитель КАК Родитель, | КомпетенцииОстатки.Компетенции КАК Компетенции |ИЗ | РегистрНакопления.Компетенции.Остатки(&Период, Сотрудник = &Сотрудник) КАК КомпетенцииОстатки | |СГРУППИРОВАТЬ ПО | КомпетенцииОстатки.Родитель, | КомпетенцииОстатки.Компетенции | |УПОРЯДОЧИТЬ ПО | Родитель |ИТОГИ ПО | Компетенции ИЕРАРХИЯ"; Запрос.УстановитьПараметр("Период",ТекущаяДата()); Запрос.УстановитьПараметр("Сотрудник",Сотрудник); РезультатВыборки = Запрос.Выполнить(); Если не РезультатВыборки.Пустой() тогда Дерево = РезультатВыборки.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); КонецЕсли; Возврат Дерево; КонецФункции
Так же необходимо помнить, что подобная диаграмма будет строиться только в том случае, если у вас будет больше 2 "лепестков"!
А дальше наполняем диаграмму данными:
функция СформироватьДиаграмму() Диаграмма.Очистить(); Запрос = новый запрос; Запрос.Текст = "ВЫБРАТЬ | СУММА(КомпетенцииОстатки.ОтработанныеЧасы) КАК ОтработанныеЧасы, | КомпетенцииОстатки.Родитель КАК Компетенции |ИЗ | РегистрНакопления.Компетенции.Остатки(&Период, Сотрудник = &Сотрудник) КАК КомпетенцииОстатки | |СГРУППИРОВАТЬ ПО | КомпетенцииОстатки.Родитель"; Запрос.УстановитьПараметр("Период",ТекущаяДата()); Запрос.УстановитьПараметр("Сотрудник",Сотрудник); РезультатВыборки = Запрос.Выполнить().Выгрузить(); Если РезультатВыборки.Количество()>0 тогда ЗаполнитьДиаграмму(РезультатВыборки); КонецЕсли; КонецФункции
Собственно первоначальное (т.е самый высокий уровень вложимости) заполнение диаграммы готов! Дальше можно эксперементировать, и определять активную строку в дереве компетенций, в зависимости от вложения формировать свою "паутинку".
У меня по результату тестирования получилась вот такая паутинка, причем в зависимости от количества активных компетенций в активной группе меняется количество "листиков" диаграммы:
Ниже представлен внешний отчет, содержащий полный листинг программы (разрабатывала на платформе 1С:Предприятие 8.3 (8.3.13.1865)).
Пробовала сделать подобную диаграмму через СКД, но такого результата у меня не получилось. Возможно смотрела где то не там. Если вам приходилось строить подобные диаграммы, поделитесь способом, очень интересно!
Спасибо за внимание, хорошего дня!