Отчеты и Аналитика · 12 мин
Как создать график в 1С: диаграммы в отчётах и на формах
Как создать график в 1С: диаграммы в отчётах на СКД, объект Диаграмма, настройка серий и точек, вывод на форму. Пошаговые инструкции и типичные ошибки.
Графики и диаграммы в 1С строятся двумя основными способами: через систему компоновки данных (СКД) в отчётах и через объект «Диаграмма» на управляемой форме. Первый вариант подходит для аналитических отчётов — продажи по месяцам, структура задолженности, динамика остатков. Второй нужен, когда график должен быть частью рабочего места пользователя: панель показателей, мониторинг на начальной странице, визуализация внутри документа.
Для построения графика не нужны внешние библиотеки — платформа 1С:Предприятие 8 содержит встроенный механизм диаграмм с поддержкой гистограмм, графиков, круговых, изометрических и других типов. Достаточно подготовить данные (запросом или программно), указать, что является сериями и точками, и настроить внешний вид.
Ниже разобраны оба подхода с конкретными действиями в конфигураторе, примерами кода, настройкой внешнего вида и типичными ошибками, из-за которых диаграмма отображается пустой или «ломаной».
Выбор способа: отчёт на СКД или диаграмма на форме
Прежде чем открывать конфигуратор, определите, где пользователь должен видеть график. Если это аналитический отчёт, который формируется по кнопке «Сформировать» и может менять отборы и периоды, — используйте СКД. Механизм сам свяжет данные запроса с диаграммой, и большая часть работы делается мышью без кода.
Если график нужен как постоянный элемент интерфейса — например, динамика продаж на стартовой странице менеджера или индикатор загрузки склада внутри обработки — потребуется реквизит формы типа «Диаграмма» и программное заполнение. Это даёт полный контроль над данными, но требует написания кода на встроенном языке.
Как выбрать действие
Создание графика в отчёте на СКД
Откройте конфигуратор, создайте новый отчёт (или откройте существующий) и перейдите к основной схеме компоновки данных. На вкладке «Наборы данных» создайте запрос, который возвращает как минимум три поля: измерение для оси X (например, период), измерение для серий (например, контрагент или склад) и числовой ресурс (сумма, количество).
Пример запроса для графика продаж по месяцам:
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ) КАК Месяц,
Продажи.Номенклатура КАК Номенклатура,
СУММА(Продажи.СуммаОборот) КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты КАК Продажи
СГРУППИРОВАТЬ ПО
НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ),
Продажи.Номенклатура
На вкладке «Ресурсы» укажите поле «Сумма» как ресурс с агрегатной функцией «Сумма». Затем перейдите на вкладку «Настройки»: в дереве настроек выберите корневой элемент «Отчет», нажмите правой кнопкой и выберите «Новая диаграмма». Внутри диаграммы появятся ветки «Точки» и «Серии».
В ветку «Точки» добавьте группировку по полю «Месяц» — это ось X. В ветку «Серии» добавьте группировку по полю «Номенклатура» — каждая номенклатура станет отдельной линией или столбцом. Значение ресурса «Сумма» платформа подставит автоматически. Сохраните отчёт и сформируйте его в режиме предприятия: на вкладке с результатом появится диаграмма.
- 1Создайте набор данных с запросом: период, измерение, числовой ресурс
- 2На вкладке «Ресурсы» добавьте числовое поле с функцией Сумма
- 3В настройках отчёта добавьте элемент «Диаграмма»
- 4В «Точки» поместите группировку по периоду (ось X)
- 5В «Серии» поместите группировку по измерению (линии графика)
- 6Сформируйте отчёт в режиме предприятия и проверьте результат
Настройка типа и внешнего вида диаграммы
Тип графика задаётся в свойствах диаграммы: выделите элемент «Диаграмма» в настройках СКД и в палитре свойств найдите «Тип диаграммы». Доступны гистограмма (обычная, объёмная, накоплением), график (линиями, по шагам, с накоплением), круговая, изометрическая и другие варианты. Для динамики во времени обычно выбирают «График» или «Гистограмма», для структуры — «Круговая».
Дополнительно настраиваются подписи и легенда. Свойство «Отображать легенду» включает пояснение серий, «Окантовка» и «Градиент» влияют на оформление, «Максимум серий» ограничивает количество отображаемых линий — лишние серии группируются в «Прочие», что полезно, когда измерений сотни. Для круговых диаграмм включите отображение процентов через свойства подписей.
Учтите ограничение: если серий больше 10–15, график становится нечитаемым. В этом случае либо ограничьте данные отбором (топ-10 по сумме), либо установите «Максимум серий», либо замените график на сводную таблицу с графическим оформлением.
Программное создание графика на управляемой форме
Для вывода графика на форму обработки или отчёта добавьте реквизит формы с типом «Диаграмма» и перетащите его в дерево элементов формы — платформа создаст поле с нужным видом. Заполнение выполняется кодом, обычно в серверной процедуре.
Логика заполнения всегда одинакова: сначала очистить диаграмму, затем создать серии и точки, потом в цикле по данным установить значения. Пример:
&НаСервере
Процедура ЗаполнитьДиаграммуПродаж()
Диаграмма.Очистить();
Диаграмма.ТипДиаграммы = ТипДиаграммы.График;
Диаграмма.Обновление = Ложь;
Запрос = Новый Запрос(
"ВЫБРАТЬ
| НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ) КАК Месяц,
| СУММА(Продажи.СуммаОборот) КАК Сумма
|ИЗ
| РегистрНакопления.Продажи.Обороты КАК Продажи
|СГРУППИРОВАТЬ ПО
| НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ)
|УПОРЯДОЧИТЬ ПО
| Месяц");
Выборка = Запрос.Выполнить().Выбрать();
Серия = Диаграмма.УстановитьСерию("Продажи");
Пока Выборка.Следующий() Цикл
Точка = Диаграмма.УстановитьТочку(Формат(Выборка.Месяц, "ДФ=ММММ"));
Диаграмма.УстановитьЗначение(Точка, Серия, Выборка.Сумма);
КонецЦикла;
Диаграмма.Обновление = Истина;
КонецПроцедуры
Ключевые моменты: метод Очистить() обязателен перед повторным заполнением, иначе старые точки и серии останутся и график «поплывёт». Отключение обновления (Обновление = Ложь) на время заполнения ускоряет работу при большом числе точек. Если данных нет, диаграмма останется пустой — имеет смысл проверять результат запроса и выводить пользователю сообщение.
Диаграмма.Очистить();
Диаграмма.ТипДиаграммы = ТипДиаграммы.Гистограмма;
Серия = Диаграмма.УстановитьСерию("Сумма");
Точка = Диаграмма.УстановитьТочку("Январь");
Диаграмма.УстановитьЗначение(Точка, Серия, 150000);График в табличном документе и печатной форме
Третий сценарий — диаграмма как рисунок в табличном документе, например для печатной формы отчёта руководителю. В макете типа «Табличный документ» вставьте рисунок (меню «Таблица» → «Рисунки» → «Вставить»), в свойствах рисунка установите тип «Диаграмма» и задайте имя, например «ДиаграммаПродаж».
В коде доступ к диаграмме получают через коллекцию рисунков табличного документа: ТабДок.Рисунки.ДиаграммаПродаж.Объект. Дальше заполнение идентично работе с реквизитом формы — те же методы УстановитьСерию, УстановитьТочку, УстановитьЗначение. После заполнения табличный документ выводится стандартно.
Помните, что диаграмма в табличном документе статична: после вывода пользователь не сможет интерактивно менять отображение, только смотреть или печатать. Для интерактивности используйте форму.
Проверка результата и типичные ошибки
После настройки сформируйте отчёт или откройте форму и проверьте график по контрольным точкам: соответствуют ли суммы на графике данным таблицы, подписаны ли оси и легенда, нет ли пустых промежутков там, где данные должны быть.
Как проверить результат
Совпадают с итогами табличной части отчёта
График показывает меньше — часть данных отфильтрована или не сгруппирована
Все периоды в правильном порядке
Периоды перемешаны — в запросе нет УПОРЯДОЧИТЬ ПО периоду
Каждая серия подписана понятным названием
Серии без названий или с пустыми подписями
График отображает только актуальные данные
К новым данным добавляются старые серии — забыли Очистить()
Ещё одна частая ситуация — «график есть, но не обновляется при изменении отборов». В отчёте на СКД это означает, что диаграмма добавлена не в корень настроек, а внутрь группировки, или пользовательские настройки переопределяют структуру. Проверьте, что диаграмма находится на верхнем уровне дерева настроек.
Ограничения и альтернативы
Встроенные диаграммы 1С покрывают типовые задачи визуализации, но имеют ограничения: нельзя строить сложные комбинированные графики с несколькими осями Y в произвольной конфигурации, ограничены возможности интерактивности (детализация по клику требует программной обработки события «ОбработкаРасшифровки» или событий поля диаграммы), оформление настраивается в пределах предопределённых свойств.
Для панелей показателей (дашбордов) в типовых конфигурациях есть готовые механизмы: «Монитор целевых показателей» в конфигурациях на БСП, варианты отчётов с диаграммами в панелях отчётов. Часто быстрее настроить существующий монитор, чем разрабатывать собственную форму. Если требуется сложная визуализация за пределами возможностей платформы, данные выгружают во внешние инструменты (Excel, Power BI) через COM-соединение или файлы обмена.
Сравнение вариантов
Быстро, без кода, с отборами и периодами. Ограничение — только в рамках отчёта, настройки внешнего вида ограничены
Полный контроль над данными и событиями, подходит для рабочих мест. Требует программирования
Единственный способ вывести график на печать. Статична, без интерактивности
Готовые дашборды в типовых конфигурациях. Подходит, если показатели укладываются в его модель данных
Частые вопросы
Можно ли построить график в 1С без программирования?
Да. Отчёт на СКД с диаграммой полностью настраивается в конфигураторе мышью: запрос конструктором, ресурсы, точки и серии в настройках. Код потребуется только для нестандартной логики или диаграммы на форме.
Почему диаграмма в отчёте пустая, хотя таблица с данными формируется?
Чаще всего не добавлен числовой ресурс на вкладке «Ресурсы» либо в точки или серии не помещены группировки. Также проверьте, что поле ресурса действительно числовое — строковые поля диаграмма не суммирует.
Как подписать значения прямо на столбцах гистограммы?
В свойствах диаграммы найдите настройку подписей серий (в СКД — через свойства элемента «Диаграмма», в коде — через свойства объекта Диаграмма, например ОтображатьПодписиСерий или аналогичные параметры в зависимости от версии платформы). Точный набор свойств зависит от версии платформы, сверяйтесь с синтакс-помощником.
Как сделать, чтобы по клику на столбец открывался расшифровывающий отчёт?
Для диаграммы на форме используйте событие поля диаграммы «ОбработкаРасшифровки» — в нём доступны выбранные точка и серия, по которым можно открыть отчёт с отбором. В отчёте на СКД расшифровка настраивается через поля расшифровки в настройках.
Есть ли ограничение на количество точек на графике?
Жёсткого ограничения платформа не накладывает, но при сотнях точек график становится нечитаемым и медленно отрисовывается. Практическая рекомендация — агрегировать данные (недели вместо дней, месяцы вместо недель) и ограничивать период отбором.
Можно ли сохранить график как картинку?
Да. Диаграмму, выведенную в табличный документ, можно сохранить вместе с документом в форматы, поддерживающие рисунки (например, PDF или HTML), через метод Записать табличного документа. Отдельного метода «сохранить диаграмму в PNG» у платформы нет.
Что важно запомнить
Для отчётов используйте диаграмму в настройках СКД: запрос с периодом и измерением, числовой ресурс, точки для оси X и серии для линий. Для рабочих мест — реквизит формы типа «Диаграмма» с программным заполнением через УстановитьТочку, УстановитьСерию и УстановитьЗначение, не забывая Очистить(). Перед запуском в рабочую базу проверьте график на тестовых данных и ограничьте объём выборки отбором по периоду.