Оформление данных и фоновые учебные зоны получают разные палитры. Собственная палитра проверяется обратно, а градиент не выдаётся за дополнительную числовую шкалу.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В учебной базе создайте новую внешнюю обработку УчебнаяДиаграмма с пустой управляемой формой; назначьте форму основной.
Не создавайте реквизит График и поле ДиаграммаТоваров вручную: код создаёт их в ПриСозданииНаСервере.
В свойствах формы → События назначьте ПриСозданииНаСервере одноимённой процедуре. Сохраните EPF и откройте её в учебном тонком клиенте Windows.
Каждый урок использует отдельный модуль/копию формы. Данные вымышлены: план и факт в штуках за три месяца, не данные учёта.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НовыеРеквизиты = Новый Массив;
НовыеРеквизиты.Добавить(Новый РеквизитФормы("График", Новый ОписаниеТипов("Диаграмма")));
ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
Диаграмма = Новый Диаграмма;
Диаграмма.ТипДиаграммы = ТипДиаграммы.Гистограмма;
План = Диаграмма.УстановитьСерию("plan");
План.Текст = "План, шт.";
Факт = Диаграмма.УстановитьСерию("actual");
Факт.Текст = "Факт, шт.";
Месяцы = Новый Массив;
Месяцы.Добавить(Новый Структура("Ключ,Название,План,Факт", "2026-01", "Январь", 10, 8));
Месяцы.Добавить(Новый Структура("Ключ,Название,План,Факт", "2026-02", "Февраль", 12, 11));
Месяцы.Добавить(Новый Структура("Ключ,Название,План,Факт", "2026-03", "Март", 15, 16));
Для Каждого Месяц Из Месяцы Цикл
Точка = Диаграмма.УстановитьТочку(Месяц.Ключ);
Точка.Текст = Месяц.Название;
Диаграмма.УстановитьЗначение(Точка, План, Месяц.План);
Диаграмма.УстановитьЗначение(Точка, Факт, Месяц.Факт);
КонецЦикла;
Диаграмма.ПалитраЦветов = ПалитраЦветовДиаграммы.Градиентная;
Диаграмма.ЦветНачалаГрадиентнойПалитры = Новый Цвет(70, 110, 190);
Диаграмма.ЦветКонцаГрадиентнойПалитры = Новый Цвет(30, 140, 110);
ОписаниеСерий = Диаграмма.ОписаниеПалитрыЦветов;
ОписаниеСерий.ПалитраЦветов = ПалитраЦветовДиаграммы.Градиентная;
ОписаниеСерий.ЦветНачалаГрадиентнойПалитры = Новый Цвет(70, 110, 190);
ОписаниеСерий.ЦветКонцаГрадиентнойПалитры = Новый Цвет(30, 140, 110);
ОписаниеСерий.МаксимальноеКоличествоЦветовГрадиентнойПалитры = 2;
Диаграмма.ЗаполнитьЦветаСерий();
ОписаниеИнтервалов = Диаграмма.ОписаниеПалитрыЦветовИнформационныхИнтервалов;
ОписаниеИнтервалов.ПалитраЦветов = ПалитраЦветовДиаграммы.Произвольная;
ЦветаЗон = Новый Массив;
ЦветаЗон.Добавить(Новый Цвет(240, 225, 180));
ЦветаЗон.Добавить(Новый Цвет(190, 225, 195));
ОписаниеИнтервалов.УстановитьПалитру(ЦветаЗон);
ПроверкаПалитры = ОписаниеИнтервалов.ПолучитьПалитру();
Сообщить(ПроверкаПалитры.Количество() = 2);
Сообщить(ПроверкаПалитры.Получить(0).Красный = 240);
Сообщить(ПроверкаПалитры.Получить(1).Зеленый = 225);
ПерваяЗона = Диаграмма.ИнформационныеИнтервалыЗначений.Добавить();
ПерваяЗона.Начало = 0;
ПерваяЗона.Конец = 10;
ПерваяЗона.ТекстПодписи = "Учебная зона 0–10";
ПерваяЗона.ПроцентПолупрозрачности = 75;
ВтораяЗона = Диаграмма.ИнформационныеИнтервалыЗначений.Добавить();
ВтораяЗона.Начало = 10;
ВтораяЗона.Конец = 20;
ВтораяЗона.ТекстПодписи = "Учебная зона 10–20";
ВтораяЗона.ПроцентПолупрозрачности = 75;
Диаграмма.ОбластьЗаголовка.Текст = "Серии — синий/зелёный; зоны — отдельная светлая палитра";
ЭтаФорма.График = Диаграмма;
Поле = Элементы.Добавить("ДиаграммаТоваров", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеДиаграммы;
Поле.ПутьКДанным = "График";
Поле.РастягиватьПоГоризонтали = Истина;
Поле.РастягиватьПоВертикали = Истина;
КонецПроцедуры
Разбор по шагам
ПалитраЦветов и опорные цвета задают оформление серий. Через ОписаниеПалитрыЦветов задаём ограничение градиентной палитры двумя цветами.
ЗаполнитьЦветаСерий присваивает абсолютные цвета существующим сериям. Само название Градиентная не означает измерение интенсивности продаж цветом.
Палитра интервалов хранится в отдельном ОписаниеПалитрыЦветовИнформационныхИнтервалов. Передаём массив именно значений Цвет.
ПолучитьПалитру проверяет сохранённые два цвета и компоненты. Элементы массива других типов API игнорирует, поэтому их здесь нет.
Собственные интервалы 0–10 и 10–20 используют автоматический цвет из своей палитры; явный Цвет интервалам не присваиваем.
Подписи зон и легенда серий нужны даже при различимых цветах. Проверьте читаемость на своём клиенте.
Как проверить результат
Три сравнения Истина: собственная палитра зон содержит два нужных цвета.
На форме серии и поясняющие зоны имеют разный смысл оформления; числовой источник остаётся 10/12/15 и 8/11/16.
Ожидаемый результат
Палитры разных объектов не смешаны, состав собственной палитры проверен обратным чтением.
На что обратить внимание
Присвоенный серии или интервалу абсолютный цвет может перекрыть автоматический выбор из палитры.
МаксимальноеКоличествоЦветов=0 использует число серий; ограничение 2 здесь подходит двум показателям, но требует пересмотра при добавлении третьего.
Не используйте одно лишь цветовое кодирование: добавьте числа, подписи и легенду.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.