При разработке отчетов в системе 1С:Предприятие, особенно с использованием Системы компоновки данных (СКД), разработчики часто сталкиваются с проблемой: диаграмма выводится слишком мелкой, текст на осях не читается, а сам график выглядит сжатым. Стандартные настройки не всегда очевидны, а простое «растягивание» мышкой в режиме предприятия не сохраняется. Рассмотрим подробнее, как решить эту задачу различными методами, начиная от настроек в Конфигураторе и заканчивая программным кодом.
Это самый простой и правильный способ с точки зрения методологии СКД, так как он не требует написания кода и работает в рамках стандартной схемы компоновки. Разберем по шагам, как задать размеры графического объекта:
Минимальная ширина, Максимальная ширина, Минимальная высота и Максимальная высота.Минимальную ширину порядка 300–400 единиц.Важно помнить, что 1С интерпретирует эти значения как рекомендации для генератора табличного документа. Если диаграмма находится внутри группировки, ее размер будет ограничен родительскими контейнерами.
Если стандартное оформление не дает нужного результата, нам стоит прибегнуть к механизму макетов. Это позволяет жестко зафиксировать область, которую будет занимать график в итоговом табличном документе. При необходимости предоставить пользователям возможность самостоятельной настройки макетов отчетов пригодится инструмент для пользовательского редактирования макетов отчетов.
Выясним причину, почему это работает лучше: при использовании макета мы сами рисуем область (объединяем ячейки), в которую СКД должна «вписать» диаграмму. Мы можем объединить, например, 20 колонок и 30 строк, создав огромное поле для вывода данных.
Для реализации этого метода:
Рисунок (Диаграмма).Как отмечалось в обсуждении, диаграмма в результирующем отчете — это объект коллекции Рисунки табличного документа. Мы можем перехватить момент формирования отчета и принудительно изменить размеры этого рисунка. Посмотрим на пример реализации в модуле отчета:
Процедура ПриКомпоновкеРезультата(РезультатСформулирован, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
// Выполняем стандартную компоновку
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки());
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
// Работаем с результатом компоновки (Табличным документом)
Для Каждого Рисунок Из Результат.Рисунки Цикл
Если ТипЗнч(Рисунок.Объект) = Тип("Диаграмма") Тогда
// Устанавливаем размер в миллиметрах
Рисунок.Ширина = 400;
Рисунок.Высота = 200;
// Можно также настроить тип размещения
Рисунок.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
В данном коде мы проанализируем все рисунки в итоговом документе. Если объект рисунка является диаграммой, мы принудительно устанавливаем Ширина и Высота. Это наиболее надежный способ для толстого клиента, однако стоит учитывать замечание из обсуждения: в Веб-клиенте работа с коллекцией рисунков напрямую может иметь ограничения.
Иногда диаграмма кажется маленькой не из-за своих физических размеров, а из-за того, что полезное пространство занято лишними элементами. Разберем, как освободить место под сам график:
Состав диаграммы или Легенда и установите Положение: Снизу.Угол наклона меток равным 90 градусам. Это позволит выводить длинные наименования вертикально, не уменьшая ширину графика.Пропускать пустые значения, чтобы растянуть значимые данные на всю доступную область.Если отчет открывается в браузере, нам нужно убедиться, что само Поле табличного документа на форме настроено правильно. Проанализируем свойства элемента формы:
РастягиватьПоГоризонтали и РастягиватьПоВертикали.Автомасштаб для табличного документа. Это заставит платформу пытаться вписать содержимое в видимую область экрана пользователя.Для программного изменения параметров в модуле формы можно обратиться к настройкам через КомпоновщикНастроек, как было предложено в сообщении 12 форума:
// Пример установки параметра периода, который косвенно влияет на плотность данных
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", Объект.ПериодОтчета);
Подводя итог, можно сказать, что универсальной кнопки «Сделать красиво» не существует. Наилучший результат дает сочетание Условного оформления для задания базовых размеров и оптимизации легенды для максимального использования экранного пространства. Если же требуется строгое соответствие корпоративному стандарту, использование Макетов остается самым предсказуемым вариантом.