Как построить диаграмму в 1С:Предприятии 8.3 — от отчёта на СКД до кода

· 10 мин

Содержание

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

Механизм диаграмм общий для платформы 8.3, поэтому одинаково работает в БП 3.0, ЗУП 3.1, УТ 11 и ERP. Отличаются только готовые отчёты, в которые удобно добавить график, а объект, его свойства и выгрузка в Excel или PDF везде одни и те же.

Объект Диаграмма: из чего состоит и какие бывают типы

Любая диаграмма в 1С собирается из трёх сущностей. Если их понять, дальше всё просто.

  • 📍 Точки — категории по горизонтали: месяцы, склады, менеджеры. Коллекция Диаграмма.Точки.
  • 📊 Серии — наборы значений, которые сравнивают между собой: «Выручка», «Себестоимость», «План». Коллекция Диаграмма.Серии.
  • 🔢 Значения — числа на пересечении точки и серии. Их задают методом УстановитьЗначение() и читают через ПолучитьЗначение().

Пример: продажи трёх менеджеров за квартал. Точки — январь, февраль, март. Серии — Иванов, Петрова, Сидоров. Получается 9 значений, по одному на каждую пару «месяц — менеджер».

Где диаграмма может «жить»

МестоКак появляетсяКогда выбирать
Отчёт на СКДЭлемент «Диаграмма» в структуре вариантаАналитика по данным учёта, без кода
Форма (управляемая)Реквизит формы типа Диаграмма + поле на формеДашборд, рабочее место, обработка
Табличный документРисунок типа «Диаграмма» в области листаПечатная форма, отчёт для выгрузки

Основные типы диаграмм

Тип задаёт свойство ТипДиаграммы. Самые ходовые значения:

ТипЗначение свойстваДля чего
ГистограммаТипДиаграммы.ГистограммаСравнить величины по категориям
Гистограмма с накоплениемТипДиаграммы.ГистограммаСНакоплениемПоказать итог и его состав
Нормированная гистограммаТипДиаграммы.ГистограммаНормированнаяДоли в процентах, каждый столбец = 100%
ГрафикТипДиаграммы.ГрафикДинамика по времени
КруговаяТипДиаграммы.КруговаяСтруктура одного показателя
ОбластямиТипДиаграммы.ОбластямиДинамика объёма с заливкой

Есть и объёмные варианты (ГистограммаОбъемная, КруговаяОбъемная), но на печати они читаются хуже плоских. Диаграмма Ганта и дендрограмма в платформе — отдельные объекты со своей моделью данных, к Диаграмма они не относятся.

💡 Тип можно сменить одной строкой, не перезаполняя данные. Это удобно, если пользователь хочет переключать вид графика кнопкой.

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

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

Самый быстрый путь — добавить диаграмму в готовый отчёт. Кода не нужно, достаточно прав на изменение варианта отчёта.

Пошагово в пользовательском режиме

  1. Откройте отчёт на СКД, например «Анализ продаж» или любой универсальный отчёт.
  2. Нажмите кнопку настроек и переключитесь на расширенный вид, чтобы увидеть структуру отчёта. В типовых конфигурациях это Ещё → Изменить вариант отчета.
  3. В дереве структуры выделите корень «Отчет» и через «Добавить» выберите элемент «Диаграмма».
  4. У диаграммы два узла: Точки и Серии. В точки добавьте группировку, например по полю «Период» с типом «Месяц».
  5. В серии добавьте группировку, если нужно несколько линий или столбцов, например по номенклатурной группе. Можно оставить пустым.
  6. На закладке выбранных полей отметьте ресурс, который станет значением: сумму, количество.
  7. На закладке «Другие настройки» выберите тип диаграммы. Там же лежат параметры вывода: заголовок, легенда.
  8. Нажмите «Завершить редактирование» и «Сформировать».

Если серии не заданы, а ресурсов выбрано несколько, каждый ресурс становится отдельной серией. Так за пару кликов строится график «Выручка против себестоимости» по месяцам.

Таблица и диаграмма в одном отчёте

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

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

В конфигураторе

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

Настройка осей, легенды и цвета диаграммы в 1С

Сырой график редко годится для руководителя. Разберём, что подкрутить в первую очередь.

Заголовок и легенда

Заголовок нужен, когда диаграмма уходит в печать или в письмо без пояснений. Легенда нужна, только если серий больше одной: на графике с одной линией она лишь занимает место.

Диаграмма.ОтображатьЗаголовок = Истина;
Диаграмма.Заголовок = "Выручка по месяцам, руб.";
Диаграмма.ОтображатьЛегенду = Истина;

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

