Диаграммы в 1С 8.3: от отчёта на СКД до своей визуализации

· 9 мин

Содержание

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

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

Откуда в 1С берутся диаграммы

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

  • 📊 Диаграмма — объект встроенного языка и реквизит формы. На нём строятся круговые, столбчатые и линейные графики.
  • 📈 ДиаграммаГанта — отдельный тип для план-графиков и загрузки ресурсов во времени.
  • 🧩 Диаграмма в структуре СКД — то, что видит пользователь в типовых отчётах. Строится декларативно, без кода.
  • 🌐 Поле HTML-документа — контейнер, в который можно вставить веб-график из сторонней библиотеки.

Выбрать подходящий вариант помогает короткое дерево решений — ниже.

Какой способ построения диаграммы выбрать?

Диаграмма в готовом отчёте — без программирования

Большинство типовых отчётов (продажи, остатки, оборотно-сальдовые разрезы) построены на СКД и уже умеют рисовать график. Его нужно только добавить в структуру варианта.

  1. Откройте нужный отчёт и сформируйте его хотя бы раз, чтобы увидеть данные.
  2. Нажмите кнопку Настройки. Если видите простой режим — переключитесь на расширенный (в типовых это ссылка вида «Расширенный» или команда Еще → Изменить вариант отчёта).
  3. Перейдите на вкладку Структура.
  4. Встаньте на корень структуры или нужную группировку, нажмите Добавить и выберите элемент Диаграмма.
  5. Внутри диаграммы задайте, что уйдёт в точки (например, Номенклатура или Период) и в серии (например, Склад), а в выбранные поля добавьте ресурс — сумму или количество.
  6. Нажмите Завершить редактирование и сформируйте отчёт.

Тип графика в варианте переключается в свойствах диаграммы — параметр Тип диаграммы. Там же меняются подписи, легенда и палитра.

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

Построение диаграммы в схеме компоновки данных

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

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

Такой отчёт можно оформить как внешний файл .erf и подключать через Файл → Открыть, либо добавить в конфигурацию отдельным объектом Отчёт.

Диаграмма на СКД показывает ровно тот срез, что отобран в группировках. Если точек получилось сотни (например, вся номенклатура), график станет нечитаемым — ограничьте отбор или выводите ТОП-10 через условное оформление и отбор.

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

Главное преимущество СКД — пользователь потом сам поменяет тип графика, отбор и период, а разработчику не нужно писать ни строки кода для заполнения.

Диаграмма на форме: заполняем из встроенного языка

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

Порядок в Конфигураторе:

  1. Откройте форму, на вкладке Реквизиты добавьте реквизит — например, ДиаграммаПродаж с типом Диаграмма.
  2. Перетащите его на форму — появится элемент «Поле диаграммы».
  3. Заполнение пишите в серверной процедуре.

Объект Диаграмма заполняется через коллекции Серии и Точки, а значения ставятся методом УстановитьЗначение(Точка, Серия, Значение):

&НаСервере
Процедура ПостроитьДиаграммуНаСервере()
    ДиаграммаПродаж.Очистить();
    ДиаграммаПродаж.ТипДиаграммы = ТипДиаграммы.Круговая;

    Серия = ДиаграммаПродаж.Серии.Добавить("Выручка");

    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   Продажи.Период КАК Период,
        |   Продажи.СуммаОборот КАК Сумма
        |ИЗ
        |   РегистрНакопления.Продажи.Обороты(, , Месяц, ) КАК Продажи");

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Точка = ДиаграммаПродаж.Точки.Добавить(Формат(Выборка.Период, "ДЛФ=MY"));
        ДиаграммаПродаж.УстановитьЗначение(Точка, Серия, Выборка.Сумма);
    КонецЦикла;
КонецПроцедуры

Разберём ключевые моменты:

  • Перед заполнением всегда вызывайте Очистить(), иначе при повторном построении точки задвоятся.
  • Серии.Добавить() и Точки.Добавить() возвращают саму серию и точку — их и передают в УстановитьЗначение.
  • Число в имя точки склеивать нельзя: Формат(Выборка.Период, "ДЛФ=MY") превращает дату в читаемый «октябрь 2026», а для сумм в подписях применяйте Формат(Значение, "ЧГ=0").
  • Несколько серий (например, по складам) добавляются в цикле по второму измерению запроса — тогда получится сгруппированная гистограмма.

Тип графика задаётся свойством ТипДиаграммы. Для столбиков это Гистограмма, для динамики во времени — График, для долей — Круговая.

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

ТочкиПоМесяцам = Новый Соответствие;

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

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

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

Какой тип диаграммы выбрать

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

Тип (ТипДиаграммы)Когда подходитПример
КруговаяДоли частей в целомСтруктура расходов за квартал
ГистограммаСравнение значений по категориямВыручка по менеджерам
ГрафикДинамика показателя во времениОстаток на складе по дням
ЛинейчатаяРейтинг с длинными подписямиТОП-10 контрагентов
ОбластямиНакопление и объём во времениНарастающий итог продаж

Круговую диаграмму не стоит использовать больше чем для 6–7 секторов: мелкие доли сливаются. Для длинных списков берите линейчатую — подписи читаются слева, а не под наклоном.

Для план-графиков и загрузки ресурсов существует отдельный объект ДиаграммаГанта — он рисует горизонтальные полосы на временной шкале. Заполняют его тоже через серии и точки, но вместо одного числа каждой ячейке задают интервал с датами начала и окончания. Это удобно для графиков отпусков, этапов проекта или занятости оборудования, где важна не величина, а период.

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

Интерактивная веб-визуализация через HTML

Штатная диаграмма статична: она не всплывает подсказками при наведении и не анимируется. Когда нужен «живой» дашборд, на форму ставят поле HTML-документа и встраивают в него библиотеку вроде Chart.js или ApexCharts.

Схема простая:

  1. Добавьте на форму реквизит типа Строка (неограниченной длины) и свяжите его с элементом «Поле HTML-документа».
  2. Соберите в этой строке HTML-страницу: подключение библиотеки, элемент canvas и скрипт с данными.
  3. Данные из 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-поля.

Частые ошибки при построении диаграмм

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

Диагностика: выберите симптом

Ещё одна тонкость: диаграмма на управляемой форме перерисовывается только после того, как заполнен связанный реквизит. Если меняете данные на клиенте, вызывайте серверную процедуру построения заново — само поле не «подхватит» новые цифры.

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

Можно ли построить диаграмму в базовой версии 1С?
Да. Диаграммы в типовых отчётах на СКД работают во всех версиях, включая базовые, — это пользовательский режим. Ограничения базовой версии касаются Конфигуратора и доработок, а не вывода готовых графиков.
Как сохранить диаграмму в файл или вставить в письмо?
Правой кнопкой по построенному графику вызовите контекстное меню и сохраните как картинку, либо сделайте снимок области. Табличный документ с диаграммой также сохраняется в .mxl и копируется в буфер.
Чем отличается диаграмма в СКД от диаграммы на форме?
Диаграмма СКД строится декларативно и пользователь сам меняет её настройки без кода. Диаграмма на форме полностью под контролем разработчика: данные, тип и оформление задаются встроенным языком.
Почему круговая диаграмма показывает только одну серию?
Так и задумано: круговая отображает доли одной серии. Для сравнения нескольких серий одновременно берите гистограмму или линейчатую диаграмму.
Нужна ли отдельная лицензия, чтобы выводить графики?
Нет. Построение диаграмм — штатная возможность платформы 8.3 и не требует дополнительных лицензий или модулей.