Имя: Пароль:
1C
1С v8
Диаграмма в 8.3
0 ZaprosMan
 
29.12.16
16:33
Всем привет и с наступающим!!
Мучаю диаграмму Ганта.
Получается, но не совсем так как надо.
Есть допиленный справочник проекты. В него добавлена таб часть "Этапы". В данный момент предусмотрено до пяти независимых групп этапов. Чтобы было понятнее вот фотка:
https://cloud.mail.ru/public/LRJ3/Q2cnhXNUg
В данном случае составлено три группы этапов из которых в работе только первый. Диаграмма показывает план и факт выполнения.
Если включить вторую группу этапов в работу, то диаграмма показывает следующее:
https://cloud.mail.ru/public/9AKQ/5Y3q5YLMK
В диаграмма появляется лишних две строки
https://cloud.mail.ru/public/9S76/JCPbi82fx

Они появляются вместе с созданием новой точки диаграммы.

КОД:
Процедура ОбновитьДиаграмму()
    Перем Вработе,ИмяЭтап,ДатаНачалаЭтапа;
    //
    Диаграмма.Очистить();
    //
    Для Сч=1 По 5 Цикл
        
        Выполнить("Вработе = Объект.ЭтапВРаботе"+Строка(Сч));
        
        Если Не Вработе Тогда
            Продолжить;
        КонецЕсли;
        
        МассвДат = Объект.Этапы.НайтиСтроки(Новый Структура("НомерЭтапа",Сч));
        
        Выполнить("ИмяЭтап = Объект.ИмяЭтап"+Строка(Сч));
        ТочкаЭтапов = Диаграмма.УстановитьТочку(ИмяЭтап,Диаграмма);
        //ТочкаЭтапов.Родитель = Неопределено;
        //        
        Серия = Диаграмма.УстановитьСерию(Строка(ИмяЭтап)+" (план)");
        СерияФакт = Диаграмма.УстановитьСерию(Строка(ИмяЭтап)+" (факт)");
        
        Выполнить("ДатаНачалаЭтапа = Объект.ДатаНачалаЭтапа"+Строка(Сч));  
        
        НачалоИнтервала     = ДатаНачалаЭтапа;
        НачалоИнтервалаФакт = ДатаНачалаЭтапа;
        
        Для Каждого ЭлементМассива Из МассвДат Цикл
            Точка = ТочкаЭтапов.Точки.Добавить();
            Точка.Текст = Строка(ЭлементМассива.Этап);
            //План
            Значение = Диаграмма.ПолучитьЗначение(Точка, Серия);
            
            Интервал = Значение.Добавить();
            Интервал.Начало = НачалоИнтервала;
            Интервал.Конец  = ЭлементМассива.ДатаПлан;
            //
            НачалоИнтервала     = ЭлементМассива.ДатаПлан;
            /////////Факт
            Если ЗначениеЗаполнено(ЭлементМассива.ДатаФакт) Тогда
                ЗначениеФакт = Диаграмма.ПолучитьЗначение(Точка, СерияФакт);
                
                ИнтервалФакт = ЗначениеФакт.Добавить();
                ИнтервалФакт.Начало = НачалоИнтервалаФакт;
                ИнтервалФакт.Конец  = ЭлементМассива.ДатаФакт;
                //
                НачалоИнтервалаФакт = ЭлементМассива.ДатаФакт;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры


Подскажите, что тут не так? Чет запутался в конец.
Спасибо!!!!
1 ZaprosMan
 
29.12.16
16:59
Уже все отмечают наверное?
Я один еще работаю?
2 Жан Пердежон
 
29.12.16
18:04
Точка = ТочкаЭтапов.Точки.Добавить();
3 ZaprosMan
 
29.12.16
18:15
(2) Пробовал вынести из цикла "точкуЗаказа" эфект, не тот.

Я думаю дело в
Серия = Диаграмма.УстановитьСерию(Строка(ИмяЭтап)+" (план)");
        СерияФакт = Диаграмма.УстановитьСерию(Строка(ИмяЭтап)+" (факт)");

Эти куски кода выполняются 4 раза.
4 ZaprosMan
 
29.12.16
18:16
Когда включены два блока этапов.