Цвета серий

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

СерияФакт.Цвет = Новый Цвет(30, 90, 180);
СерияПлан.Цвет = WebЦвета.Серый;

Цвет отдельной точки задаётся так же, через свойство Цвет у точки. Это помогает выделить, например, текущий месяц.

Шкала и подписи значений

  • 📏 Шкала значений. Если все значения от 950 000 до 1 050 000, автоматическая шкала может начаться с нуля, и разницы не будет видно. Задайте минимум вручную в свойствах шкалы значений. Помните: обрезанная ось визуально преувеличивает разницу.
  • 🏷️ Подписи значений. Для гистограммы с 5-7 столбцами подписи над столбцами удобнее сетки. Для графика на 24 точки подписи сливаются, их лучше отключить и оставить подсказки при наведении.
  • 🔤 Формат чисел. Миллионы с копейками нечитаемы. Округлите данные заранее, например до тысяч в запросе, и напишите единицы в заголовке: «тыс. руб.».

Настройки шкал и подписей находятся в палитре свойств диаграммы в макете или в параметрах вывода СКД. Состав параметров меняется от версии платформы, поэтому сверяйтесь со списком, который видите на экране.

Заполнение диаграммы кодом и вывод на печать

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

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

  1. В редакторе формы добавьте реквизит, например ДиаграммаПродаж, тип Диаграмма.
  2. Перетащите реквизит в дерево элементов — появится поле диаграммы.
  3. Заполняйте реквизит в серверной процедуре. Ниже рабочий пример: в нём данные идут из таблицы значений, в реальной задаче её заменит результат запроса.
&НаСервере
Процедура ЗаполнитьДиаграммуНаСервере()

    Данные = Новый ТаблицаЗначений;
    Данные.Колонки.Добавить("Месяц");
    Данные.Колонки.Добавить("Факт");
    Данные.Колонки.Добавить("План");

    Строка = Данные.Добавить(); Строка.Месяц = "Январь";  Строка.Факт = 820; Строка.План = 900;
    Строка = Данные.Добавить(); Строка.Месяц = "Февраль"; Строка.Факт = 940; Строка.План = 900;
    Строка = Данные.Добавить(); Строка.Месяц = "Март";    Строка.Факт = 1010; Строка.План = 950;

    Д = ДиаграммаПродаж;
    Д.ОбновлениеВключено = Ложь;
    Д.Очистить();
    Д.ТипДиаграммы = ТипДиаграммы.Гистограмма;

    СерияФакт = Д.Серии.Добавить("Факт");
    СерияПлан = Д.Серии.Добавить("План");
    СерияПлан.Цвет = WebЦвета.Серый;

    Для Каждого Строка Из Данные Цикл
        Точка = Д.Точки.Добавить(Строка.Месяц);
        Д.УстановитьЗначение(Точка, СерияФакт, Строка.Факт, ,
            СтрШаблон("Факт: %1 тыс. руб.", Формат(Строка.Факт, "ЧГ=0")));
        Д.УстановитьЗначение(Точка, СерияПлан, Строка.План, ,
            СтрШаблон("План: %1 тыс. руб.", Формат(Строка.План, "ЧГ=0")));
    КонецЦикла;

    Д.ОтображатьЛегенду = Истина;
    Д.ОбновлениеВключено = Истина;

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

Параметры УстановитьЗначение() по порядку: точка, серия, значение, расшифровка, подсказка. Расшифровку здесь пропустили, о ней в следующем разделе.

Не забудьте вернуть ОбновлениеВключено = Истина. Пока свойство в Ложь, диаграмма не перерисовывается, и пользователь видит пустое поле или старые данные. Отключать обновление стоит при любом массовом заполнении: на сотнях точек разница в скорости заметна.

Диаграмма в печатной форме

Для печати диаграмму помещают в табличный документ как рисунок:

ТабДок = Новый ТабличныйДокумент;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;

Рисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Диаграмма);
Рисунок.Расположить(ТабДок.Область("R2C2:R25C12"));

Д = Рисунок.Объект;
Д.ТипДиаграммы = ТипДиаграммы.График;
// дальше заполнение точек и серий, как в примере выше

Размер диаграммы на листе определяет область, в которую её расположили. Нужен график крупнее — расширьте диапазон строк и колонок.

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

Готовый документ показывают пользователю или отправляют на принтер:

ТабДок.Показать("Продажи по месяцам");
// или сразу на печать:
// ТабДок.Напечатать();

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

Интерактивность: подсказки и расшифровка по клику

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

Подсказки при наведении

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

Расшифровка значения

