К статье
Практический материал

Отчеты и Аналитика · 10 мин

Как сделать гистограмму в 1С

Как построить гистограмму в 1С: диаграмма на форме, вывод в табличный документ и настройка через СКД. Примеры кода, типичные ошибки и проверка результата.

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

Независимо от способа логика одна: данные организуются в серии (что сравниваем), точки (по каким категориям) и значения (числовые показатели). Например, для гистограммы продаж по месяцам серией будет «Выручка», точками — месяцы, значениями — суммы продаж. Если этой структуры нет в источнике данных, диаграмма либо не построится, либо покажет пустую область.

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

Какие способы построения гистограммы есть в 1С

Первый способ — диаграмма на управляемой форме. В конфигураторе на форму добавляется реквизит типа «Диаграмма» и поле вида «Поле диаграммы». Данные заполняются программно при создании формы или по команде. Этот вариант даёт максимальный контроль: можно менять цвета, подписи, режим сводки и реагировать на действия пользователя.

Второй способ — вывод в табличный документ. В макете размещается область с рисунком типа «Диаграмма», после чего она заполняется кодом и выводится вместе с отчётом. Такой подход подходит для печатных форм и отчётов без СКД, где руководство привыкло получать «бумажный» вид.

Третий способ — диаграмма в отчёте на СКД. В схеме компоновки на закладке «Ресурсы» поле помечается как выводимое в диаграмму, а в настройках отчёта добавляется элемент «Диаграмма». Это самый быстрый путь для типовых отчётов: пользователь сам может менять группировки, а гистограмма перестроится автоматически.

Сравнение способов

Диаграмма на форме

Подходит для интерактивных панелей и рабочих мест; требует написания кода заполнения

Табличный документ

Подходит для печати и простых отчётов; интерактивность ограничена

Диаграмма в СКД

Подходит для пользовательских отчётов; настройка без кода, но меньше гибкости в оформлении

Как добавить гистограмму на управляемую форму

Откройте форму в конфигураторе и добавьте реквизит формы с именем, например, «ГистограммаПродаж» и типом «Диаграмма». Затем перетащите этот реквизит в дерево элементов формы — платформа автоматически создаст поле нужного вида. Убедитесь, что у элемента установлено свойство «Вид — Поле диаграммы», иначе данные не отобразятся.

Заполнение выполняется в серверной процедуре. Сначала очищается объект диаграммы, затем устанавливается тип диаграммы, создаются серии и точки, после чего значения проставляются по индексам или по ссылкам на объекты серий и точек. Типичный код выглядит так:

&НаСервере

Процедура ЗаполнитьГистограмму()

ГистограммаПродаж.Очистить();

ГистограммаПродаж.ТипДиаграммы = ТипДиаграммы.Гистограмма;

ГистограммаПродаж.АвтоТочек = Ложь;

ГистограммаПродаж.АвтоСерий = Ложь;

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Месяц,

| СУММА(Выручка) КАК Выручка

|ИЗ РегистрНакопления.Продажи.Обороты

|СГРУППИРОВАТЬ ПО Месяц

|УПОРЯДОЧИТЬ ПО Месяц";

Выборка = Запрос.Выполнить().Выбрать();

Серия = ГистограммаПродаж.УстановитьСерию("Выручка");

Пока Выборка.Следующий() Цикл

Точка = ГистограммаПродаж.УстановитьТочку(Выборка.Месяц);

ГистограммаПродаж.УстановитьЗначение(Точка, Серия, Выборка.Выручка);

КонецЦикла;

КонецПроцедуры

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

Порядок действий для формы
  1. 1
    Добавьте реквизит формы типа «Диаграмма»
  2. 2
    Перетащите реквизит в элементы формы
  3. 3
    В серверной процедуре очистите диаграмму и задайте ТипДиаграммы.Гистограмма
  4. 4
    Создайте серии и точки, заполните значения из запроса
  5. 5
    Вызовите процедуру при создании формы или по команде и проверьте отображение

Как вывести гистограмму в табличный документ

Для печатных форм гистограмму размещают в макете. Создайте макет типа «Табличный документ», добавьте на него рисунок и в свойствах рисунка установите тип «Диаграмма». Задайте рисунку имя, например «ДиаграммаПродаж», — по этому имени к нему обращаются из кода.

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

Важный нюанс: размер рисунка в макете фиксирован, поэтому при большом количестве точек подписи осей могут налезать друг на друга. Ограничивайте число точек (например, топ-10 контрагентов) или увеличивайте ширину рисунка в макете. Также проверяйте печатную форму в режиме предпросмотра — масштаб на экране и на бумаге может отличаться.

Как построить гистограмму в отчёте на СКД

В схеме компоновки данных диаграмма настраивается без программирования. На закладке «Ресурсы» добавьте числовое поле (например, сумму продаж) — именно ресурсы могут выводиться в диаграмму. Затем на закладке «Настройки» в структуре отчёта добавьте элемент «Диаграмма» через кнопку «Конструктор настроек» или контекстное меню.

У диаграммы в СКД есть две ветки настройки: «Точки» и «Серии». В точки обычно помещают группировку по периоду или контрагенту, в серии — дополнительное измерение, если нужно сравнение нескольких показателей. В свойствах диаграммы выберите тип «Гистограмма» или «Гистограмма объемная».

