Капитально об программе 1С 8.0-8.3-8.4, 7.7

1С диаграмма Ганта пример

Пример работы с диаграмой ганта в 1С

Диаграмма Ганта — способ отображения данных в виде диаграммы по времени со вложенными списками.

Используется

Диаграмма Ганта может располагаться

Добавление на форму

и задание его типа

Работа с этим объектом одинакова в обоих видах приложения (меняется только обращение)

Простой пример заполнения диаграммы тестовыми данными

//обращаемся к элементу на форме
ДиаграммаГанта = ЭлементыФормы.ДиаграммаГанта;

ТочкаПодразделения = ДиаграммаГанта.УстановитьТочку("Подразделение1");

//вложенная точка
Точка = ТочкаПодразделения.Точки.Добавить();
Точка.Текст = "Сотрудник1";//устанавливаем заголовок, а еще можно цвет фона, шрифт, цвет текста

//у каждой точки может быть несколько серий (графиков)
Серия = ДиаграммаГанта.УстановитьСерию("Показатель1");
//у серии можно задать цвет, но это происходит и автоматически

Значение = ДиаграммаГанта.ПолучитьЗначение(Точка, Серия);

//также несколько интервалов
Интервал = Значение.Добавить();
Интервал.Начало = НачалоМесяца(ТекущаяДата());
Интервал.Конец = КонецМесяца(ТекущаяДата());

Данный пример задает минимальные настройки для формирования диаграммы Ганта.

В результате будет вот такая диаграмма:

 

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

Интервалы можно формировать на всех уровнях вложенности точек.

Замечу, что одно из самых важных свойств  — это расшифровка — свойство, в которое можно поместить произвольное значение (ссылку, структура, цифру) и манипулировать точкой по событию выбор (например открывать документ, элемент справочника, менять цвет)

Пример обработчика Выбор диаграммы

Процедура ДиаграмаГанта1Выбор(Ганта, Значения, СтандартнаяОбработка, Дата)
	Если ТипЗнч(Значения) = Тип("ЗначениеДиаграммыГанта") Тогда
		//клик по пустому
		//Точка = Ганта.УстановитьТочку("Первая");
		//Серия = Значения[0]; 
		Если Дата < НачалоДня(ТекущаяДата()) Тогда
			Предупреждение("Дата раньше текущей!");
		КонецЕсли;
		
		_Значения = Значения;//Ганта.ПолучитьЗначение(Точка,Серия);
		Интервал = _Значения.Добавить();
		Интервал.Цвет = Новый Цвет(255,0,0);
		Интервал.Начало = НачалоДня(Дата);
		Интервал.Конец = КонецДня(Дата);
		Интервал.Текст = "Это новый интервал";//Подсказа при наведении
	ИначеЕсли ТипЗнч(Значения) = Тип("ТочкаДиаграммыГанта") Тогда	
               //Клик по заголовку точки, ничего не делаем
		СтандартнаяОбработка = Ложь;
		Возврат;
	Иначе
		//клик по существующему
		Интервал  = Значения[1];
		Если Интервал.Расшифровка = Неопределено Тогда
		Иначе	
			СтандартнаяОбработка = Ложь;
                        //Меняем цвет на обратный
			Если Интервал.Цвет = Новый Цвет(255,0,0) Тогда
				Интервал.Цвет = Новый Цвет(0,255,0);
			Иначе
				Интервал.Цвет = Новый Цвет(255,0,0);
			КонецЕсли;
		КонецЕсли;
		
	КонецЕсли;

КонецПроцедуры

Чего не хватает у Диаграммы Ганта?