Имя: Пароль:
1C
 
Диаграмма Ганта
0 LobS
 
01.03.07
08:31
Интервалы диаграммы Ганта выглядят в виде цилиндров, которые лежат на против своих точек. Таких цилиндров у точки столько же сколько и серий. Каждый цилиндр лежит на своем участке диаграммы Ганта и эти участки разделяются вертикальными линиями в области построения диаграммы.
Можно ли управлять высотой этих участков и как?.
Дело в том, что смотрю на демо базе "примеры ИТС" диаграмму, так там этот участок по высоте вдвое больше интервала (цилиндра); построил свою, она в полтора больше. Задача состоит в том чтоб увеличить эту высоту, т.к. текст точки очень длинный и хочется весь этот текст видеть в области построения (а не урезанный как он получается на узком участке).
Пересмотрел все свойства диаграммы, код построения диаграммы в демо базе, но не нашел как этим управлять. Помогите.
1 LobS
 
01.03.07
08:35
+(0) Ошибка: разделяются вертикальнами -> разделяются горизонтальными
2 Pashkaa
 
01.03.07
08:47
Здесь нет прямого ответа, но может что то натолкнёт на мысль

Как заполнить диаграмму Ганта данными?
ДГ = ЭлементыФормы.ДГ;

// Установить заголовок диаграммы.
ДГ.ОбластьЗаголовка.Текст = "График дежурств";

// Интервал будем определять самостоятельно.
ДГ.АвтоОпределениеПолногоИнтервала = Ложь;

// Установить интервал.
ДГ.УстановитьПолныйИнтервал(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));

// В диаграмме будет две точки - сотрудники Петров и Сидоров...
ТочкаП = ДГ.УстановитьТочку("Петров");
ТочкаС = ДГ.УстановитьТочку("Сидоров");

// и две серии - дежурство на вахте и дежурство в центральном офисе.
СерияНаВахте = ДГ.УстановитьСерию("На вахте");
СерияВЦентре = ДГ.УстановитьСерию("В центральном офисе");

// Задать цвета серий, отличные от цвета по умолчанию.
СерияНаВахте.Цвет = WebЦвета.Синий;
СерияВЦентре.Цвет = WebЦвета.СветлоЖелтый;
ПервыйДень = НачалоМесяца(ТекущаяДата());

// Получить значение диаграммы - дежурство Петрова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияНаВахте);

// В значении определить новый интервал.
Интервал = Значение.Добавить();
Интервал.Текст = "Работает на вахте";

// Определить границы интервала.
Интервал.Начало = ПервыйДень;
Интервал.Конец = ПервыйДень + 10 * 24 * 60 * 60;

// Получить значение диаграммы - дежурство Петрова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияВЦентре);
Интервал = Значение.Добавить();
Интервал.Текст = "Работает в центральном офисе";
Интервал.Начало = ПервыйДень + 14 * 24 * 60 * 60;
Интервал.Конец = ПервыйДень + 24 * 24 * 60 * 60;

// Получить значение диаграммы - дежурство Сидорова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияНаВахте);
Интервал = Значение.Добавить();
Интервал.Текст = "Работает на вахте";
Интервал.Начало = ПервыйДень + 5 * 24 * 60 * 60;
Интервал.Конец = ПервыйДень + 15 * 24 * 60 * 60;

// Получить значение диаграммы - дежурство Сидорова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияВЦентре);
Интервал = Значение.Добавить();
Интервал.Текст = "Работает в центральном офисе";
Интервал.Начало = ПервыйДень + 21 * 24 * 60 * 60;
Интервал.Конец = ПервыйДень + 25 * 24 * 60 * 60;
Как связать интервалы диаграммы Ганта?
// Получить значение диаграммы - дежурство Петрова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияНаВахте);

// В значении определить новый интервал.
Интервал = Значение.Добавить();

// Запомнить интервал начала связи.
СвязьИнтервалНачало = Интервал;

// Получить значение диаграммы - дежурство Петрова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияВЦентре);
Интервал = Значение.Добавить();

// Запомнить интервал окончания связи.
СвязьИнтервалКонец = Интервал;  

// Связать два интервала.
Связь = СвязьИнтервалНачало.Добавить(СвязьИнтервалКонец);
Связь.Цвет = WebЦвета.Синий;

