Как построить диаграмму в 1С:Предприятии 8.3 — от отчёта на СКД до кода
Содержание
Чтобы работать с диаграммами в 1С без программирования, откройте отчёт на системе компоновки данных (СКД), войдите в настройку варианта и добавьте в структуру элемент «Диаграмма»: в точки поставьте группировку, например по месяцам, ресурс станет значением. Если отчёт свой или нужен график на форме, используйте объект Диаграмма. Его заполняют кодом через Точки, Серии и УстановитьЗначение().
Механизм диаграмм общий для платформы 8.3, поэтому одинаково работает в БП 3.0, ЗУП 3.1, УТ 11 и ERP. Отличаются только готовые отчёты, в которые удобно добавить график, а объект, его свойства и выгрузка в Excel или PDF везде одни и те же.
Объект Диаграмма: из чего состоит и какие бывают типы
Любая диаграмма в 1С собирается из трёх сущностей. Если их понять, дальше всё просто.
- 📍 Точки — категории по горизонтали: месяцы, склады, менеджеры. Коллекция
Диаграмма.Точки. - 📊 Серии — наборы значений, которые сравнивают между собой: «Выручка», «Себестоимость», «План». Коллекция
Диаграмма.Серии. - 🔢 Значения — числа на пересечении точки и серии. Их задают методом
УстановитьЗначение()и читают черезПолучитьЗначение().
Пример: продажи трёх менеджеров за квартал. Точки — январь, февраль, март. Серии — Иванов, Петрова, Сидоров. Получается 9 значений, по одному на каждую пару «месяц — менеджер».
Где диаграмма может «жить»
| Место | Как появляется | Когда выбирать |
|---|---|---|
| Отчёт на СКД | Элемент «Диаграмма» в структуре варианта | Аналитика по данным учёта, без кода |
| Форма (управляемая) | Реквизит формы типа Диаграмма + поле на форме | Дашборд, рабочее место, обработка |
| Табличный документ | Рисунок типа «Диаграмма» в области листа | Печатная форма, отчёт для выгрузки |
Основные типы диаграмм
Тип задаёт свойство ТипДиаграммы. Самые ходовые значения:
| Тип | Значение свойства | Для чего |
|---|---|---|
| Гистограмма | ТипДиаграммы.Гистограмма | Сравнить величины по категориям |
| Гистограмма с накоплением | ТипДиаграммы.ГистограммаСНакоплением | Показать итог и его состав |
| Нормированная гистограмма | ТипДиаграммы.ГистограммаНормированная | Доли в процентах, каждый столбец = 100% |
| График | ТипДиаграммы.График | Динамика по времени |
| Круговая | ТипДиаграммы.Круговая | Структура одного показателя |
| Областями | ТипДиаграммы.Областями | Динамика объёма с заливкой |
Есть и объёмные варианты (ГистограммаОбъемная, КруговаяОбъемная), но на печати они читаются хуже плоских. Диаграмма Ганта и дендрограмма в платформе — отдельные объекты со своей моделью данных, к Диаграмма они не относятся.
💡 Тип можно сменить одной строкой, не перезаполняя данные. Это удобно, если пользователь хочет переключать вид графика кнопкой.
Как создать диаграмму в 1С через СКД
Самый быстрый путь — добавить диаграмму в готовый отчёт. Кода не нужно, достаточно прав на изменение варианта отчёта.
Пошагово в пользовательском режиме
- Откройте отчёт на СКД, например «Анализ продаж» или любой универсальный отчёт.
- Нажмите кнопку настроек и переключитесь на расширенный вид, чтобы увидеть структуру отчёта. В типовых конфигурациях это
Ещё → Изменить вариант отчета. - В дереве структуры выделите корень «Отчет» и через «Добавить» выберите элемент «Диаграмма».
- У диаграммы два узла: Точки и Серии. В точки добавьте группировку, например по полю «Период» с типом «Месяц».
- В серии добавьте группировку, если нужно несколько линий или столбцов, например по номенклатурной группе. Можно оставить пустым.
- На закладке выбранных полей отметьте ресурс, который станет значением: сумму, количество.
- На закладке «Другие настройки» выберите тип диаграммы. Там же лежат параметры вывода: заголовок, легенда.
- Нажмите «Завершить редактирование» и «Сформировать».
Если серии не заданы, а ресурсов выбрано несколько, каждый ресурс становится отдельной серией. Так за пару кликов строится график «Выручка против себестоимости» по месяцам.
Таблица и диаграмма в одном отчёте
Структура СКД допускает несколько элементов подряд. Добавьте на верхний уровень и таблицу, и диаграмму: отчёт выведет сначала цифры, потом график по тем же данным. Отборы варианта действуют на оба элемента.
Сохраните настройку как отдельный вариант отчёта («Сохранить вариант»). Иначе при следующем открытии диаграмма пропадёт, и всё придётся собирать заново.
В конфигураторе
В схеме компоновки данных откройте закладку «Настройки», в структуре через контекстное меню добавьте «Новая диаграмма». Дальше всё так же: точки, серии, ресурсы, тип на закладке «Другие настройки». Ресурсы должны быть описаны на закладке «Ресурсы» схемы, иначе их нечего будет выбрать в значения диаграммы.
Настройка осей, легенды и цвета диаграммы в 1С
Сырой график редко годится для руководителя. Разберём, что подкрутить в первую очередь.
Заголовок и легенда
Заголовок нужен, когда диаграмма уходит в печать или в письмо без пояснений. Легенда нужна, только если серий больше одной: на графике с одной линией она лишь занимает место.
Диаграмма.ОтображатьЗаголовок = Истина;
Диаграмма.Заголовок = "Выручка по месяцам, руб.";
Диаграмма.ОтображатьЛегенду = Истина;
В отчёте на СКД те же параметры лежат в параметрах вывода диаграммы на закладке «Другие настройки». Раскройте группу «Тип диаграммы»: в ней вложенные настройки легенды, заголовка и подписей.
Цвета серий
По умолчанию платформа раскрашивает серии сама. Для фирменного стиля или привычной логики (план — серый, факт — синий, перерасход — красный) задайте цвет явно:
СерияФакт.Цвет = Новый Цвет(30, 90, 180);
СерияПлан.Цвет = WebЦвета.Серый;
Цвет отдельной точки задаётся так же, через свойство Цвет у точки. Это помогает выделить, например, текущий месяц.
Шкала и подписи значений
- 📏 Шкала значений. Если все значения от 950 000 до 1 050 000, автоматическая шкала может начаться с нуля, и разницы не будет видно. Задайте минимум вручную в свойствах шкалы значений. Помните: обрезанная ось визуально преувеличивает разницу.
- 🏷️ Подписи значений. Для гистограммы с 5-7 столбцами подписи над столбцами удобнее сетки. Для графика на 24 точки подписи сливаются, их лучше отключить и оставить подсказки при наведении.
- 🔤 Формат чисел. Миллионы с копейками нечитаемы. Округлите данные заранее, например до тысяч в запросе, и напишите единицы в заголовке: «тыс. руб.».
Настройки шкал и подписей находятся в палитре свойств диаграммы в макете или в параметрах вывода СКД. Состав параметров меняется от версии платформы, поэтому сверяйтесь со списком, который видите на экране.
Заполнение диаграммы кодом и вывод на печать
Когда данных нет в СКД или нужен график на форме обработки, диаграмму заполняют программно.
Диаграмма на управляемой форме
- В редакторе формы добавьте реквизит, например
ДиаграммаПродаж, типДиаграмма. - Перетащите реквизит в дерево элементов — появится поле диаграммы.
- Заполняйте реквизит в серверной процедуре. Ниже рабочий пример: в нём данные идут из таблицы значений, в реальной задаче её заменит результат запроса.
&НаСервере
Процедура ЗаполнитьДиаграммуНаСервере()
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("Месяц");
Данные.Колонки.Добавить("Факт");
Данные.Колонки.Добавить("План");
Строка = Данные.Добавить(); Строка.Месяц = "Январь"; Строка.Факт = 820; Строка.План = 900;
Строка = Данные.Добавить(); Строка.Месяц = "Февраль"; Строка.Факт = 940; Строка.План = 900;
Строка = Данные.Добавить(); Строка.Месяц = "Март"; Строка.Факт = 1010; Строка.План = 950;
Д = ДиаграммаПродаж;
Д.ОбновлениеВключено = Ложь;
Д.Очистить();
Д.ТипДиаграммы = ТипДиаграммы.Гистограмма;
СерияФакт = Д.Серии.Добавить("Факт");
СерияПлан = Д.Серии.Добавить("План");
СерияПлан.Цвет = WebЦвета.Серый;
Для Каждого Строка Из Данные Цикл
Точка = Д.Точки.Добавить(Строка.Месяц);
Д.УстановитьЗначение(Точка, СерияФакт, Строка.Факт, ,
СтрШаблон("Факт: %1 тыс. руб.", Формат(Строка.Факт, "ЧГ=0")));
Д.УстановитьЗначение(Точка, СерияПлан, Строка.План, ,
СтрШаблон("План: %1 тыс. руб.", Формат(Строка.План, "ЧГ=0")));
КонецЦикла;
Д.ОтображатьЛегенду = Истина;
Д.ОбновлениеВключено = Истина;
КонецПроцедуры
Параметры УстановитьЗначение() по порядку: точка, серия, значение, расшифровка, подсказка. Расшифровку здесь пропустили, о ней в следующем разделе.
Не забудьте вернуть ОбновлениеВключено = Истина. Пока свойство в Ложь, диаграмма не перерисовывается, и пользователь видит пустое поле или старые данные. Отключать обновление стоит при любом массовом заполнении: на сотнях точек разница в скорости заметна.
Диаграмма в печатной форме
Для печати диаграмму помещают в табличный документ как рисунок:
ТабДок = Новый ТабличныйДокумент;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Рисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Диаграмма);
Рисунок.Расположить(ТабДок.Область("R2C2:R25C12"));
Д = Рисунок.Объект;
Д.ТипДиаграммы = ТипДиаграммы.График;
// дальше заполнение точек и серий, как в примере выше
Размер диаграммы на листе определяет область, в которую её расположили. Нужен график крупнее — расширьте диапазон строк и колонок.
Второй вариант для печатных форм — нарисовать диаграмму прямо в макете (рисунок типа «Диаграмма» в области макета), а в коде только получить её из области и заполнить. Так проще управлять оформлением: цвет, шрифт, рамку настраиваете мышкой в конфигураторе.
Готовый документ показывают пользователю или отправляют на принтер:
ТабДок.Показать("Продажи по месяцам");
// или сразу на печать:
// ТабДок.Напечатать();
Если печатную форму нужно поменять в типовой конфигурации, делайте это в расширении. Так правки не слетят при обновлении релиза.
Интерактивность: подсказки и расшифровка по клику
Диаграмма, по которой можно кликнуть и провалиться в документ, ценится пользователями намного выше статичной картинки.
Подсказки при наведении
Пятый параметр УстановитьЗначение() — текст подсказки. Его видно, когда пользователь наводит курсор на столбец или точку графика. Сюда удобно класть точную сумму, если подписи значений отключены, или комментарий: «С учётом возвратов».
Расшифровка значения
Четвёртый параметр — расшифровка: любое значение, например ссылка на контрагента или структура с периодом и складом. Её получают в обработчике выбора поля диаграммы на форме:
&НаКлиенте
Процедура ДиаграммаПродажВыбор(Элемент, ЗначениеДиаграммы, СтандартнаяОбработка)
Если ЗначениеЗаполнено(ЗначениеДиаграммы.Расшифровка) Тогда
СтандартнаяОбработка = Ложь;
ПоказатьЗначение(, ЗначениеДиаграммы.Расшифровка);
КонецЕсли;
КонецПроцедуры
Если в расшифровку положить ссылку на элемент справочника или документ, клик по столбцу откроет его карточку. Для сложных случаев передайте структуру и откройте отчёт с отбором по её полям.
Расшифровка в отчётах на СКД
В отчётах на СКД расшифровка по клику работает без кода: дважды щёлкните по значению на диаграмме, и платформа предложит те же действия, что и для ячейки таблицы — расшифровать по другому полю, открыть объект. Это одна из причин строить аналитические графики именно в СКД.
Обновление по кнопке и переключение вида
Частый сценарий дашборда: над диаграммой поле периода и переключатель типа. По изменению периода вызывайте серверную процедуру заполнения. Для переключателя достаточно присвоить новое значение ТипДиаграммы, данные перезаливать не нужно.
Выгрузка диаграммы в Excel, PDF и офисные приложения
Диаграмма в 1С выгружается вместе с табличным документом, в котором она лежит. Отдельной команды «выгрузить только график» нет.
Как сохранить вручную
- Сформируйте отчёт с диаграммой.
- Нажмите кнопку сохранения на панели отчёта или
Ctrl+S. - Выберите формат: Excel (
.xlsx), PDF, Word (.docx) или табличный документ (.mxl).
В PDF и .mxl диаграмма сохраняется так же, как на экране. В Excel и Word она попадает картинкой: редактировать её как родную диаграмму Excel не получится.
Программная выгрузка
ТабДок.Записать("C:\Отчеты\Продажи.xlsx", ТипФайлаТабличногоДокумента.XLSX);
ТабДок.Записать("C:\Отчеты\Продажи.pdf", ТипФайлаТабличногоДокумента.PDF);
Код выполняется там, где он запущен. В серверной процедуре файл ляжет на диск сервера 1С, а не на компьютер пользователя. Для выгрузки пользователю сохраните файл во временное хранилище и передайте на клиент, либо дайте пользователю сохранить отчёт штатной командой.
Когда нужна живая диаграмма в Excel
Если финансист хочет крутить график сам, выгружайте не картинку, а данные:
| Способ | Что получит пользователь | Минусы |
|---|---|---|
Сохранить отчёт в .xlsx | Таблица + картинка диаграммы | График не редактируется |
| Выгрузить только таблицу данных | Чистые цифры на листе | Диаграмму строят в Excel сами |
| Точная копия экрана | Данные не скопировать в расчёты |
Практичный компромисс: в варианте отчёта держите и таблицу, и диаграмму. В Excel уйдут цифры, по которым за минуту строится своя диаграмма, а картинка рядом покажет, как это выглядело в 1С.
Частые ошибки при работе с диаграммами в 1С
- 🧱 Слишком много точек или серий. Группировка по номенклатуре на 400 позиций превращает гистограмму в штрихкод. Ставьте в точки укрупнённые группировки или ограничивайте выборку топом по сумме.
- 🥧 Круговая на несколько серий. Круговая диаграмма показывает структуру одного показателя. Для сравнения структуры по периодам берите нормированную гистограмму.
- 🔁 Точки и серии перепутаны. Если вместо 12 месяцев по горизонтали вы видите 12 столбиков одного цвета в легенде, поменяйте группировки местами между узлами «Точки» и «Серии».
- 🗓️ Пропущенные периоды. На графике по месяцам месяц без продаж просто исчезает, и линия «перепрыгивает». В СКД включите дополнение периодов у группировки по периоду, в коде добавляйте точки на все месяцы, даже с нулём.
- 💾 Вариант не сохранён. Диаграмма, добавленная в настройку, живёт до закрытия отчёта. Чтобы она осталась, сохраните вариант.
- 🧮 Сравнение на разных шкалах. Выручка в миллионах и количество в штуках на одной оси: штуки лягут в ноль. Разнесите их на две диаграммы.
Можно ли построить диаграмму в 1С без конфигуратора?
Почему диаграмма пустая, хотя таблица в отчёте заполнена?
ОбновлениеВключено = Истина.