Имя: Пароль:
1C
 
Построение графиков с несколькими показателями на форме
,
0 asder117
 
22.08.19
09:44
Коллеги доброго времени суток.
Есть задача отображения данных на диаграмме в форме обработки. При построении диаграммы с помощью СКД проблем не возникает. Но диаграмму оттуда очень сложно вытащить и засунуть в форму обработки. Пытаюсь постоить ее программно
      Диаграмма = ЭлементыФормы.ДиаграммаПлан;
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РасчетнаяТаблица.ДатаПериода КАК ДатаПериода,
        |    РасчетнаяТаблица.Прогноз КАК Прогноз,
        |    РасчетнаяТаблица.ФактПоступлений КАК ФактПоступлений,
        |    РасчетнаяТаблица.ПланНаМесяц КАК ПланНаМесяц,
        |    РасчетнаяТаблица.План75 КАК План75,
        |    РасчетнаяТаблица.ПланНарастающий КАК ПланНарастающий,
        |    РасчетнаяТаблица.ПрогнозНарастающий КАК ПрогнозНарастающий,
        |    РасчетнаяТаблица.ФактНарастающий КАК ФактНарастающий,
        |    РасчетнаяТаблица.ВыполнениеПлана КАК ВыполнениеПлана,
        |    РасчетнаяТаблица.ВыполнениеПрогноза КАК ВыполнениеПрогноза
        |ПОМЕСТИТЬ ТаблицаДляДиаграммы
        |ИЗ
        |    &РасчетнаяТаблица КАК РасчетнаяТаблица
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ТаблицаДляДиаграммы.ДатаПериода КАК ДатаПериода,
        |    ТаблицаДляДиаграммы.Прогноз КАК Прогноз,
        |    ТаблицаДляДиаграммы.ФактПоступлений КАК ФактПоступлений,
        |    ТаблицаДляДиаграммы.ПланНаМесяц КАК ПланНаМесяц,
        |    ТаблицаДляДиаграммы.План75 КАК План75,
        |    ТаблицаДляДиаграммы.ПланНарастающий КАК ПланНарастающий,
        |    ТаблицаДляДиаграммы.ПрогнозНарастающий КАК ПрогнозНарастающий,
        |    ТаблицаДляДиаграммы.ФактНарастающий КАК ФактНарастающий,
        |    ТаблицаДляДиаграммы.ВыполнениеПлана КАК ВыполнениеПлана,
        |    ТаблицаДляДиаграммы.ВыполнениеПрогноза КАК ВыполнениеПрогноза
        |ИЗ
        |    ТаблицаДляДиаграммы КАК ТаблицаДляДиаграммы
        |ИТОГИ
        |    СУММА(Прогноз),
        |    МАКСИМУМ(ФактПоступлений),
        |    СУММА(ПланНаМесяц),
        |    СУММА(План75),
        |    МАКСИМУМ(ПланНарастающий),
        |    МАКСИМУМ(ПрогнозНарастающий),
        |    МАКСИМУМ(ФактНарастающий),
        |    СУММА(ВыполнениеПлана),
        |    СУММА(ВыполнениеПрогноза)
        |ПО
        |    ДатаПериода";
    
    Запрос.УстановитьПараметр("РасчетнаяТаблица",РасчетнаяТаблица);
    РезультатЗапроса = Запрос.Выполнить();
    
    Диаграмма.Обновление = Ложь;
    Диаграмма.Очистить();
    Диаграмма.АвтоТранспонирование = Ложь;
    Точка = Диаграмма.УстановитьТочку("Прогноз нарастающий");
    ТочкаФ = Диаграмма.УстановитьТочку("Факт Нарастающий");
    //
    ВыборкаДатаПериода = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    //
    Пока ВыборкаДатаПериода.Следующий() Цикл
        Серия = Диаграмма.УстановитьСерию(ВыборкаДатаПериода.ДатаПериода);
        //СерияФ = Диаграмма.УстановитьСерию(ВыборкаДатаПериода.ДатаПериода);
        //СерияФ.Индикатор = Истина;
        //Серия.Текст = ВыборкаДатаПериода.ДатаПериода;
        //Серия.Расшифровка = ВыборкаДатаПериода.ДатаПериода;
        Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаДатаПериода.ФактПоступлений, );
        //Диаграмма.УстановитьЗначение(ТочкаФ, СерияФ, ВыборкаДатаПериода.ФактПоступлений, Серия.Расшифровка);
        Диаграмма.УстановитьЗначение(ТочкаФ, Серия, ВыборкаДатаПериода.ФактНарастающий, );

    КонецЦикла;
    
    Диаграмма.АвтоТранспонирование = Истина;
    Диаграмма.Обновление = Истина;
С одним показателем все рисует хорошо. При нескольких нифига. Может кто сталкивался.
Заранее спасибо
1 asder117
 
