HelpF.pro

Как заполнить диаграмму данными?

Код 1C v 8.2 УП
 // Перезаполнит объект Диагамма значениями из Источник
// Параметры:
// Диаграмма - Диаграмма
// Источник - Массив, Таблица значений, Табличная часть - Коллекция,
// для которой доступен обход элементов коллекции посредством оператора Для каждого … Из … Цикл.
// ПараметрыЗаполнения - Структура - обязательные ключи "Точки", "Серии", "Значения"
// имена коллонок Источника
Процедура ЗаполнитьДиаграмму(Диаграмма, Источник, ПараметрыЗаполнения)

Перем ИндексТочек, ИндексСерий;
Перем Серия, Точка;
Перем ЗаписьИсточника;
Перем ПолеТочек, ПолеСерий, ПолеЗначений;

Диаграмма.Очистить();
Диаграмма.Обновление = Ложь;

Если Не (ТипЗнч(ПараметрыЗаполнения) = Тип("Структура")
Или ТипЗнч(ПараметрыЗаполнения) = Тип("ФиксированнаяСтруктура")
Или ТипЗнч(ПараметрыЗаполнения) = Тип("ФиксированноеСоответствие")
Или ТипЗнч(ПараметрыЗаполнения) = Тип("Соответствие")) Тогда

ПараметрыЗаполнения = Новый Структура;
КонецЕсли;

ПараметрыЗаполнения.Свойство("Точки", ПолеТочек);
ПараметрыЗаполнения.Свойство("Серии", ПолеСерий);
ПараметрыЗаполнения.Свойство("Значения", ПолеЗначений);

Для Каждого ЗаписьИсточника Из Источник Цикл
Точка = ПолучитьИндексОбъектаДиаграммы(Диаграмма.Точки, ЗаписьИсточника[ПолеТочек], ИндексТочек);
Серия = ПолучитьИндексОбъектаДиаграммы(Диаграмма.Серии, ЗаписьИсточника[ПолеСерий], ИндексСерий);
Диаграмма.УстановитьЗначение(Точка,Серия,ЗаписьИсточника[ПолеЗначений]);
КонецЦикла;

Диаграмма.Обновление = Истина;

КонецПроцедуры

// Вернёт число - индекс элемента Коллекции (Точки, Серии)
Функция ПолучитьИндексОбъектаДиаграммы(Коллекция, Значение, КешЗначений)

Перем индекс;

Если КешЗначений = Неопределено Тогда
КешЗначений = Новый Массив;
КонецЕсли;

индекс = КешЗначений.Найти(Значение);

Если индекс = Неопределено Тогда
КешЗначений.Добавить(Значение);
Коллекция.Добавить("" + Значение);
Индекс = КешЗначений.Количество()-1;
КонецЕсли;

Возврат индекс;
КонецФункции

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/1540.html