Диаграмма в отчете 1С 8.3: от настроек пользователя до кода

· 9 мин

Содержание

Чтобы сделать отчет с диаграммой в 1С 8.3, добавьте в структуру отчета на системе компоновки данных (СКД) элемент «Диаграмма», задайте точки (что по горизонтали), серии (чем раскрашивать) и ресурс (какую сумму показывать). Бухгалтер делает это в расширенных настройках готового отчета, программист — в схеме компоновки или кодом.

Ниже три рабочих пути: без Конфигуратора, через схему СКД во внешнем отчете и программно. Плюс то, на чем спотыкаются чаще всего: пустая диаграмма, каша из 365 столбиков и картинка вместо живого графика в Excel.

Подготовка данных для диаграммы: что нужно до первого клика

Диаграмма в 1С не считает сама. Она рисует то, что пришло из запроса отчета. Поэтому сначала решите три вопроса.

📌 Что показываем. Это число, которое суммируется: выручка, остаток, количество, начисленная зарплата. В СКД такое поле должно быть ресурсом. Не ресурс — значит, диаграмма его не увидит или покажет количество строк.

📌 По какой оси. Это точки: месяцы, контрагенты, номенклатура, подразделения. Для динамики почти всегда берут период с группировкой по месяцу или кварталу.

📌 Чем разбить. Это серии: склады, организации, статьи. Серии необязательны. Если их нет, каждый ресурс сам становится серией.

ЗадачаТочкиСерииТип диаграммы
Выручка по месяцамПериод (месяц)—Гистограмма или график
Доля покупателей в продажахКонтрагент—Круговая
Продажи по складам в динамикеПериод (месяц)СкладГрафик или гистограмма с накоплением
Сравнение план/фактПодразделение— (два ресурса)Гистограмма

Больше 12–15 точек на гистограмме читать трудно. Для «топа покупателей» оставьте первые 10 через отбор или сортировку по убыванию ресурса, остальное пусть уйдет в таблицу.

Отчет с диаграммой без Конфигуратора: настройки пользователя

Большинство отчетов типовых конфигураций (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) построены на СКД. Значит, диаграмму в них можно добавить прямо в пользовательском режиме.

Шаги в готовом отчете

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

Как не потерять настройку

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

  • 💾 сохраните текущие настройки как новый вариант отчета (команда сохранения варианта есть в меню Ещё);
  • 👥 при сохранении можно отметить, показывать ли вариант только вам или всем пользователям;
  • ⭐ добавьте вариант в избранное, чтобы открывать его в один клик.

Не перезаписывайте типовой вариант отчета, на который опираются коллеги. Сохраняйте свой — с понятным названием, например «Выручка по месяцам — диаграмма».

Диаграмма через схему компоновки данных (СКД) во внешнем отчете

Если нужного отчета в конфигурации нет, проще всего собрать внешний отчет . Он открывается через Файл → Открыть и не требует изменения конфигурации.

Шаг 1. Создайте отчет и схему

  1. В Конфигураторе: Файл → Новый → Внешний отчет.
  2. Нажмите Открыть схему компоновки данных и создайте новую схему.
  3. Добавьте набор данных «Запрос» и откройте конструктор запроса.

Пример запроса для выручки по месяцам из регистра бухгалтерии (БП 3.0, обороты 90.01 в разрезе месяца):

ВЫБРАТЬ
    ХозрасчетныйОбороты.Период КАК Период,
    ХозрасчетныйОбороты.СуммаОборотКт КАК Выручка
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(
        &НачалоПериода,
        &КонецПериода,
        Месяц,
        Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД),
        ,
        ,
        ,
    ) КАК ХозрасчетныйОбороты

Имя предопределенного счета проверьте в своей базе: откройте план счетов в Конфигураторе и посмотрите имя субсчета 90.01.1. Если не хотите зависеть от имени, передайте счет параметром.

Шаг 2. Отметьте ресурс

