Диаграмма в отчете 1С 8.3: от настроек пользователя до кода
Содержание
Чтобы сделать отчет с диаграммой в 1С 8.3, добавьте в структуру отчета на системе компоновки данных (СКД) элемент «Диаграмма», задайте точки (что по горизонтали), серии (чем раскрашивать) и ресурс (какую сумму показывать). Бухгалтер делает это в расширенных настройках готового отчета, программист — в схеме компоновки или кодом.
Ниже три рабочих пути: без Конфигуратора, через схему СКД во внешнем отчете и программно. Плюс то, на чем спотыкаются чаще всего: пустая диаграмма, каша из 365 столбиков и картинка вместо живого графика в Excel.
Подготовка данных для диаграммы: что нужно до первого клика
Диаграмма в 1С не считает сама. Она рисует то, что пришло из запроса отчета. Поэтому сначала решите три вопроса.
📌 Что показываем. Это число, которое суммируется: выручка, остаток, количество, начисленная зарплата. В СКД такое поле должно быть ресурсом. Не ресурс — значит, диаграмма его не увидит или покажет количество строк.
📌 По какой оси. Это точки: месяцы, контрагенты, номенклатура, подразделения. Для динамики почти всегда берут период с группировкой по месяцу или кварталу.
📌 Чем разбить. Это серии: склады, организации, статьи. Серии необязательны. Если их нет, каждый ресурс сам становится серией.
| Задача | Точки | Серии | Тип диаграммы |
|---|---|---|---|
| Выручка по месяцам | Период (месяц) | — | Гистограмма или график |
| Доля покупателей в продажах | Контрагент | — | Круговая |
| Продажи по складам в динамике | Период (месяц) | Склад | График или гистограмма с накоплением |
| Сравнение план/факт | Подразделение | — (два ресурса) | Гистограмма |
Больше 12–15 точек на гистограмме читать трудно. Для «топа покупателей» оставьте первые 10 через отбор или сортировку по убыванию ресурса, остальное пусть уйдет в таблицу.
Отчет с диаграммой без Конфигуратора: настройки пользователя
Большинство отчетов типовых конфигураций (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) построены на СКД. Значит, диаграмму в них можно добавить прямо в пользовательском режиме.
Шаги в готовом отчете
- Откройте нужный отчет и сформируйте его хотя бы один раз, чтобы убедиться, что данные есть.
- Нажмите кнопку
Настройкив командной панели отчета. - Переключите вид настроек на расширенный (переключатель вида находится в верхней части окна настроек).
- Перейдите на вкладку со структурой отчета.
- Добавьте новый элемент структуры и выберите вариант «Диаграмма» — через кнопку добавления или контекстное меню.
- Внутри диаграммы добавьте группировку в Точки (например,
Период) и при необходимости в Серии. - Для самой диаграммы на вкладке выбранных полей отметьте ресурс — сумму или количество.
- В параметрах вывода диаграммы задайте тип: гистограмма, круговая, график.
- Нажмите
Закрыть и сформировать.
Как не потерять настройку
После закрытия отчета настройки часто сбрасываются к варианту по умолчанию. Чтобы диаграмма открывалась сама:
- 💾 сохраните текущие настройки как новый вариант отчета (команда сохранения варианта есть в меню
Ещё); - 👥 при сохранении можно отметить, показывать ли вариант только вам или всем пользователям;
- ⭐ добавьте вариант в избранное, чтобы открывать его в один клик.
Не перезаписывайте типовой вариант отчета, на который опираются коллеги. Сохраняйте свой — с понятным названием, например «Выручка по месяцам — диаграмма».
Диаграмма через схему компоновки данных (СКД) во внешнем отчете
Если нужного отчета в конфигурации нет, проще всего собрать внешний отчет
. Он открывается через Файл → Открыть и не требует изменения конфигурации.
Шаг 1. Создайте отчет и схему
- В Конфигураторе:
Файл → Новый → Внешний отчет. - Нажмите
Открыть схему компоновки данныхи создайте новую схему. - Добавьте набор данных «Запрос» и откройте конструктор запроса.
Пример запроса для выручки по месяцам из регистра бухгалтерии (БП 3.0, обороты 90.01 в разрезе месяца):
ВЫБРАТЬ
ХозрасчетныйОбороты.Период КАК Период,
ХозрасчетныйОбороты.СуммаОборотКт КАК Выручка
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(
&НачалоПериода,
&КонецПериода,
Месяц,
Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД),
,
,
,
) КАК ХозрасчетныйОбороты
Имя предопределенного счета проверьте в своей базе: откройте план счетов в Конфигураторе и посмотрите имя субсчета 90.01.1. Если не хотите зависеть от имени, передайте счет параметром.
Шаг 2. Отметьте ресурс
На вкладке Ресурсы перенесите поле Выручка и выберите выражение Сумма(Выручка). Без этого шага диаграмма останется пустой.
Шаг 3. Соберите диаграмму в настройках
- Перейдите на вкладку
Настройки. - В структуре щелкните правой кнопкой по корню
Отчети выберитеНовая диаграмма. - В диаграмме добавьте группировку Точки по полю
Период. - Выделите диаграмму, на вкладке
Выбранные поляперенеситеВыручка. - На вкладке
Другие настройкинайдите параметрТип диаграммыи выберите, например,Гистограмма. - Там же можно задать заголовок вывода.
Чтобы рядом с графиком была таблица с цифрами, добавьте в структуру отдельную группировку Период с детальными записями. Тогда отчет выведет сначала диаграмму, потом таблицу.
Для периода по месяцам удобно в свойствах поля на вкладке Наборы данных задать формат ДФ='MMMM yyyy'. Подписи точек станут читаемыми: «март 2026» вместо «01.03.2026 0:00:00».
Программное создание диаграмм на встроенном языке 1С
Код нужен, когда диаграмма живет на форме обработки, в рабочем месте руководителя или ее нужно собрать из произвольных данных, а не из запроса СКД.
Диаграмма на управляемой форме
На форме создайте реквизит типа Диаграмма и перетащите его в элементы — получится поле диаграммы. Заполнение на сервере:
&НаСервере
Процедура ЗаполнитьДиаграммуНаСервере()
Д = ДиаграммаВыручки; // реквизит формы типа Диаграмма
Д.Обновление = Ложь; // не перерисовывать на каждой точке
Д.Очистить();
Д.ТипДиаграммы = ТипДиаграммы.Гистограмма;
Д.ОтображатьЛегенду = Истина;
Серия = Д.УстановитьСерию("Выручка");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ) КАК Месяц,
| СУММА(Продажи.Сумма) КАК Сумма
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|СГРУППИРОВАТЬ ПО
| НАЧАЛОПЕРИОДА(Продажи.Период, МЕСЯЦ)
|УПОРЯДОЧИТЬ ПО
| Месяц";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Точка = Д.УстановитьТочку(Формат(Выборка.Месяц, "ДФ='MMM yy'"));
Д.УстановитьЗначение(Точка, Серия, Выборка.Сумма);
КонецЦикла;
Д.Обновление = Истина;
КонецПроцедуры
Имя регистра Продажи здесь условное: подставьте регистр своей конфигурации.
Диаграмма внутри табличного документа
Для печатной формы или отчета без СКД диаграмму добавляют как рисунок табличного документа:
Рисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Диаграмма);
Рисунок.Расположить(ТабДок.Область("R2C2:R20C10"));
Д = Рисунок.Объект; // объект типа Диаграмма
Д.ТипДиаграммы = ТипДиаграммы.Круговая;
// далее УстановитьСерию / УстановитьТочку / УстановитьЗначение, как выше
Диаграмма в настройках СКД из кода
Если отчет уже на СКД, диаграмму можно добавить в структуру настроек программно:
Настройки = КомпоновщикНастроек.Настройки;
Диаграмма = Настройки.Структура.Добавить(Тип("ДиаграммаКомпоновкиДанных"));
Точки = Диаграмма.Точки.Добавить();
ПолеГр = Точки.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГр.Поле = Новый ПолеКомпоновкиДанных("Период");
ВыбПоле = Диаграмма.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбПоле.Поле = Новый ПолеКомпоновкиДанных("Выручка");
Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра("ТипДиаграммы", ТипДиаграммы.График);
Интерактивная диаграмма: расшифровка, подсказки, выбор точки
Статичная картинка отвечает на вопрос «сколько». Интерактив отвечает на «а из чего это сложилось».
Расшифровка в отчете на СКД
В отчетах на СКД расшифровка по диаграмме работает так же, как по ячейке таблицы. Двойной щелчок по столбику открывает меню расшифровки: можно провалиться в детальные записи, сгруппировать по другому полю или открыть документ. Ничего программировать не нужно, если отчет выводится стандартным механизмом с данными расшифровки.
Своя обработка щелчка на форме
Метод УстановитьЗначение принимает еще два необязательных параметра — расшифровку и подсказку:
Д.УстановитьЗначение(Точка, Серия, Выборка.Сумма,
Выборка.Месяц, // расшифровка
"Выручка: " + Формат(Выборка.Сумма, "ЧДЦ=2")); // подсказка
Подсказка всплывает при наведении. Расшифровку получают в обработчике события выбора у поля диаграммы на форме: по ней можно открыть список документов за выбранный месяц или перестроить вторую диаграмму.
Что дать пользователю переключать
- 🔁 тип диаграммы — через параметр варианта или переключатель на форме;
- 🎨 цвет серии — свойство
Цвету серии, напримерСерия.Цвет = WebЦвета.ТемноСиний; - 📅 период — через быстрые настройки отчета, чтобы не лезть в расширенные.
Выгрузка отчета с диаграммой в Excel, PDF и картинку
Отчет сохраняют как обычный табличный документ: кнопка сохранения в командной панели отчета или Ещё → Сохранить как, затем выбор формата.
| Формат | Что будет с диаграммой | Когда брать |
|---|---|---|
| XLSX | Встанет картинкой, без связи с ячейками | Отправить руководителю «как есть» |
| Картинка в хорошем качестве | Печать, архив, письмо | |
| MXL | Сохранится как объект 1С | Открыть потом в 1С |
| HTML | Картинка рядом с таблицей | Публикация во внутренней сети |
Перед выгрузкой проверьте, как диаграмма ляжет на страницу. Широкая гистограмма на 12 месяцев обычно лучше смотрится в альбомной ориентации: ее меняют в параметрах страницы табличного документа перед сохранением в PDF или печатью. Если диаграмма обрезается справа, уменьшите ее размер в настройках вывода или сократите число точек.
Живой диаграммы Excel из 1С не получится: в книге будет изображение, и при правке цифр оно не поменяется. Если нужна редактируемая диаграмма, выгрузите только таблицу (вариант отчета без элемента «Диаграмма») и постройте график уже в Excel по этим ячейкам.
Для отправки картинки письмом или в мессенджер используйте метод ПолучитьКартинку объекта Диаграмма: он возвращает Картинка, которую можно записать в файл или вложить в письмо.
Карт = Д.ПолучитьКартинку(800, 450);
Карт.Записать(КаталогВременныхФайлов() + "vyruchka.png");
Продвинутые техники: динамика, дашборды, другие виды диаграмм
Автообновление на форме
Для рабочего места руководителя подключите обработчик ожидания, который раз в несколько минут вызывает серверную процедуру заполнения:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("ОбновитьДиаграмму", 300); // каждые 5 минут
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДиаграмму() Экспорт
ЗаполнитьДиаграммуНаСервере();
КонецПроцедуры
Не ставьте интервал в секунды на тяжелых запросах к регистру бухгалтерии: каждый вызов — нагрузка на сервер.
Отчет на начальной странице и рассылка
- 🏠 Вариант отчета с диаграммой можно вывести на начальную страницу через ее настройку — получится простой дашборд без программирования.
- 📧 В типовых конфигурациях на БСП есть рассылки отчетов: вариант с диаграммой уходит по расписанию на почту в PDF или XLSX.
Если стандартной диаграммы не хватает
Когда пользователю нужны срезы «на лету» — перетаскивать поля, менять группировки, фильтровать мышкой, — диаграмма СКД начинает упираться в рамки. Тогда честнее выгрузить таблицу в Excel и построить сводную таблицу со сводной диаграммой. Для регулярной управленческой отчетности такая схема часто живет дольше, чем доработки в базе.
Не только гистограммы
Кроме обычной диаграммы, платформа умеет:
- 📊 диаграмму Ганта — сроки задач, графики отпусков, загрузку ресурсов;
- 🎯 измерительную диаграмму — «спидометр» выполнения плана;
- 🌳 дендрограмму — иерархию, например структуру подразделений.
У каждой свой тип реквизита формы и свои методы заполнения, поэтому код из раздела выше к ним напрямую не подходит.
Почему диаграмма в отчете пустая или кривая
Если в серии оказались не склады, а сотни номенклатурных позиций, проверьте, что поле не попало в «Серии» вместо «Точек». Серий должно быть немного — до 5–7, иначе легенда займет пол-экрана.