Диаграмма = ЭлементыФормы.Диаграмма; // Очистить диаграмму, возможно ранее в нее уже выводились данные. Диаграмма.КоличествоСерий = 0; Диаграмма.КоличествоТочек = 0; // Количество серий будет ограничиваться (не все значения будут показываться). Диаграмма.МаксимумСерий = МаксимумСерий.Ограничено; Диаграмма.МаксимумСерийКоличество = 7; Диаграмма.ВидПодписей = ВидПодписейКДиаграмме.Процент; Диаграмма.ОбластьЗаголовка.Текст = "Обороты номенклатуры"; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПродажиКомпанииОбороты.Номенклатура, | СУММА(ПродажиКомпанииОбороты.КоличествоОборот) КАК КоличествоОборот |ИЗ | РегистрНакопления.Продажи.Обороты(, , , ) КАК ПродажиКомпанииОбороты |СГРУППИРОВАТЬ ПО | ПродажиКомпанииОбороты.Номенклатура"; Результат = Запрос.Выполнить(); // Запретить обновление диаграммы на время вывода данных. Диаграмма.Обновление = Ложь; // Установить единственную точку. Диаграмма.КоличествоТочек = 1; Диаграмма.Точки[0].Текст = "Количество"; Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл // Количество серий, если бы не ограничивали зависело бы от результата запроса. КоличествоСерий = Диаграмма.Серии.Количество(); Диаграмма.КоличествоСерий = КоличествоСерий + 1; Диаграмма.Серии[КоличествоСерий].Текст = Выборка.Номенклатура; // Установить значение "на пересечении" точки и серии. // Первый параметр - 0 , так как в диаграмме только одна точка. Диаграмма.УстановитьЗначение(0, КоличествоСерий, Выборка.КоличествоОборот); КонецЦикла; // Обновить диаграмму. Диаграмма.Обновление = Истина;
//Пример 1: Процедура ПостроитьДиаграмму(Диагр) КолСерий=0; //количество серий определяется по количеству элементов в справочнике Материалы Спр=СоздатьОбъект("Справочник.Материалы"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл // группы элементов пропускаются Если Спр.ЭтоГруппа()=0 Тогда КолСерий=КолСерий+1; КонецЕсли; КонецЦикла; // установка количества серий и точек Диагр.КоличествоСерий(КолСерий); Диагр.КоличествоТочек(1); //в качестве значений на диаграмме примем количественное сальдо конечное по счету 10 и текущему элементу справочника БИ=СоздатьОбъект("БухгалтерскиеИтоги"); БИ.Рассчитать(ДатаОтчета, ДатаОтчета); номер=1; Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент()=1 Цикл Если Спр.ЭтоГруппа()=0 Тогда Диагр.УстановитьИмяСерии(Номер, Спр.Наименование); Диагр.УстановитьЗначение(1,номер,БИ.СКД("10","К",,Спр.ТекущийЭлемент())); номер=номер+1; КонецЕсли; КонецЦикла; КонецПроцедуры
// Пример 2: Процедура СформироватьДиаграмму(Диаграмма1) // Блокируем обновление, пока обрабатываются данные Диаграмма1.Обновление(0); Диаграмма1.Заголовок = "Поступления от покупателей"; Диаграмма1.УстановитьИмяСерии(1, "Рубли"); Диаграмма1.АвтоУстановкаИменТочек(1); // Заполним диаграмму значениями БухИт = СоздатьОбъект("БухгалтерскиеИтоги"); Бухит.ВыполнитьЗапрос(НачКвартала(РабочаяДата()), КонКвартала(РабочаяДата()),"60.1",,,1,"Неделя","С"); БухИт.ВыбратьПериоды(); А = 1; // дебетовые обороты по счету 60.1 покажут поступления // денег от покупателей Пока БухИт.ПолучитьПериод() = 1 Цикл Диаграмма1.УстановитьЗначение(А, 1, БухИт.ДО()); А = А +1; КонецЦикла; // после наполнения данными перерисовываем Диаграмма1.Обновление(1); КонецПроцедуры