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

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

Как создать график в 1С: диаграммы в отчётах и на формах

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

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

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

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

Выбор способа: отчёт на СКД или диаграмма на форме

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

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

Маршрут решения

Как выбрать действие

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

Создание графика в отчёте на СКД

Откройте конфигуратор, создайте новый отчёт (или откройте существующий) и перейдите к основной схеме компоновки данных. На вкладке «Наборы данных» создайте запрос, который возвращает как минимум три поля: измерение для оси X (например, период), измерение для серий (например, контрагент или склад) и числовой ресурс (сумма, количество).

Пример запроса для графика продаж по месяцам:

ВЫБРАТЬ

НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ) КАК Месяц,

Продажи.Номенклатура КАК Номенклатура,

СУММА(Продажи.СуммаОборот) КАК Сумма

ИЗ

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

СГРУППИРОВАТЬ ПО

НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ),

Продажи.Номенклатура

На вкладке «Ресурсы» укажите поле «Сумма» как ресурс с агрегатной функцией «Сумма». Затем перейдите на вкладку «Настройки»: в дереве настроек выберите корневой элемент «Отчет», нажмите правой кнопкой и выберите «Новая диаграмма». Внутри диаграммы появятся ветки «Точки» и «Серии».

В ветку «Точки» добавьте группировку по полю «Месяц» — это ось X. В ветку «Серии» добавьте группировку по полю «Номенклатура» — каждая номенклатура станет отдельной линией или столбцом. Значение ресурса «Сумма» платформа подставит автоматически. Сохраните отчёт и сформируйте его в режиме предприятия: на вкладке с результатом появится диаграмма.

Порядок действий в СКД
  1. 1
    Создайте набор данных с запросом: период, измерение, числовой ресурс
  2. 2
    На вкладке «Ресурсы» добавьте числовое поле с функцией Сумма
  3. 3
    В настройках отчёта добавьте элемент «Диаграмма»
  4. 4
    В «Точки» поместите группировку по периоду (ось X)
  5. 5
    В «Серии» поместите группировку по измерению (линии графика)
  6. 6
    Сформируйте отчёт в режиме предприятия и проверьте результат

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

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

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

Учтите ограничение: если серий больше 10–15, график становится нечитаемым. В этом случае либо ограничьте данные отбором (топ-10 по сумме), либо установите «Максимум серий», либо замените график на сводную таблицу с графическим оформлением.

Программное создание графика на управляемой форме

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

Логика заполнения всегда одинакова: сначала очистить диаграмму, затем создать серии и точки, потом в цикле по данным установить значения. Пример:

&НаСервере

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

Диаграмма.Очистить();

Диаграмма.ТипДиаграммы = ТипДиаграммы.График;

Диаграмма.Обновление = Ложь;

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

"ВЫБРАТЬ

| НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ) КАК Месяц,

| СУММА(Продажи.СуммаОборот) КАК Сумма

|ИЗ

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

|СГРУППИРОВАТЬ ПО

| НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ)

|УПОРЯДОЧИТЬ ПО

| Месяц");

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

Серия = Диаграмма.УстановитьСерию("Продажи");

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

Точка = Диаграмма.УстановитьТочку(Формат(Выборка.Месяц, "ДФ=ММММ"));

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

КонецЦикла;

Диаграмма.Обновление = Истина;

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

Ключевые моменты: метод Очистить() обязателен перед повторным заполнением, иначе старые точки и серии останутся и график «поплывёт». Отключение обновления (Обновление = Ложь) на время заполнения ускоряет работу при большом числе точек. Если данных нет, диаграмма останется пустой — имеет смысл проверять результат запроса и выводить пользователю сообщение.

bsl
Диаграмма.Очистить();
Диаграмма.ТипДиаграммы = ТипДиаграммы.Гистограмма;
Серия = Диаграмма.УстановитьСерию("Сумма");
Точка = Диаграмма.УстановитьТочку("Январь");
Диаграмма.УстановитьЗначение(Точка, Серия, 150000);

График в табличном документе и печатной форме

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

