Диаграммы в 1С 8.3: от отчёта на СКД до своей визуализации
Содержание
Диаграмму в 1С 8.3 добавляют четырьмя разными путями: встраивают в уже готовый отчёт на СКД без единой строки кода, рисуют в схеме компоновки данных своего отчёта, выводят на форму через реквизит типа Диаграмма или показывают веб-график в поле HTML-документа. Способ зависит от того, где нужен график и готовы ли вы открывать Конфигуратор.
Самая частая ситуация у бухгалтера и аналитика: руководитель просит показать выручку по месяцам или структуру затрат «картинкой», а стандартный отчёт выдаёт только колонки с цифрами. Хорошая новость — в большинстве типовых отчётов на СКД диаграмма уже заложена, её нужно просто включить. Для более тонких задач — своя форма, встроенный язык и внешние библиотеки.
Откуда в 1С берутся диаграммы
Визуализация в платформе 8.3 держится на нескольких объектах. Понимание, какой из них отвечает за график, снимает половину вопросов.
- 📊
Диаграмма— объект встроенного языка и реквизит формы. На нём строятся круговые, столбчатые и линейные графики. - 📈
ДиаграммаГанта— отдельный тип для план-графиков и загрузки ресурсов во времени. - 🧩 Диаграмма в структуре СКД — то, что видит пользователь в типовых отчётах. Строится декларативно, без кода.
- 🌐 Поле HTML-документа — контейнер, в который можно вставить веб-график из сторонней библиотеки.
Выбрать подходящий вариант помогает короткое дерево решений — ниже.
Диаграмма в готовом отчёте — без программирования
Большинство типовых отчётов (продажи, остатки, оборотно-сальдовые разрезы) построены на СКД и уже умеют рисовать график. Его нужно только добавить в структуру варианта.
- Откройте нужный отчёт и сформируйте его хотя бы раз, чтобы увидеть данные.
- Нажмите кнопку
Настройки. Если видите простой режим — переключитесь на расширенный (в типовых это ссылка вида «Расширенный» или командаЕще → Изменить вариант отчёта). - Перейдите на вкладку
Структура. - Встаньте на корень структуры или нужную группировку, нажмите
Добавитьи выберите элемент Диаграмма. - Внутри диаграммы задайте, что уйдёт в точки (например,
НоменклатураилиПериод) и в серии (например,Склад), а в выбранные поля добавьте ресурс — сумму или количество. - Нажмите
Завершить редактированиеи сформируйте отчёт.
Тип графика в варианте переключается в свойствах диаграммы — параметр Тип диаграммы. Там же меняются подписи, легенда и палитра.
Настроенный вариант можно сохранить через Еще → Сохранить вариант отчёта, чтобы не повторять настройку каждый раз. Название кнопки Настройки в разных конфигурациях может немного отличаться, но путь «сформировать → настройки → структура → добавить диаграмму» общий для всех отчётов на СКД.
Построение диаграммы в схеме компоновки данных
Если делаете собственный отчёт, диаграмму удобнее сразу заложить в схему. Открываете макет Схема компоновки данных в Конфигураторе или в расширении конфигурации.
- На вкладке
Наборы данныхопишите запрос — источник чисел для графика. - На вкладке
Ресурсыотметьте поля, которые будут суммироваться (например,Сумма,Количество). - Перейдите на
Настройки, встаньте на структуру и через контекстное меню добавьте элемент Диаграмма. - В диаграмме раскройте узлы
ТочкииСериии добавьте в них группировочные поля. Точки — это ось категорий, серии — отдельные линии или сектора. - В
Выбранные полядиаграммы перенесите ресурс. - На вкладке
Параметры(или в свойствах узла диаграммы) задайте выходной параметрТипДиаграммы.
Такой отчёт можно оформить как внешний файл .erf и подключать через Файл → Открыть, либо добавить в конфигурацию отдельным объектом Отчёт.
Диаграмма на СКД показывает ровно тот срез, что отобран в группировках. Если точек получилось сотни (например, вся номенклатура), график станет нечитаемым — ограничьте отбор или выводите ТОП-10 через условное оформление и отбор.
Чтобы диаграмма осталась читаемой на больших данных, добавьте диаграмме собственный отбор на вкладке настроек — например, по сумме больше порога — или выводите только верхние значения, задав порядок по убыванию ресурса. Остальные позиции при необходимости сворачивают в группировку «Прочее».
Главное преимущество СКД — пользователь потом сам поменяет тип графика, отбор и период, а разработчику не нужно писать ни строки кода для заполнения.
Диаграмма на форме: заполняем из встроенного языка
Когда график нужен на форме обработки, документа или в рабочем столе, используют реквизит формы типа Диаграмма.
Порядок в Конфигураторе:
- Откройте форму, на вкладке
Реквизитыдобавьте реквизит — например,ДиаграммаПродажс типом Диаграмма. - Перетащите его на форму — появится элемент «Поле диаграммы».
- Заполнение пишите в серверной процедуре.
Объект Диаграмма заполняется через коллекции Серии и Точки, а значения ставятся методом УстановитьЗначение(Точка, Серия, Значение):
&НаСервере
Процедура ПостроитьДиаграммуНаСервере()
ДиаграммаПродаж.Очистить();
ДиаграммаПродаж.ТипДиаграммы = ТипДиаграммы.Круговая;
Серия = ДиаграммаПродаж.Серии.Добавить("Выручка");
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Продажи.Период КАК Период,
| Продажи.СуммаОборот КАК Сумма
|ИЗ
| РегистрНакопления.Продажи.Обороты(, , Месяц, ) КАК Продажи");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Точка = ДиаграммаПродаж.Точки.Добавить(Формат(Выборка.Период, "ДЛФ=MY"));
ДиаграммаПродаж.УстановитьЗначение(Точка, Серия, Выборка.Сумма);
КонецЦикла;
КонецПроцедуры
Разберём ключевые моменты:
- Перед заполнением всегда вызывайте
Очистить(), иначе при повторном построении точки задвоятся. Серии.Добавить()иТочки.Добавить()возвращают саму серию и точку — их и передают вУстановитьЗначение.- Число в имя точки склеивать нельзя:
Формат(Выборка.Период, "ДЛФ=MY")превращает дату в читаемый «октябрь 2026», а для сумм в подписях применяйтеФормат(Значение, "ЧГ=0"). - Несколько серий (например, по складам) добавляются в цикле по второму измерению запроса — тогда получится сгруппированная гистограмма.
Тип графика задаётся свойством ТипДиаграммы. Для столбиков это Гистограмма, для динамики во времени — График, для долей — Круговая.
Если нужно сравнить несколько разрезов на одном графике — например, продажи по месяцам в разбивке по складам, — серии добавляют в отдельном цикле по второму измерению. Тогда на каждую точку (месяц) приходится несколько столбиков или линий:
ТочкиПоМесяцам = Новый Соответствие;
Для Каждого СтрокаСклад Из ТаблицаСкладов Цикл
Серия = ДиаграммаПродаж.Серии.Добавить(СтрокаСклад.Наименование);
Для Каждого СтрокаМесяц Из СтрокаСклад.Месяцы Цикл
Точка = ТочкиПоМесяцам.Получить(СтрокаМесяц.Имя);
Если Точка = Неопределено Тогда
Точка = ДиаграммаПродаж.Точки.Добавить(СтрокаМесяц.Имя);
ТочкиПоМесяцам.Вставить(СтрокаМесяц.Имя, Точка);
КонецЕсли;
ДиаграммаПродаж.УстановитьЗначение(Точка, Серия, СтрокаМесяц.Сумма);
КонецЦикла;
КонецЦикла;
Готовые точки складываем в Соответствие по имени месяца — так один и тот же месяц не создаётся дважды для разных серий, и на графике столбики по складам встают рядом в каждой категории.
Оформление (легенда, подписи значений, цвета серий) задаётся свойствами объекта Диаграмма и его элементов в палитре свойств. Точные имена свойств смотрите в синтакс-помощнике по объекту «Диаграмма»: там перечислены настройки легенды, подписей и палитры. Для круговой диаграммы доли можно выводить в процентах.
Какой тип диаграммы выбрать
Тип решает, насколько понятным получится график. Подбирайте его под задачу, а не по красоте.
Тип (ТипДиаграммы) | Когда подходит | Пример |
|---|---|---|
Круговая | Доли частей в целом | Структура расходов за квартал |
Гистограмма | Сравнение значений по категориям | Выручка по менеджерам |
График | Динамика показателя во времени | Остаток на складе по дням |
Линейчатая | Рейтинг с длинными подписями | ТОП-10 контрагентов |
Областями | Накопление и объём во времени | Нарастающий итог продаж |
Круговую диаграмму не стоит использовать больше чем для 6–7 секторов: мелкие доли сливаются. Для длинных списков берите линейчатую — подписи читаются слева, а не под наклоном.
Для план-графиков и загрузки ресурсов существует отдельный объект ДиаграммаГанта — он рисует горизонтальные полосы на временной шкале. Заполняют его тоже через серии и точки, но вместо одного числа каждой ячейке задают интервал с датами начала и окончания. Это удобно для графиков отпусков, этапов проекта или занятости оборудования, где важна не величина, а период.
Отдельно стоит вспомнить про готовые инструменты типовых конфигураций. В 1С:ERP, Комплексной автоматизации и Управлении торговлей есть Монитор целевых показателей — набор преднастроенных графиков по выручке, марже и остаткам, которые собираются из данных базы без доработок. Если задача — показать руководителю ключевые цифры «на одном экране», часто быстрее настроить этот монитор, чем строить диаграмму вручную. В 1С:Бухгалтерии похожую роль играют показатели на начальной странице и отчёты раздела для руководителя.
Интерактивная веб-визуализация через HTML
Штатная диаграмма статична: она не всплывает подсказками при наведении и не анимируется. Когда нужен «живой» дашборд, на форму ставят поле HTML-документа и встраивают в него библиотеку вроде Chart.js или ApexCharts.
Схема простая:
- Добавьте на форму реквизит типа
Строка(неограниченной длины) и свяжите его с элементом «Поле HTML-документа». - Соберите в этой строке HTML-страницу: подключение библиотеки, элемент
canvasи скрипт с данными. - Данные из 1С подставьте в скрипт как массив чисел — например, сериализовав выборку запроса в JSON.
<!DOCTYPE html>
<html><head>
<script src="chart.min.js"></script></head>
<body>
<canvas id="chart"></canvas>
<script>
new Chart(document.getElementById('chart'), {
type: 'bar',
data: { labels: ['Янв','Фев','Мар'], datasets: [{ data: [120, 190, 150] }] }
});
</script>
</body></html>
Поле HTML-документа внутри 1С не ходит в интернет свободно. Файл библиотеки кладите рядом (в макет или во временный каталог сеанса) и подключайте локальным путём, а не ссылкой на CDN — иначе график не отрисуется на закрытых серверах.
Альтернатива для тяжёлых случаев — внешняя компонента по технологии Native API: она выводит визуализацию средствами ОС. Это решение для разработчика, который уверенно владеет C++; для отчётности оно избыточно, и в 95% задач хватает штатной диаграммы или HTML-поля.
Частые ошибки при построении диаграмм
Большинство проблем с графиками — не баги платформы, а предсказуемые промахи заполнения.
Очистить(). Добавьте его первой строкой процедуры построения.Формат(Сумма, "ЧГ=0") для подписей.Ещё одна тонкость: диаграмма на управляемой форме перерисовывается только после того, как заполнен связанный реквизит. Если меняете данные на клиенте, вызывайте серверную процедуру построения заново — само поле не «подхватит» новые цифры.
Частые вопросы
Можно ли построить диаграмму в базовой версии 1С?
Как сохранить диаграмму в файл или вставить в письмо?
.mxl и копируется в буфер.