Книга знаний

1С:Предприятие / Объекты конфигурации / Отчеты

Ширина диаграммы по ширине таблицы

Как в отчете для диаграммы установить ширину, равную ширине таблицы? Если при этом ширина таблица может быть разной?AlexYa
Последняя редакция №0 от 25.08.11
URL: http://kb.mista.ru/article.php?id=839

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


Выкладываю решение по одному старому вопросу. Собрано из разрозненного опыта мистян и собственного. Работает!

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

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


Пояснение к строчкам
 
    НайденнаяОбласть = ДокументРезультат.НайтиТекст("Итого");
    Если НайденнаяОбласть <> Неопределено Тогда
        ТекущаяСтрока = НайденнаяОбласть.Верх - 1; //В итого могут быть объединенные ячейки, поэтому берем предыдущую

Поскольку, как правило, в отчетах есть строка итогов и, как правило, количество колонок в строке над итогами соответствует атрибуту табличного документа ШиринаТаблицы, то берем для расчета ширины строку над итогами.

Этот вопрос поднимался в следующих темах:
v8: Как изменить ширину диаграммы
v8: СКД: Как растянуть в ширину диаграмму в отчете?
v8: Отчет-диаграмма формируется через компоновкуданных.Как увеличить область диаграммы?
v8: Установка размера диаграммы

Но прорывом была тема
v8: Табличный документ. Разная высота строк в разных колонках.

Спасибо, Mitriy (http://forum.mista.ru/users.php?id=33170), за идею!
Закладка

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2011 | Mista.ru

Яндекс.Метрика