// Получить значение диаграммы - дежурство Сидорова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияНаВахте);
Интервал = Значение.Добавить();
СвязьИнтервалНачало = Интервал;  

// Получить значение диаграммы - дежурство Сидорова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияВЦентре);
Интервал = Значение.Добавить();
СвязьИнтервалКонец = Интервал;

// Связать два интервала.
Связь = СвязьИнтервалНачало.Добавить(СвязьИнтервалКонец);
Связь.Цвет = WebЦвета.Синий;
Как обработать интерактивное изменение интервалов диаграммы Ганта?
// Получить значение диаграммы - дежурство Петрова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияНаВахте);

// Разрешить интерактивное редактирование интервалов.
Значение.Редактирование = Истина;

// Получить значение диаграммы - дежурство Петрова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаП, СерияВЦентре);
Значение.Редактирование = Истина;

// Получить значение диаграммы - дежурство Сидорова на вахте.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияНаВахте);
Значение.Редактирование = Истина;

// Получить значение диаграммы - дежурство Сидорова в центральном офисе.
Значение = ДГ.ПолучитьЗначение(ТочкаС, СерияВЦентре);
Значение.Редактирование = Истина;

Процедура ДГПриОкончанииРедактированияИнтервала(Элемент, Интервал, Отмена)

// Сгладить погрешности интерактивного перетаскивания -
// округлить интервал по границе дня.
Интервал.Начало = Интервал.Начало + 3600 * 12;
Интервал.Начало = НачалоДня(Интервал.Начало);
Интервал.Конец = Интервал.Конец + 3600 * 12;
Интервал.Конец = НачалоДня(Интервал.Конец);

// Скорректировать цвета связей.
Для Каждого Связь Из Интервал Цикл
   Если Связь.Начало.Конец <= Связь.Конец.Начало Тогда
       Связь.Цвет = WebЦвета.Синий;
   Иначе // есть пересечение интервалов - выделить красным
       Связь.Цвет = WebЦвета.Красный;
   КонецЕсли;
КонецЦикла;

КонецПроцедуры
Как разместить непериодические метки в диаграмме Ганта?
// Установить непериодические метки - контроль дежурства.

// Создать отдельный элемент шкалы времени (для более наглядного отображения)
ЭлементМеток = ДГ.ОбластьПостроения.ШкалаВремени.Элементы.Добавить();
ЭлементМеток.Единица = ТипЕдиницыШкалыВремени.День;

// Скрыть периодические метки добавленного элемента.
ЭлементМеток.ОтображатьПериодическиеМетки = Ложь;

// Установить метку - первая проверка - 10 часов утра 9 числа.
ПерваяПроверка = ПервыйДень + 8 * 24 * 60 * 60 + 10 * 60 * 60;
Метка = ЭлементМеток.Метки.Добавить(ПерваяПроверка);
Метка.Текст = "Проверка";
Метка.ЦветТекста = WebЦвета.Красный;
Метка.ЦветЛинии = Метка.ЦветТекста;

// Установить метку - вторая проверка - 8 часов вечера 23 числа.
ВтораяПроверка = ПервыйДень + 22 * 24 * 60 * 60 + 20 * 60 * 60;
Метка = ЭлементМеток.Метки.Добавить(ВтораяПроверка);
Метка.Текст = "Проверка";
Метка.ЦветТекста = WebЦвета.Красный;
Метка.ЦветЛинии = Метка.ЦветТекста;
Как выделить некоторые интервалы фона диаграммы Ганта?
// Выделить выходные дни другим цветом фона.
Неделя = 3600 * 24 * 7;
Выходные = 3600 * 48;
МаксимальнаяДата = ПервыйДень + Неделя * 4;
ТекущаяДата = ПервыйДень;

Пока ТекущаяДата <= МаксимальнаяДата Цикл
   Конец = НачалоНедели(ТекущаяДата);    
   Начало = Конец - Выходные;    
   ДГ.ИнтервалыФона.Добавить(Начало, Конец);
   
   ТекущаяДата = ТекущаяДата + Неделя;
КонецЦикла;
3 LobS
 
01.03.07
10:04
(2) Это я уже отрабатывал - ответа не нашел
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.