Работа с визуализацией данных в 1С часто преподносит сюрпризы, особенно когда стандартные настройки свойств диаграммы не дают ожидаемого результата. В этой статье мы подробно разберем, как заставить платформу отображать подписи значений в различных типах диаграмм, выясним особенности работы с нормированными гистограммами и научимся «чистить» графики от некрасивых нулевых подписей. Проанализируем типичные ситуации, с которыми сталкиваются разработчики, и найдем оптимальные пути решения.
Прежде всего, рассмотрим стандартный механизм настройки диаграммы, размещенной на управляемой форме. Когда мы работаем с реквизитом типа Диаграмма, большинство визуальных параметров доступно непосредственно в палитре свойств конфигуратора. Однако важно понимать, за что отвечают конкретные параметры.
Для вывода числовых значений нам необходимо обратить внимание на следующие свойства:
Рассмотрим ситуацию, когда стандартная установка свойств в конфигураторе не срабатывает. Такое часто случается в сложных типах диаграмм, например, в Гистограмме нормированной горизонтальной. Платформа может «считать», что места для подписи недостаточно, и просто скрывать её. Чтобы принудительно активировать отображение, нам следует проверить настройки состава подписей. В некоторых случаях (особенно при использовании СКД) этот параметр вынесен в дополнительные настройки компоновки данных.
Если интерактивная настройка в конфигураторе не помогла (как в случае, когда изменения в свойствах игнорируются платформой), мы можем прибегнуть к программному назначению параметров. Это гарантирует, что при формировании диаграммы в коде каждое значение будет обработано индивидуально.
Проанализируем ситуацию: данные в диаграмму уже загружены, но подписи не появились. В этом случае нам поможет перебор коллекции серий. Давайте выполним следующий код в модуле формы после заполнения данных диаграммы:
Для Каждого Серия Из Объект.Диаграмма.Серии Цикл
Серия.Подписи = Истина;
КонецЦикла;
Этот простой цикл принудительно включает флаг Подписи для каждой существующей серии. Часто именно этот метод помогает «разбудить» диаграмму, когда настройки самого объекта Диаграмма почему-то не транслируются на вложенные коллекции.
Выясним причину, по которой нормированные диаграммы ведут себя иначе. Нормированная гистограмма всегда приводит сумму значений в точке к 100%. Поэтому вывод простого числа (значения) может выглядеть некорректно или блокироваться платформой. Для таких диаграмм наиболее логичным является использование процентов.
Попробуем программно установить вид подписи именно как процент:
Объект.Диаграмма.ВидПодписей = ВидПодписиДиаграммы.Процент;
// Или комбинированный вариант
Объект.Диаграмма.ВидПодписей = ВидПодписиДиаграммы.ЗначениеИПроцент;
Если же вам критично вывести именно абсолютные значения в нормированной диаграмме, а платформа их скрывает, рекомендуется рассмотреть обходной путь: использовать обычную гистограмму, но предварительно рассчитать относительные веса данных в коде или запросе, чтобы они в сумме давали нужный масштаб.
Часто после включения подписей разработчик сталкивается с другой проблемой: над пустыми точками или внутри сегментов с нулевым весом появляются некрасивые подписи «0». Это загромождает интерфейс и мешает анализу данных.
Разберем по шагам, как избавиться от нулевых значений:
Способ 1. Фильтрация на уровне запроса. Это самый эффективный метод. Если данных нет, их не должно быть в источнике. Проанализируем условие в тексте запроса:
ГДЕ
ПродажиОбороты.СуммаОборота <> 0
И ПродажиОбороты.СуммаОборота ЕСТЬ НЕ NULL
Способ 2. Использование свойства «Пропускать пустые значения». У объекта Диаграмма существует специализированное свойство. Если установить его в значение Истина, платформа будет игнорировать пустые сегменты при отрисовке, что зачастую убирает и подписи к ним.
Способ 3. Программная очистка коллекции точек. Если данные формируются динамически и вы не можете изменить запрос, можно пройтись по готовой диаграмме и удалить пустые элементы. Рассмотрим пример:
Для Каждого ТекущаяТочка Из Диаграмма.Точки Цикл
СуммаПоТочке = 0;
Для Каждого ТекущаяСерия Из Диаграмма.Серии Цикл
СуммаПоТочке = СуммаПоТочке + Диаграмма.ПолучитьЗначение(ТекущаяТочка, ТекущаяСерия).Значение;
КонецЦикла;
Если СуммаПоТочке = 0 Тогда
Диаграмма.Точки.Удалить(ТекущаяТочка);
КонецЕсли;
КонецЦикла;
Когда мы добились вывода значений, важно сделать их читаемыми. Посмотрим на ситуацию, когда текст подписей накладывается друг на друга или выходит за границы. Для управления этим процессом используем объект ПоложениеПодписиДиаграммы.
Наиболее часто используемые варианты:
ПоложениеПодписиДиаграммы.Центр — текст размещается строго посередине сегмента (отлично подходит для гистограмм).ПоложениеПодписиДиаграммы.Внутри — подпись прижимается к внутренней границе.ПоложениеПодписиДиаграммы.Снаружи — подпись выносится за пределы столбца или сектора (идеально для круговых диаграмм).Если значений много и они не помещаются, попробуйте изменить шрифт подписей. Это делается через свойство ШрифтПодписи. Уменьшение размера шрифта даже на 1-2 пункта часто позволяет платформе отобразить те подписи, которые она ранее скрывала из-за нехватки места.
Подводя итог, можно сказать, что работа с диаграммами в 1С требует комплексного подхода: от настройки свойств в конфигураторе до тонкой очистки данных и программного управления коллекциями серий и точек. Используя предложенные методы, вы сможете создать наглядные и профессиональные отчеты.