|
Диаграмма Ганта | ☑ | ||
---|---|---|---|---|
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) Это я уже отрабатывал - ответа не нашел
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |