Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 15:51

Круговая диаграмма и цветовая гамма

Автор boobzx, 03 окт 2016, 10:59

0 Пользователей и 1 гость просматривают эту тему.

boobzx

Добрый день! Хотел бы узнать, как 1с формирует цветовую гамму из палитры 32.

Даже не так. Что хочу получить. Есть круговая диаграмма, состоит из номенклатуры и количества. При выводе 1С знает какой кусок этой диаграммы цветом. Например: Пряник - красный, печень - желтый, конфета альфа - зеленый. и т.д.

Далее Я ниже диаграммы, вывожу табличный вариант отчета
Пряник        - 100шт
Печенье       - 100 шт
Конфета альфа - 100 шт

Мне нужно, что бы каждая строка в табличной части выводилось цветом кусочка круговой диаграммы.
Как это сделать?

boobzx

Решил свою проблему. Оставлю здесь коммент как памятку.

Свой отчет полностью вывожу программно.

Сделал УФ. НА нее вынес два реквизита. Первый реквизит с типом диаграмма, второй с типом табличного поля. И Кнопку - сформировать.

В кнопке сформировать пишу код, вывожу серии и точки, и в момент их вывода запоминаю в массив цвет, который присвоила им программа.

В табличный отчет - когда вывел область. То получаю программно ячейку. И по счетчику (индексу) вывода детальной записи получаю данные из массива

#Область Диаграмма
Результат.Очистить();

Результат.КоличествоСерий = 0;
//Результат.КоличествоТочек = 0;

Результат.ВидПодписей = ВидПодписейКДиаграмме.Значение;
//Результат.ОбластьЗаголовка.Текст = "За период " + ПероидОтчета.ДатаНачала + " - " + ПероидОтчета.ДатаОкончания;

Запрос = Новый Запрос;
Запрос.Текст = "Некий запрос в БД";

Запрос.УстановитьПараметр("ДатаНачала", ПероидОтчета.ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ПероидОтчета.ДатаОкончания);

РезультатЗапроса = Запрос.ВыполнитьПакет();

//  Установить единственную точку.
Результат.КоличествоТочек = 1;

//запрет обновление диаграммы на время выполнения отчета
Результат.Обновление = Ложь;
Результат.АвтоТранспонирование = Ложь;

Выборка = РезультатЗапроса[0].Выбрать();

МассивЦветов = Новый Массив;

Пока Выборка.Следующий() Цикл
Серия = Результат.УстановитьСерию(Выборка.НоменклатурнаяГруппа);
Серия.Расшифровка = Выборка.НоменклатурнаяГруппа;

Результат.УстановитьЗначение(0, Серия, Выборка.СуммаСписанияОборот);

МассивЦветов.Добавить(Серия.Цвет);
КонецЦикла;

// Обновить диаграмму.
    Результат.Обновление = Истина;
Результат.АвтоТранспонирование = Истина;
#КонецОбласти

#Область ТабличныйОтчет
РезультатОтчетаВТЧ.Очистить();

Макет = Обработки.СводкаПоСтатьям.ПолучитьМакет("Макет");

ОбластьШапкаОтчета = Макет.ПолучитьОбласть("ШапкаОтчета");
РезультатОтчетаВТЧ.Вывести(ОбластьШапкаОтчета);

ВыборкаНоменклатурнаяГруппа = РезультатЗапроса[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Итого = 0;
Сч = 0;
Пока ВыборкаНоменклатурнаяГруппа.Следующий() Цикл

РезультатОтчетаВТЧ.НачатьАвтогруппировкуСтрок();

ОбластьТелоОтчетаНГ = Макет.ПолучитьОбласть("ТелоОтчетаНГ");
ОбластьТелоОтчетаНГ.Параметры.НоменклатурнаяГруппа = ВыборкаНоменклатурнаяГруппа.НоменклатурнаяГруппа;
ОбластьТелоОтчетаНГ.Параметры.СуммаНГ    = ВыборкаНоменклатурнаяГруппа.СуммаСписанияОборот;

РезультатОтчетаВТЧ.Вывести(ОбластьТелоОтчетаНГ, 1, "Группа1", Ложь);

РезультатОтчетаВТЧ.Область("R" + Строка(РезультатОтчетаВТЧ.ВысотаТаблицы) + "C2").ЦветФона = МассивЦветов.Получить(Сч);

Выборка = ВыборкаНоменклатурнаяГруппа.Выбрать();
Пока Выборка.Следующий() Цикл
ОбластьТелоОтчетаСтатьяЗатрат = Макет.ПолучитьОбласть("ТелоОтчетаСтатьяЗатрат");
ОбластьТелоОтчетаСтатьяЗатрат.Параметры.СтатьяЗатрат      = Выборка.СтатьяЗатрат;

РезультатОтчетаВТЧ.Вывести(ОбластьТелоОтчетаСтатьяЗатрат, 2, "Группа2", Ложь);

РезультатОтчетаВТЧ.Область("R" + Строка(РезультатОтчетаВТЧ.ВысотаТаблицы) + "C2").ЦветФона = МассивЦветов.Получить(Сч);

КонецЦикла;
Итого = Итого + ВыборкаНоменклатурнаяГруппа.СуммаСписанияОборот;

РезультатОтчетаВТЧ.ЗакончитьАвтогруппировкуСтрок();
Сч = Сч + 1;
КонецЦикла;

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.СуммаИтого = Итого;
РезультатОтчетаВТЧ.Вывести(ОбластьПодвал);
#КонецОбласти

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск