К статье
Практический материал

Отчеты и Аналитика · 9 мин

Как сделать круговую диаграмму в 1С

Как построить круговую диаграмму в 1С: в отчёте на СКД, через диаграмму на форме и программно. Настройка серий, точек, подписей и типичные ошибки.

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

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

Где в 1С вообще строятся диаграммы

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

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

Способы построения диаграммы

Отчёт на СКД

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

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

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

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

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

Круговая диаграмма в отчёте на СКД

Откройте отчёт в конфигураторе и перейдите к схеме компоновки данных. На закладке «Ресурсы» добавьте числовой показатель, который будет отображаться долями круга, — например, СуммаОборот. На закладке «Настройки» в верхней части окна настроек выберите элемент «Диаграмма» и добавьте его в структуру отчёта. Затем у диаграммы задайте точки — измерение, по которому делится круг (Контрагент, СтатьяРасходов, НоменклатурнаяГруппа), и серии.

Тип диаграммы переключается в свойствах: выделите диаграмму в настройках, откройте палитру свойств и в поле «Тип диаграммы» выберите «Круговая» или «Круговая объёмная». Там же включаются подписи значений и процентов, легенда и заголовок. После сохранения схемы сформируйте отчёт в режиме предприятия — круг появится вместо таблицы либо рядом с ней, если в структуре присутствуют оба элемента.

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

Настройка подписей и легенды

Круг без подписей малоинформативен, особенно когда долей больше пяти. В свойствах диаграммы включите отображение значений в процентах — для круговой диаграммы это самый читаемый формат. Легенду разумно расположить справа или снизу, чтобы она не перекрывала сам круг. Если точек много (больше десятка), мелкие доли сольются в нечитаемую «кашу» — в этом случае агрегируйте их в запросе в группу «Прочие».

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

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

Точка — это сектор круга, значение точки — размер доли. Одна серия для круговой диаграммы обязательна и достаточна. Текст точки обычно берётся из представления измерения (наименование контрагента или статьи), поэтому следите, чтобы представления были короткими: длинные подписи обрезаются или наезжают друг на друга.

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

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

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

Учтите ограничение: диаграмма в табличном документе — статичная картинка. Она не перестраивается при изменении отбора на экране, для обновления нужно заново формировать документ. Если пользователям требуется интерактивность (например, расшифровка сектора по щелчку), выбирайте диаграмму на форме или отчёт на СКД с расшифровкой.

Подготовка данных: что должно быть в запросе

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

Второй момент — количество точек. Оптимально от 3 до 8 секторов. Если измерений больше, сгруппируйте хвост в запросе: выберите топ-N по сумме, а остаток объедините в строку «Прочие». Это делается через упорядочивание по убыванию суммы и условие в запросе или через итоги в СКД. Не забывайте про пустые значения измерения — контрагент «пустая ссылка» превратится в безымянный сектор, поэтому добавьте проверку на NULL и пустые ссылки.

Типичные ошибки
01
Не очищена диаграмма перед заполнением — на круге дублируются старые и новые данные
02
В данных есть отрицательные суммы — сектора искажаются или исчезают
03
Слишком много точек — круг превращается в нечитаемую мозаику, подписи наезжают
04
Добавлено несколько серий — круговая диаграмма показывает только одну серию, остальные теряются
05
Пустые ссылки в измерении — появляется безымянный сектор с заметной долей

Проверка результата и частые проблемы

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

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

Контрольные точки

Как проверить результат

Сумма долей
Норма

Сектора в сумме дают 100% и итог совпадает с таблицей

Тревожный признак

Доли не сходятся — проверьте отборы и отрицательные значения

Число секторов
Норма

3–8 читаемых секторов с подписями

Тревожный признак

Больше десятка мелких долей, подписи накладываются

Подписи точек
Норма

Каждый сектор подписан понятным наименованием

Тревожный признак

Есть безымянный сектор — пустая ссылка в измерении

Повторное формирование
Норма

Диаграмма перестраивается без дублей

Тревожный признак

Старые данные остаются — нет вызова Очистить()

FAQ

Почему круговая диаграмма показывает только одну серию?

Это ограничение самого типа диаграммы: круг отображает один ряд значений, разбитый по точкам. Если нужно сравнить несколько рядов (например, продажи по годам), используйте гистограмму, график или объёмную круговую диаграмму с несколькими кругами.

Можно ли показать на секторах и суммы, и проценты одновременно?

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

Как убрать мелкие сектора в группу «Прочие»?

Автоматической настройки «прочие» в платформе нет — группировку делают в запросе: отбирают топ-N измерений по сумме с упорядочиванием по убыванию, а остальные строки объединяют в одну с фиксированным наименованием «Прочие».

Диаграмма пустая, хотя отчёт-таблица показывает данные. В чём причина?

Чаще всего в структуру настроек не добавлен элемент «Диаграмма» или у него не заданы точки и серии. Также проверьте, что числовое поле добавлено в ресурсы на закладке «Ресурсы», — без ресурса диаграмме нечего отображать.

Как обновить диаграмму на форме при изменении отбора?

Поместите заполнение диаграммы в отдельную процедуру и вызывайте её в обработчике изменения элемента отбора. Не забудьте в начале процедуры очистить диаграмму методом Очистить(), иначе данные будут накапливаться поверх старых.

Итог

Что важно запомнить

Круговая диаграмма в 1С строится через СКД (без кода) или объект «Диаграмма» (программно). Ключевые правила: одна серия, неотрицательные значения, 3–8 точек, обязательная очистка перед заполнением и сверка суммы долей с табличными данными.