На вкладке Ресурсы перенесите поле Выручка и выберите выражение Сумма(Выручка). Без этого шага диаграмма останется пустой.

Шаг 3. Соберите диаграмму в настройках

  1. Перейдите на вкладку Настройки.
  2. В структуре щелкните правой кнопкой по корню Отчет и выберите Новая диаграмма.
  3. В диаграмме добавьте группировку Точки по полю Период.
  4. Выделите диаграмму, на вкладке Выбранные поля перенесите Выручка.
  5. На вкладке Другие настройки найдите параметр Тип диаграммы и выберите, например, Гистограмма.
  6. Там же можно задать заголовок вывода.

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

Для периода по месяцам удобно в свойствах поля на вкладке Наборы данных задать формат ДФ='MMMM yyyy'. Подписи точек станут читаемыми: «март 2026» вместо «01.03.2026 0:00:00».

Программное создание диаграмм на встроенном языке 1С

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

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

На форме создайте реквизит типа Диаграмма и перетащите его в элементы — получится поле диаграммы. Заполнение на сервере:

&НаСервере
Процедура ЗаполнитьДиаграммуНаСервере()

    Д = ДиаграммаВыручки; // реквизит формы типа Диаграмма
    Д.Обновление = Ложь;   // не перерисовывать на каждой точке
    Д.Очистить();
    Д.ТипДиаграммы = ТипДиаграммы.Гистограмма;
    Д.ОтображатьЛегенду = Истина;

    Серия = Д.УстановитьСерию("Выручка");

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

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

    Д.Обновление = Истина;

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

Имя регистра Продажи здесь условное: подставьте регистр своей конфигурации.

Диаграмма внутри табличного документа

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

Рисунок = ТабДок.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Диаграмма);
Рисунок.Расположить(ТабДок.Область("R2C2:R20C10"));
Д = Рисунок.Объект; // объект типа Диаграмма
Д.ТипДиаграммы = ТипДиаграммы.Круговая;
// далее УстановитьСерию / УстановитьТочку / УстановитьЗначение, как выше

Диаграмма в настройках СКД из кода

Если отчет уже на СКД, диаграмму можно добавить в структуру настроек программно:

Настройки = КомпоновщикНастроек.Настройки;
Диаграмма = Настройки.Структура.Добавить(Тип("ДиаграммаКомпоновкиДанных"));

Точки = Диаграмма.Точки.Добавить();
ПолеГр = Точки.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГр.Поле = Новый ПолеКомпоновкиДанных("Период");

ВыбПоле = Диаграмма.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбПоле.Поле = Новый ПолеКомпоновкиДанных("Выручка");

Диаграмма.ПараметрыВывода.УстановитьЗначениеПараметра("ТипДиаграммы", ТипДиаграммы.График);

Интерактивная диаграмма: расшифровка, подсказки, выбор точки

Статичная картинка отвечает на вопрос «сколько». Интерактив отвечает на «а из чего это сложилось».

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

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

Своя обработка щелчка на форме

Метод УстановитьЗначение принимает еще два необязательных параметра — расшифровку и подсказку:

Д.УстановитьЗначение(Точка, Серия, Выборка.Сумма,
    Выборка.Месяц,                                  // расшифровка
    "Выручка: " + Формат(Выборка.Сумма, "ЧДЦ=2"));  // подсказка

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

Что дать пользователю переключать

  • 🔁 тип диаграммы — через параметр варианта или переключатель на форме;
  • 🎨 цвет серии — свойство Цвет у серии, например Серия.Цвет = WebЦвета.ТемноСиний;
  • 📅 период — через быстрые настройки отчета, чтобы не лезть в расширенные.

Выгрузка отчета с диаграммой в Excel, PDF и картинку

Отчет сохраняют как обычный табличный документ: кнопка сохранения в командной панели отчета или Ещё → Сохранить как, затем выбор формата.