22.08.19
13:25
Всем спасибо за интерес к моему вопросу. Решил его сам. Кому-то может будет полезно
      Диаграмма = ЭлементыФормы.ДиаграммаПлан;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РасчетнаяТаблица.ДатаПериода КАК ДатаПериода,
        |    РасчетнаяТаблица.ФактНарастающий КАК ФактНарастающий,
        |    РасчетнаяТаблица.Прогноз КАК Прогноз,
        |    РасчетнаяТаблица.ФактПоступлений КАК ФактПоступлений,
        |    РасчетнаяТаблица.ПланНаМесяц КАК ПланНаМесяц,
        |    РасчетнаяТаблица.План75 КАК План75,
        |    РасчетнаяТаблица.ПланНарастающий КАК ПланНарастающий,
        |    РасчетнаяТаблица.ПрогнозНарастающий КАК ПрогнозНарастающий,
        |    РасчетнаяТаблица.ВыполнениеПлана КАК ВыполнениеПлана,
        |    РасчетнаяТаблица.ВыполнениеПрогноза КАК ВыполнениеПрогноза
        |ПОМЕСТИТЬ ТаблицаДляДиаграммы
        |ИЗ
        |    &РасчетнаяТаблица КАК РасчетнаяТаблица
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ТаблицаДляДиаграммы.ДатаПериода КАК ДатаПериода,
        |    ТаблицаДляДиаграммы.ФактНарастающий КАК ФактНарастающий,
        |    ТаблицаДляДиаграммы.Прогноз КАК Прогноз,
        |    ТаблицаДляДиаграммы.ФактПоступлений КАК ФактПоступлений,
        |    ТаблицаДляДиаграммы.ПланНаМесяц КАК ПланНаМесяц,
        |    ТаблицаДляДиаграммы.План75 КАК План75,
        |    ТаблицаДляДиаграммы.ПланНарастающий КАК ПланНарастающий,
        |    ТаблицаДляДиаграммы.ПрогнозНарастающий КАК ПрогнозНарастающий,
        |    ТаблицаДляДиаграммы.ВыполнениеПлана КАК ВыполнениеПлана,
        |    ТаблицаДляДиаграммы.ВыполнениеПрогноза КАК ВыполнениеПрогноза
        |ИЗ
        |    ТаблицаДляДиаграммы КАК ТаблицаДляДиаграммы
        |ИТОГИ
        |    МАКСИМУМ(ФактНарастающий),
        |    СУММА(Прогноз),
        |    МАКСИМУМ(ФактПоступлений),
        |    СУММА(ПланНаМесяц),
        |    МАКСИМУМ(План75),
        |    МАКСИМУМ(ПланНарастающий),
        |    МАКСИМУМ(ПрогнозНарастающий),
        |    СУММА(ВыполнениеПлана),
        |    СУММА(ВыполнениеПрогноза)
        |ПО
        |    ДатаПериода";
Запрос.УстановитьПараметр("РасчетнаяТаблица",РасчетнаяТаблица);

    РезультатЗапроса = Запрос.Выполнить();
    
    Диаграмма.Обновление = Ложь;
    Диаграмма.Очистить();
    Диаграмма.АвтоТранспонирование = Ложь;
    //Точка = Диаграмма.УстановитьТочку("ФактНарастающий");
    //Точка2 = Диаграмма.УстановитьТочку("Прогноз");
      //Точка = Диаграмма.Точки.Добавить();
      Серия = Диаграмма.Серии.Добавить();
      Серия2 = Диаграмма.Серии.Добавить();
      Серия3 = Диаграмма.Серии.Добавить();
      Серия4 = Диаграмма.Серии.Добавить();
      Серия5 = Диаграмма.Серии.Добавить();


      //Точка2 = Диаграмма.Точки.Добавить();
    ВыборкаДатаПериода = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаДатаПериода.Следующий() Цикл
         // Серия = Диаграмма.Серии.Добавить();
        Точка = Диаграмма.УстановитьТочку(Формат(ВыборкаДатаПериода.ДатаПериода,    "ДФ=dd.MM.yyyy"));
        //Серия.Текст = ВыборкаДатаПериода.ДатаПериода;
        //Серия.Расшифровка = ВыборкаДатаПериода.ДатаПериода;
        Диаграмма.УстановитьЗначение(Точка, Серия, ВыборкаДатаПериода.ФактНарастающий, );
        Диаграмма.УстановитьЗначение(Точка, Серия2, ВыборкаДатаПериода.План75, );
        Диаграмма.УстановитьЗначение(Точка, Серия3, ВыборкаДатаПериода.ПрогнозНарастающий, );
        Диаграмма.УстановитьЗначение(Точка, Серия4, ВыборкаДатаПериода.ФактПоступлений, );
        Диаграмма.УстановитьЗначение(Точка, Серия5, ВыборкаДатаПериода.ПланНарастающий, );
        //Диаграмма.УстановитьЗначение(Точка, Серия6, ВыборкаДатаПериода.ПрогнозНарастающий, );
    КонецЦикла;
    
    Диаграмма.АвтоТранспонирование = Истина;
    Диаграмма.Обновление = Истина;
    Диаграмма.ОтображатьЛегенду=Ложь;
    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
       //Область.Параметры.Регион = РегионСтрока;
   //Область.Параметры.ПериодВзаиморасчетов = Формат(ПериодВзаиморасчетов, "ДФ=ММММ");
   //Область.Параметры.ТекущаяДата = Формат(ТекущаяДата(),    "ДФ=dd.MM.yyyy");
   //Область.Параметры.ПроцентВыполнения = выполнениеПлана;
ЭлементыФормы.Надпись84.Заголовок ="Выполнение плана продаж за " + Формат(ДатаСреза, "ДФ=ММММ")+" месяц по состоянию на "+Формат(ТекущаяДата(),    "ДФ=dd.MM.yyyy") + " процент выполнения " + выполнениеПлана;