Преимущество этого подхода в том, что пользователь в режиме «Предприятие» может через кнопку «Настройки» сам менять тип диаграммы, состав точек и отборы, не обращаясь к разработчику. Поэтому для регулярных управленческих отчётов СКД — предпочтительный вариант.

Как настроить внешний вид гистограммы

За оформление отвечают свойства объекта диаграммы. Полезные настройки: «ОтображатьЛегенду» — показывает расшифровку серий; «РежимСглаживания» — сглаживание линий и текста; «МаксимумСерий» и «МаксимумТочек» — ограничение количества отображаемых элементов с автоматической сводкой остатка в «Прочие».

Цвета серий по умолчанию назначает платформа из стандартной палитры. Если нужны корпоративные цвета, их можно задать программно через свойство «Цвет» объекта серии. Подписи точек форматируются через свойство «Текст» точки — например, вместо даты можно вывести «Янв», «Фев» и так далее.

Для гистограмм с накоплением используйте тип «ГистограммаНакопление» — столбцы серий складываются друг на друга, что удобно для анализа структуры выручки по категориям. Для сравнения долей в процентах подойдёт «ГистограммаНормированная», где каждый столбец приводится к 100%.

Если точек больше 15–20, гистограмма становится нечитаемой. Практичное решение — установить МаксимумТочек и включить сводку: мелкие значения соберутся в точку «Прочие», а диаграмма останется компактной.
ПЗ
Практическое замечание

Типичные ошибки и как их исправить

Самая частая проблема — пустая диаграмма при корректном запросе. Причины: забыли вызвать «Очистить()» перед заполнением и старые настройки конфликтуют с новыми; тип поля в реквизите формы не «Диаграмма»; процедура заполнения не вызывается ни в одном обработчике. Проверяйте по порядку: сначала вызов процедуры, затем тип реквизита, затем содержимое выборки.

Вторая распространённая ошибка — все значения попадают в одну точку или одну серию. Это происходит, когда в метод «УстановитьТочку» передаётся одинаковое значение (например, незаполненная дата из-за отсутствия группировки в запросе) или когда включён авторежим точек и серий одновременно с ручным созданием.

Третья группа проблем — производительность. Заполнение диаграммы циклом по большой выборке без группировки на уровне запроса заметно тормозит форму. Всегда агрегируйте данные в запросе (СУММА, СГРУППИРОВАТЬ ПО), а в цикле только переносите готовые итоги в диаграмму.

Типичные ошибки
01
Нет вызова Очистить() — старые серии и точки смешиваются с новыми, диаграмма показывает мусор
02
Включены АвтоТочек и АвтоСерий при ручном создании — появляются лишние пустые элементы
03
Нет группировки в запросе — все значения слипаются в одну точку
04
Слишком много точек без ограничения — подписи осей нечитаемы, форма тормозит
Контрольные точки

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

Отображение столбцов
Норма

Столбцы видны, высота соответствует значениям

Тревожный признак

Область диаграммы пустая при непустом запросе

Подписи осей
Норма

Каждая точка подписана, текст не налезает на соседние

Тревожный признак

Подписи дублируются или перекрывают друг друга

Легенда
Норма

Серии подписаны понятными именами

Тревожный признак

Легенда пустая или содержит служебные имена полей

Частые вопросы

Можно ли построить гистограмму без программирования?

Да, если отчёт построен на СКД. Достаточно добавить числовое поле в ресурсы и в настройках отчёта добавить элемент «Диаграмма». В типовых конфигурациях многие отчёты уже поддерживают вывод диаграммы через кнопку настроек — пользователь может включить её самостоятельно.

Почему диаграмма на форме пустая, хотя запрос возвращает данные?

Чаще всего процедура заполнения не вызывается (нет вызова в обработчике ПриСозданииНаСервере или по команде) либо реквизит формы имеет тип не «Диаграмма». Также проверьте, что после заполнения значения действительно числовые — строки и NULL диаграмма не отображает.

Как подписать значения прямо на столбцах?

Используйте свойство серии «Маркер» и настройки отображения значений: у объекта диаграммы есть свойства, управляющие подписями данных (например, через «Окантовка» и настройки серий в палитре свойств). В СКД подписи значений включаются в параметрах вывода диаграммы.

Чем гистограмма отличается от графика в 1С?

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

Как ограничить количество столбцов, собрав остаток в «Прочие»?

Установите свойство «МаксимумТочек» у объекта диаграммы — платформа автоматически покажет заданное число крупнейших точек, а остальные объединит в сводную точку «Прочие». Аналогично работает свойство «МаксимумСерий» для серий.

Можно ли сохранить гистограмму как картинку?

Да. Диаграмму, выведенную в табличный документ, можно сохранить в файл (например, PDF или MXL) стандартным методом «Записать» табличного документа. Для получения именно графического файла табличный документ сохраняют в PDF, либо диаграмму выводят в макет и экспортируют штатными средствами платформы.

Итог

Что важно запомнить

Гистограмма в 1С строится через объект «Диаграмма»: серии, точки и значения заполняются из сгруппированного запроса. Для форм используйте реквизит типа «Диаграмма», для печати — рисунок в макете, для отчётов — диаграмму в СКД. Перед заполнением очищайте объект, агрегируйте данные в запросе и ограничивайте число точек для читаемости.