Диаграмма Ганта
Диаграмма Ганта была разработана для визуализации временных отрезков графика работ и наиболее часто применяется в программах по управлению проектами.
Предполагаю, что объект Диаграмма Ганта в 1с был спроектирован для ЗУП(т.е. для задач визуализации расчетов), т.к. дает возможность для одной Точки(Сотрудника) увидеть несколько Серий(Начислений). Нельзя задать серию с детализацией несколькими колонками как это сделано в программах по управлению проектами.
Итак, основными элементами диаграммы являются Точка, Серия, Значение.
Точка диаграммы Ганта
это основной разрез данных, который можно отождествить с сотрудником, и визуально представлена колонкой слева от полоски, при этом одна точка объединяет несколько строк представленных сериями этой точки т.е. задает ограничения сверху и снизу. Ниже на рисунке для точки с названием "А" показаны границы отображаемых данных.
Серия диаграммы Ганта
это дополнительный разрез который детализирует точку, которую можно отождествить с видом расчета, и визуально представляет из себя строку внутри ограничений точки.
Значение диаграммы Ганта
это объект который хранит коллекцию Интервалов(Полосок). По сути, визуально, Значение это значение серии и соответственно занимает всю площадь серии. Значение можно получить указав Точку и Серию.
Интервал диаграммы Ганта
это объект который устанавливает длину полоски. Имеет параметры ДатаНачала и ДатаОкончания. Интервал можно отождествить с одним из периодов вида расчета.
Теперь давайте рассмотрим как это реализуется в коде.
Сначала нужно создать макет вида Табличный документ, на котором разместить Диаграмму Ганта
Создаем именованные области чтобы точно получать Диаграмму Ганта.
Также создаем реквизит с типом Табличный документ для вывода изображения - ТабДокРезультат.
Листинг получения Диаграммы Ганта:
ТабДокРезультат.Очистить();
ТекОбъект = РеквизитФормыВЗначение("Объект");
Макет = ТекОбъект.ПолучитьМакет("Макет");
ОбластьД=Макет.ПолучитьОбласть("ОбластьДиаграммы|ОбластьДиаграммыВерх");
Рисунок = ОбластьД.Рисунки[0];
ДГ = Рисунок.Объект;
Теперь нам нужно создать Точку, Серию, Значение.
Листинг создания Точки, Серии, значения:
Точка = ДГ.УстановитьТочку(ТекСтр.Точка);
Серия = ДГ.УстановитьСерию(ТекСтр.Серия);
Значение = ДГ.ПолучитьЗначение(Точка, Серия);
В методах УстановитьТочку и УстановитьСерию параметром указывается произвольный тип.
Когда у нас есть Значение тогда можно создать интервалы(полоски).
Листинг создания Интервала:
Интервал = Значение.Добавить();
Интервал.Цвет = WebЦвета.ЗеленаяЛужайка; // для интервала можно задать цвет
Интервал.Начало = Дата(2015,11,01);
Интервал.Конец = КонецДня(Дата(2015,11,05));
В итоге у нас получилась Диаграмма Ганта с минимальным заполнением, осталось только показать её. Для этого сначала нужно добавить заполненную диаграмму на Табличный документ формы.Но сначала увеличим размер диаграммы, иначе она будет размером как указана в макете конфигуратора. Для этого применим метод "Расположить", он применяется к рисункам, но как Вы видели на листинге "Листинг получения Диаграммы Ганта" Диаграмма фактически находится на объекте рисунок с индексом 0.
ВысотаДиаграммы = 15;
ШиринаДиаграммы = 15;
Рисунок.Расположить(ОбластьД.Область("R1C1:R"+ВысотаДиаграммы+"C"+ШиринаДиаграммы)); //ширина и высота выражается строках и столбцах
ТабДокРезультат.Вывести(ОбластьД);
Если использовать управляемые формы, то весь предыдущий код нужно написать на сервере.
Здесь Вы можете скачать небольшую обработку, на управляемых формах, в которой можно посмотреть принцип работы с Диаграммой Ганта. Ниже несколько скриншотов обработки.
Область ввода данных
Область настройки
Область диаграммы