Как масштабировать и растянуть диаграмму в отчете 1С на весь экран?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Способ 1: Использование «Условного оформления» в СКД

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

  1. Откроем Схему компоновки данных и перейдем на вкладку Настройки.
  2. В дереве настроек выберем именно тот элемент, который отвечает за вывод диаграммы.
  3. В нижней части экрана перейдем на вкладку Условное оформление.
  4. Создадим новое правило оформления. В поле Оформление нажмем на кнопку выбора и найдем параметры: Минимальная ширина, Максимальная ширина, Минимальная высота и Максимальная высота.
  5. Установим значения в пикселях или миллиметрах. Проанализируем ситуацию: если мы хотим, чтобы диаграмма была «на весь экран», стоит задать Минимальную ширину порядка 300–400 единиц.
  6. На вкладке Оформляемые поля выберем нашу диаграмму.

Важно помнить, что 1С интерпретирует эти значения как рекомендации для генератора табличного документа. Если диаграмма находится внутри группировки, ее размер будет ограничен родительскими контейнерами.

Способ 2: Использование собственных макетов (Макетирование)

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

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

Для реализации этого метода:

  1. На вкладке Макеты добавим новый Макет группировки.
  2. Укажем имя группировки, которая выводит диаграмму.
  3. В области макета выделим нужный диапазон ячеек и объединим их.
  4. Вставим в эту область объект типа Рисунок (Диаграмма).
  5. В свойствах рисунка укажем имя, совпадающее с именем поля в настройках СКД.

Способ 3: Программная корректировка размеров

Как отмечалось в обсуждении, диаграмма в результирующем отчете — это объект коллекции Рисунки табличного документа. Мы можем перехватить момент формирования отчета и принудительно изменить размеры этого рисунка. Посмотрим на пример реализации в модуле отчета:


Процедура ПриКомпоновкеРезультата(РезультатСформулирован, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    // Выполняем стандартную компоновку
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки());
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    // Работаем с результатом компоновки (Табличным документом)
    Для Каждого Рисунок Из Результат.Рисунки Цикл
        Если ТипЗнч(Рисунок.Объект) = Тип("Диаграмма") Тогда
            // Устанавливаем размер в миллиметрах
            Рисунок.Ширина = 400; 
            Рисунок.Высота = 200;
            // Можно также настроить тип размещения
            Рисунок.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

В данном коде мы проанализируем все рисунки в итоговом документе. Если объект рисунка является диаграммой, мы принудительно устанавливаем Ширина и Высота. Это наиболее надежный способ для толстого клиента, однако стоит учитывать замечание из обсуждения: в Веб-клиенте работа с коллекцией рисунков напрямую может иметь ограничения.

Способ 4: Оптимизация состава диаграммы

Иногда диаграмма кажется маленькой не из-за своих физических размеров, а из-за того, что полезное пространство занято лишними элементами. Разберем, как освободить место под сам график:

Работа в Веб-клиенте и масштабирование формы

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

  1. Убедитесь, что для поля документа включено РастягиватьПоГоризонтали и РастягиватьПоВертикали.
  2. В коде формы можно использовать свойство Автомасштаб для табличного документа. Это заставит платформу пытаться вписать содержимое в видимую область экрана пользователя.

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


// Пример установки параметра периода, который косвенно влияет на плотность данных
КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", Объект.ПериодОтчета);

Подводя итог, можно сказать, что универсальной кнопки «Сделать красиво» не существует. Наилучший результат дает сочетание Условного оформления для задания базовых размеров и оптимизации легенды для максимального использования экранного пространства. Если же требуется строгое соответствие корпоративному стандарту, использование Макетов остается самым предсказуемым вариантом.

← На главную