В коде доступ к диаграмме получают через коллекцию рисунков табличного документа: ТабДок.Рисунки.ДиаграммаПродаж.Объект. Дальше заполнение идентично работе с реквизитом формы — те же методы УстановитьСерию, УстановитьТочку, УстановитьЗначение. После заполнения табличный документ выводится стандартно.

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

Проверка результата и типичные ошибки

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

Контрольные точки

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

Суммы на графике
Норма

Совпадают с итогами табличной части отчёта

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

График показывает меньше — часть данных отфильтрована или не сгруппирована

Точки по оси X
Норма

Все периоды в правильном порядке

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

Периоды перемешаны — в запросе нет УПОРЯДОЧИТЬ ПО периоду

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

Каждая серия подписана понятным названием

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

Серии без названий или с пустыми подписями

Повторное формирование
Норма

График отображает только актуальные данные

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

К новым данным добавляются старые серии — забыли Очистить()

Типичные ошибки
01
Не добавлен ресурс на вкладке «Ресурсы» СКД — диаграмма строится пустой, потому что нечего суммировать
02
Поле периода не упорядочено в запросе — месяцы на оси X идут вразнобой
03
Отсутствует Диаграмма.Очистить() перед заполнением — при повторном вызове старые серии дублируются
04
Сотни серий без ограничения — график превращается в нечитаемый набор линий; нужен отбор топ-N или «Максимум серий»
05
В круговую диаграмму добавлены серии — диаграмма отображается некорректно, измерение должно быть только в точках
06
Программное заполнение на клиенте с обращением к запросу — запросы выполняются только на сервере, нужна серверная процедура

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

Ограничения и альтернативы

Встроенные диаграммы 1С покрывают типовые задачи визуализации, но имеют ограничения: нельзя строить сложные комбинированные графики с несколькими осями Y в произвольной конфигурации, ограничены возможности интерактивности (детализация по клику требует программной обработки события «ОбработкаРасшифровки» или событий поля диаграммы), оформление настраивается в пределах предопределённых свойств.

Для панелей показателей (дашбордов) в типовых конфигурациях есть готовые механизмы: «Монитор целевых показателей» в конфигурациях на БСП, варианты отчётов с диаграммами в панелях отчётов. Часто быстрее настроить существующий монитор, чем разрабатывать собственную форму. Если требуется сложная визуализация за пределами возможностей платформы, данные выгружают во внешние инструменты (Excel, Power BI) через COM-соединение или файлы обмена.

Сравнение вариантов

Диаграмма в отчёте на СКД

Быстро, без кода, с отборами и периодами. Ограничение — только в рамках отчёта, настройки внешнего вида ограничены

Диаграмма на управляемой форме

Полный контроль над данными и событиями, подходит для рабочих мест. Требует программирования

Диаграмма в табличном документе

Единственный способ вывести график на печать. Статична, без интерактивности

Монитор целевых показателей (БСП)

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

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

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

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

Почему диаграмма в отчёте пустая, хотя таблица с данными формируется?

Чаще всего не добавлен числовой ресурс на вкладке «Ресурсы» либо в точки или серии не помещены группировки. Также проверьте, что поле ресурса действительно числовое — строковые поля диаграмма не суммирует.

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

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

Как сделать, чтобы по клику на столбец открывался расшифровывающий отчёт?

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

Есть ли ограничение на количество точек на графике?

Жёсткого ограничения платформа не накладывает, но при сотнях точек график становится нечитаемым и медленно отрисовывается. Практическая рекомендация — агрегировать данные (недели вместо дней, месяцы вместо недель) и ограничивать период отбором.

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

Да. Диаграмму, выведенную в табличный документ, можно сохранить вместе с документом в форматы, поддерживающие рисунки (например, PDF или HTML), через метод Записать табличного документа. Отдельного метода «сохранить диаграмму в PNG» у платформы нет.

Итог

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

Для отчётов используйте диаграмму в настройках СКД: запрос с периодом и измерением, числовой ресурс, точки для оси X и серии для линий. Для рабочих мест — реквизит формы типа «Диаграмма» с программным заполнением через УстановитьТочку, УстановитьСерию и УстановитьЗначение, не забывая Очистить(). Перед запуском в рабочую базу проверьте график на тестовых данных и ограничьте объём выборки отбором по периоду.