Как убрать пустое пространство перед первой точкой в объемной гистограмме 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При визуализации данных с помощью элемента Диаграмма разработчики часто сталкиваются с ситуацией, когда перед первой категорией по оси X формируется заметный пустой интервал. Особенно ярко эта особенность проявляется, когда используется объемный вид отображения (ТипДиаграммы.ГистограммаОбъемная). Выясним причину такого поведения и подробно разберем практические способы решения этой задачи.

Причины появления пустого пространства слева

Проанализируем механику работы платформы «1С:Предприятие» при построении объемных графических элементов. Выделяются три ключевых фактора:

  1. Резервирование места под трехмерную проекцию. В объемной гистограмме платформа отображает столбцы в аксонометрической перспективе. Чтобы боковые скосы и верхние грани крайних элементов не накладывались на шкалу значений (ось Y) и визуально не обрезались краем области построения, платформа автоматически закладывает геометрический отступ с той стороны, в которую направлена проекция.
  2. Наличие пустых точек в коллекции. Если диаграмма формируется программно или на основании запроса, первой точкой может оказаться элемент со значением NULL, нулем или пустой строкой в качестве наименования категории. Место под столбец резервируется, но сам столбец не отрисовывается, создавая визуальную «дыру».
  3. Режим промежутков между сериями и точками. По умолчанию диаграмма использует стандартный интервал разделения столбцов, который также влияет на начальное смещение от нулевой отметки шкалы.

Способ 1. Использование свойства РежимПробелов

Рассмотрим прямое решение проблемы, найденное автором темы. У объекта Диаграмма предусмотрено специальное свойство РежимПробелов, управляющее отображением промежутков между соседними столбцами и отступами области построения. Установим его в значение, исключающее лишние интервалы.

Посмотрим на пример установки этого свойства в программном коде:


// Отключаем формирование промежутков в диаграмме
Диаграмма.РежимПробелов = РежимПробеловДиаграммы.Нет;

Разберем подробнее особенности этого метода:

  1. При установке режима РежимПробеловДиаграммы.Нет платформа убирает как краевые пустые зоны, так и промежутки между столбцами внутри категорий, в результате чего столбцы встают вплотную друг к другу.
  2. Если на диаграмме выводится большое число точек, такое решение отлично подходит для создания сплошного плотного графика распределения значений.

Способ 2. Очистка диаграммы и проверка входных данных

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

Разберем по шагам правильный алгоритм заполнения диаграммы:

  1. Перед заполнением обязательно очищаем объект методом Очистить().
  2. В запросе исключаем пустые значения группировок, чтобы не создавать категорий с пустыми наименованиями.
  3. Используем метод УстановитьЗначение() только для существующих заполненных точек и серий.

Посмотрим на программную реализацию:


// Полная очистка предыдущих серий и точек
Элементы.ДиаграммаПродаж.Очистить();

// Инициализируем серию и точку без пустых значений
Серия = Элементы.ДиаграммаПродаж.Серии.Добавить("Выручка");

Для Каждого СтрДанных Из ТаблицаРезультатов Цикл
    Если Не ПустаяСтрока(СтрДанных.Период) Тогда
        Точка = Элементы.ДиаграммаПродаж.Точки.Добавить(СтрДанных.Период);
        Элементы.ДиаграммаПродаж.УстановитьЗначение(Точка, Серия, СтрДанных.Сумма);
    КонецЕсли;
КонецЦикла;

Способ 3. Корректировка глубины объемной диаграммы

Начиная с версии платформы 8.3.24, у объекта Диаграмма появилось свойство ГлубинаОбъемнойДиаграммы. Оно позволяет напрямую регулировать толщину 3D-проекции.

Если мы уменьшаем значение глубины, проекционные боковые грани становятся тоньше, и область построения автоматически уменьшает отступ от левого края, прижимая первый столбец ближе к началу оси.


// Уменьшаем глубину трехмерного эффекта для сокращения боковых отступов
Диаграмма.ТипДиаграммы = ТипДиаграммы.ГистограммаОбъемная;
Диаграмма.ГлубинаОбъемнойДиаграммы = 5; // Значение по умолчанию обычно больше

Способ 4. Изменение ориентации трехмерной проекции

Рассмотрим еще один прием: смещение ракурса отображения через системное перечисление ОриентацияДиаграммы. Проекция может быть ориентирована в разные стороны, что переносит пустую область на противоположный край диаграммы, освобождая левую часть шкалы.

Посмотрим, как направить проекцию граней в другую сторону:


// Изменяем ракурс проекции для изменения положения скоса граней
Диаграмма.Ориентация = ОриентацияДиаграммы.ЮгВосток;

Способ 5. Переход к плоской гистограмме

Если специфика отчета не требует обязательного 3D-оформления, наиболее чистым с точки зрения верстки решением является использование обычной плоской гистограммы (ТипДиаграммы.Гистограмма).

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


// Переключение на плоский вид без проекционных отступов
Диаграмма.ТипДиаграммы = ТипДиаграммы.Гистограмма;

Важное замечание: В платформе 1С для объекта ОбластьПостроенияДиаграммы не предусмотрены свойства для задания внутренних полей (padding или margin) в пикселях. Поэтому регулировка пустых зон слева и справа всегда выполняется через комплексное применение описанных параметров: режима пробелов, глубины трехмерности, ориентации и контроля чистоты передаваемых наборов данных.

← На главную