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

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

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

  • для отражения событий
  • планирования задач
  • связки событий и цепочек задач
  • планирования занятости помещения

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

  • на форме
  • на табличном документе

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

    • Через быструю вставку (если кнопки нет, добавить через выпадающий список)

Добавление диаграмы ганта 1

    • Через меню «Форма/Вставить элемент управления» (можно сразу задать ее имя)

Добавление диаграмы ганта 2

    • В табличный документ (макет) через меню «Таблица\Рисунки\Диаграмма Ганта»

Добавление диаграмы ганта 3

    • Добавление в управляемую форму 8.2/8.3 реквизита формы

Добавление диаграмы ганта уф1и задание его типа

Добавление диаграмы ганта уф2

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

  • через ЭлементыФормы.ДиаграммаГанта1
  • через реквизит формы ДиаграммаГанта1
  • через ТабДок.Рисунки.ДиаграммаГанта1 (имя можно задать в свойствах рисунка)

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

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

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

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

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

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

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

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

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

Образец диаграмы ганта

 

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

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

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

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

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

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

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

  • возможности перетаскивать точки
  • отображать текст интервалов (например справа)
  • контекстного меню (открывающегося по правой кнопке)

Реклама — узаконенная ложь.

— Герберт Уэллс