Четвёртый параметр — расшифровка: любое значение, например ссылка на контрагента или структура с периодом и складом. Её получают в обработчике выбора поля диаграммы на форме:

&НаКлиенте
Процедура ДиаграммаПродажВыбор(Элемент, ЗначениеДиаграммы, СтандартнаяОбработка)

    Если ЗначениеЗаполнено(ЗначениеДиаграммы.Расшифровка) Тогда
        СтандартнаяОбработка = Ложь;
        ПоказатьЗначение(, ЗначениеДиаграммы.Расшифровка);
    КонецЕсли;

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

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

Расшифровка в отчётах на СКД

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

Обновление по кнопке и переключение вида

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

Выгрузка диаграммы в Excel, PDF и офисные приложения

Диаграмма в 1С выгружается вместе с табличным документом, в котором она лежит. Отдельной команды «выгрузить только график» нет.

Как сохранить вручную

  1. Сформируйте отчёт с диаграммой.
  2. Нажмите кнопку сохранения на панели отчёта или Ctrl+S.
  3. Выберите формат: Excel (.xlsx), PDF, Word (.docx) или табличный документ (.mxl).

В PDF и .mxl диаграмма сохраняется так же, как на экране. В Excel и Word она попадает картинкой: редактировать её как родную диаграмму Excel не получится.

Программная выгрузка

ТабДок.Записать("C:\Отчеты\Продажи.xlsx", ТипФайлаТабличногоДокумента.XLSX);
ТабДок.Записать("C:\Отчеты\Продажи.pdf", ТипФайлаТабличногоДокумента.PDF);

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

Когда нужна живая диаграмма в Excel

Если финансист хочет крутить график сам, выгружайте не картинку, а данные:

СпособЧто получит пользовательМинусы
Сохранить отчёт в .xlsxТаблица + картинка диаграммыГрафик не редактируется
Выгрузить только таблицу данныхЧистые цифры на листеДиаграмму строят в Excel сами
PDFТочная копия экранаДанные не скопировать в расчёты

Практичный компромисс: в варианте отчёта держите и таблицу, и диаграмму. В Excel уйдут цифры, по которым за минуту строится своя диаграмма, а картинка рядом покажет, как это выглядело в 1С.

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

  • 🧱 Слишком много точек или серий. Группировка по номенклатуре на 400 позиций превращает гистограмму в штрихкод. Ставьте в точки укрупнённые группировки или ограничивайте выборку топом по сумме.
  • 🥧 Круговая на несколько серий. Круговая диаграмма показывает структуру одного показателя. Для сравнения структуры по периодам берите нормированную гистограмму.
  • 🔁 Точки и серии перепутаны. Если вместо 12 месяцев по горизонтали вы видите 12 столбиков одного цвета в легенде, поменяйте группировки местами между узлами «Точки» и «Серии».
  • 🗓️ Пропущенные периоды. На графике по месяцам месяц без продаж просто исчезает, и линия «перепрыгивает». В СКД включите дополнение периодов у группировки по периоду, в коде добавляйте точки на все месяцы, даже с нулём.
  • 💾 Вариант не сохранён. Диаграмма, добавленная в настройку, живёт до закрытия отчёта. Чтобы она осталась, сохраните вариант.
  • 🧮 Сравнение на разных шкалах. Выручка в миллионах и количество в штуках на одной оси: штуки лягут в ноль. Разнесите их на две диаграммы.
Можно ли построить диаграмму в 1С без конфигуратора?
Да. В любом отчёте на СКД откройте изменение варианта, добавьте в структуру элемент «Диаграмма» и сохраните вариант. Права на конфигуратор не нужны, нужны права на настройку отчётов.
Почему диаграмма пустая, хотя таблица в отчёте заполнена?
Обычно в значения диаграммы не выбран ни один ресурс или в точки не добавлена группировка. Проверьте оба узла в структуре. В коде частая причина — не возвращено ОбновлениеВключено = Истина.
Работают ли диаграммы в веб-клиенте и тонком клиенте?
Да, поле диаграммы на управляемой форме отображается и в тонком, и в веб-клиенте. Заполняйте данные на сервере, а клиенту оставляйте реакцию на клик.
Как вставить диаграмму 1С в презентацию?
Сохраните отчёт в PDF или Word и скопируйте оттуда картинку. Для чёткой картинки увеличьте область, в которой расположена диаграмма, до сохранения.
Можно ли показать на одном графике план и факт?
Да. Сделайте две серии, «План» и «Факт», или выберите два ресурса без группировки в сериях — в СКД каждый ресурс станет своей линией.