ФорматЧто будет с диаграммойКогда брать
XLSXВстанет картинкой, без связи с ячейкамиОтправить руководителю «как есть»
PDFКартинка в хорошем качествеПечать, архив, письмо
MXLСохранится как объект 1СОткрыть потом в 1С
HTMLКартинка рядом с таблицейПубликация во внутренней сети

Перед выгрузкой проверьте, как диаграмма ляжет на страницу. Широкая гистограмма на 12 месяцев обычно лучше смотрится в альбомной ориентации: ее меняют в параметрах страницы табличного документа перед сохранением в PDF или печатью. Если диаграмма обрезается справа, уменьшите ее размер в настройках вывода или сократите число точек.

Живой диаграммы Excel из 1С не получится: в книге будет изображение, и при правке цифр оно не поменяется. Если нужна редактируемая диаграмма, выгрузите только таблицу (вариант отчета без элемента «Диаграмма») и постройте график уже в Excel по этим ячейкам.

Для отправки картинки письмом или в мессенджер используйте метод ПолучитьКартинку объекта Диаграмма: он возвращает Картинка, которую можно записать в файл или вложить в письмо.

Карт = Д.ПолучитьКартинку(800, 450);
Карт.Записать(КаталогВременныхФайлов() + "vyruchka.png");

Продвинутые техники: динамика, дашборды, другие виды диаграмм

Автообновление на форме

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ПодключитьОбработчикОжидания("ОбновитьДиаграмму", 300); // каждые 5 минут
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьДиаграмму() Экспорт
    ЗаполнитьДиаграммуНаСервере();
КонецПроцедуры

Не ставьте интервал в секунды на тяжелых запросах к регистру бухгалтерии: каждый вызов — нагрузка на сервер.

Отчет на начальной странице и рассылка

  • 🏠 Вариант отчета с диаграммой можно вывести на начальную страницу через ее настройку — получится простой дашборд без программирования.
  • 📧 В типовых конфигурациях на БСП есть рассылки отчетов: вариант с диаграммой уходит по расписанию на почту в PDF или XLSX.

Если стандартной диаграммы не хватает

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

Не только гистограммы

Кроме обычной диаграммы, платформа умеет:

  • 📊 диаграмму Ганта — сроки задач, графики отпусков, загрузку ресурсов;
  • 🎯 измерительную диаграмму — «спидометр» выполнения плана;
  • 🌳 дендрограмму — иерархию, например структуру подразделений.

У каждой свой тип реквизита формы и свои методы заполнения, поэтому код из раздела выше к ним напрямую не подходит.

Почему диаграмма в отчете пустая или кривая

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

Если в серии оказались не склады, а сотни номенклатурных позиций, проверьте, что поле не попало в «Серии» вместо «Точек». Серий должно быть немного — до 5–7, иначе легенда займет пол-экрана.

Частые вопросы по отчетам с диаграммами

Можно ли добавить диаграмму в отчет без СКД, например в старый отчет на макете?
Да, программно: через рисунок табличного документа типа «Диаграмма». В пользовательском режиме — нет, настройки структуры есть только у отчетов на СКД.
Нужны ли права администратора, чтобы сохранить вариант с диаграммой?
Для своего варианта — обычно нет. Чтобы сделать вариант доступным всем пользователям, нужны права на изменение общих вариантов отчетов.
Почему внешний отчет с диаграммой работает у меня и не работает в облаке 1С:Фреш?
В сервисе внешние отчеты допускаются после проверки и в безопасном режиме. Если отчет обращается к файлам или внешним ресурсам, его не пропустят.
Как показать в одной диаграмме план и факт?
Сделайте два ресурса — «План» и «Факт» — и отметьте оба в выбранных полях диаграммы. Без серий каждый ресурс станет отдельной серией со своим цветом.
Можно ли вывести в один отчет несколько диаграмм?
Да. Добавьте в структуру несколько элементов «Диаграмма» подряд, у каждого свои точки, серии и тип.