Диаграмма

Типы · Chart

Используется для доступа к свойствам, методам и событиям диаграммы в целом.

Доступность

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Сериализуется. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.2/data/chart}. Имя типа XDTO: Chart.

Полное описание, параметры и ограничения

Используется для доступа к свойствам, методам и событиям диаграммы в целом.

Практические примеры

Построить диаграмму план/факт с ключами и расшифровкой

Три точки-месяца и две серии-показателя образуют шесть числовых значений. Подписи не заменяют устойчивые ключи.

Где и как запускать

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

Подготовка

  1. В учебной базе создайте новую внешнюю обработку УчебнаяДиаграмма с пустой управляемой формой; назначьте форму основной.

  2. Не создавайте реквизит График и поле ДиаграммаТоваров вручную: код создаёт их в ПриСозданииНаСервере.

  3. В свойствах формы → События назначьте ПриСозданииНаСервере одноимённой процедуре. Сохраните EPF и откройте её в учебном тонком клиенте Windows.

  4. Каждый урок использует отдельный модуль/копию формы. Данные вымышлены: план и факт в штуках за три месяца, не данные учёта.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    НовыеРеквизиты = Новый Массив;
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("График", Новый ОписаниеТипов("Диаграмма")));
    ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
    Диаграмма = Новый Диаграмма;
    Диаграмма.ТипДиаграммы = ТипДиаграммы.Гистограмма;
    План = Диаграмма.УстановитьСерию("plan");
    План.Текст = "План, шт.";
    Факт = Диаграмма.УстановитьСерию("actual");
    Факт.Текст = "Факт, шт.";
    Месяцы = Новый Массив;
    Месяцы.Добавить(Новый Структура("Ключ,Название,План,Факт", "2026-01", "Январь", 10, 8));
    Месяцы.Добавить(Новый Структура("Ключ,Название,План,Факт", "2026-02", "Февраль", 12, 11));
    Месяцы.Добавить(Новый Структура("Ключ,Название,План,Факт", "2026-03", "Март", 15, 16));
    Для Каждого Месяц Из Месяцы Цикл
        Точка = Диаграмма.УстановитьТочку(Месяц.Ключ);
        Точка.Текст = Месяц.Название;
        Диаграмма.УстановитьЗначение(Точка, План, Месяц.План);
        Диаграмма.УстановитьЗначение(Точка, Факт, Месяц.Факт);
    КонецЦикла;

    План.Цвет = Новый Цвет(70, 110, 190);
    Факт.Цвет = Новый Цвет(30, 140, 110);
    План.Расшифровка = Новый Структура("Показатель", "plan");
    Факт.Расшифровка = Новый Структура("Показатель", "actual");
    Для Каждого Месяц Из Месяцы Цикл
        Точка = Диаграмма.УстановитьТочку(Месяц.Ключ);
        Точка.Расшифровка = Новый Структура("Месяц", Месяц.Ключ);
        Точка.Цвет = Новый Цвет(120, 120, 120);
        Точка.ПриоритетЦвета = Ложь;
        Диаграмма.УстановитьЗначение(Точка, Факт, Месяц.Факт,
            Новый Структура("Месяц,Показатель", Месяц.Ключ, "actual"),
            СтрШаблон("%1: фактически %2 шт.", Месяц.Название, Месяц.Факт));
    КонецЦикла;
    Январь = Диаграмма.УстановитьТочку("2026-01");
    ЗначениеЯнваря = Диаграмма.ПолучитьЗначение(Январь, Факт);
    Сообщить(Диаграмма.КоличествоТочек = 3);
    Сообщить(Диаграмма.КоличествоСерий = 2);
    Сообщить(Январь.Значение = "2026-01");
    Сообщить(Факт.Значение = "actual");
    Сообщить(ЗначениеЯнваря.Значение = 8);
    Сообщить(ЗначениеЯнваря.Расшифровка.Месяц = "2026-01");
    Сообщить(ЗначениеЯнваря.Подсказка = "Январь: фактически 8 шт.");
    Сообщить(ЗначениеЯнваря.Серия.Значение = "actual");
    Сообщить(ЗначениеЯнваря.Точка.Значение = "2026-01");
    Диаграмма.ОбластьЗаголовка.Текст = "Учебный план и факт, шт.";
    ЭтаФорма.График = Диаграмма;
    Поле = Элементы.Добавить("ДиаграммаТоваров", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеДиаграммы;
    Поле.ПутьКДанным = "График";
    Поле.РастягиватьПоГоризонтали = Истина;
    Поле.РастягиватьПоВертикали = Истина;
КонецПроцедуры

Разбор по шагам

  1. УстановитьСерию и УстановитьТочку находят существующий объект по ключу или создают новый. Повторный ключ не должен добавлять дубликат.

  2. Текст — человекочитаемая подпись, Значение — ключ plan/actual или 2026-01. Эти роли не смешиваем.

  3. В матрице шесть значений. ПолучитьЗначение возвращает объект со свойствами Значение, Серия, Точка, Подсказка и Расшифровка.

  4. У серий свои цвета; ПриоритетЦвета точки Ложь сохраняет различие показателей. Серая настройка точки не должна маскировать план и факт.

  5. Расшифровка — наши данные для будущего обработчика нажатия, не автоматически открываемый документ.

Как проверить результат

  1. На форме три месяца с двумя столбцами: план 10/12/15, факт 8/11/16.

  2. Все проверки объекта январского факта дают Истина: ключи, число 8, подсказка и расшифровка.

  3. Наведение на январский факт показывает Январь: фактически 8 шт.; документ по нажатию не открывается, обработчик здесь не задан.

Ожидаемый результат

Создана полноценная диаграмма с независимыми ключами, подписями, цветами и собственными данными расшифровки.

На что обратить внимание

  1. Значение диаграммы не является значением точки: 8 — факт, а 2026-01 — ключ месяца.

  2. Ссылки на серию/точку перестают быть действительными после удаления соответствующего элемента.

  3. Здесь нет денежной единицы и нет данных рабочей базы: подписываем именно штуки.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Транспонировать диаграмму и проверить новые координаты

Меняем местами точки и серии только собственного графика: матрица 3×2 становится 2×3, шесть чисел сохраняются.

Где и как запускать

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

Подготовка

  1. В учебной базе создайте новую внешнюю обработку УчебнаяДиаграмма с пустой управляемой формой; назначьте форму основной.

  2. Не создавайте реквизит График и поле ДиаграммаТоваров вручную: код создаёт их в ПриСозданииНаСервере.

  3. В свойствах формы → События назначьте ПриСозданииНаСервере одноимённой процедуре. Сохраните EPF и откройте её в учебном тонком клиенте Windows.

  4. Каждый урок использует отдельный модуль/копию формы. Данные вымышлены: план и факт в штуках за три месяца, не данные учёта.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    НовыеРеквизиты = Новый Массив;
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("График", Новый ОписаниеТипов("Диаграмма")));
    ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
    Диаграмма = Новый Диаграмма;
    Диаграмма.ТипДиаграммы = ТипДиаграммы.Гистограмма;
    План = Диаграмма.УстановитьСерию("plan");
    План.Текст = "План, шт.";
    Факт = Диаграмма.УстановитьСерию("actual");
    Факт.Текст = "Факт, шт.";
    Месяцы = Новый Массив;
    Месяцы.Добавить(Новый Структура("Ключ,Название,План,Факт", "2026-01", "Январь", 10, 8));
    Месяцы.Добавить(Новый Структура("Ключ,Название,План,Факт", "2026-02", "Февраль", 12, 11));
    Месяцы.Добавить(Новый Структура("Ключ,Название,План,Факт", "2026-03", "Март", 15, 16));
    Для Каждого Месяц Из Месяцы Цикл
        Точка = Диаграмма.УстановитьТочку(Месяц.Ключ);
        Точка.Текст = Месяц.Название;
        Диаграмма.УстановитьЗначение(Точка, План, Месяц.План);
        Диаграмма.УстановитьЗначение(Точка, Факт, Месяц.Факт);
    КонецЦикла;

    Сообщить(Диаграмма.ПолучитьЗначение(0, 0).Значение = 10);
    Сообщить(Диаграмма.ПолучитьЗначение(2, 1).Значение = 16);
    Диаграмма.Транспонировать();
    Сообщить(Диаграмма.КоличествоТочек = 2);
    Сообщить(Диаграмма.КоличествоСерий = 3);
    Сообщить(Диаграмма.ПолучитьЗначение(0, 0).Значение = 10);
    Сообщить(Диаграмма.ПолучитьЗначение(1, 2).Значение = 16);
    Диаграмма.ОбластьЗаголовка.Текст = "Показатели — точки, месяцы — серии";
    ЭтаФорма.График = Диаграмма;
    Поле = Элементы.Добавить("ДиаграммаТоваров", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеДиаграммы;
    Поле.ПутьКДанным = "График";
    Поле.РастягиватьПоГоризонтали = Истина;
    Поле.РастягиватьПоВертикали = Истина;
КонецПроцедуры

Разбор по шагам

  1. До транспонирования первый параметр ПолучитьЗначение — индекс месяца, второй — индекс показателя.

  2. Проверяем два крайних значения 10 и 16 перед изменением матрицы.

  3. Транспонировать меняет роли осей данных: теперь точки — план/факт, серии — три месяца.

  4. Проверяем новые размеры и координаты. Старые переменные объектов серий/точек после преобразования больше не используем.

Как проверить результат

  1. Размеры после операции: две точки и три серии.

  2. 10 находится в координатах (0,0), а 16 — (1,2). Все проверки — Истина.

  3. График показывает два показателя с тремя столбцами-месяцами; это тот же набор шести чисел.

Ожидаемый результат

Транспонированная матрица проверена по размерам и значениям, а не только по внешнему виду.

На что обратить внимание

  1. Транспонировать — не пересчёт плана или факта и не изменение бизнес-данных.

  2. В автоматической связи с источником данных структура управляется источником; урок использует ручное заполнение.

  3. После изменения структуры получайте нужные точки/серии заново.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.