Имя: Пароль:
1C
 
Как заполнить и вывести диаграмму в табличном документе ?
0 Prost
 
08.11.04
11:35
Есть отчет, который выводит в табличный документ какую-то таблицу на основании макета.
В макете есть область с диаграммой. Не могу отобразить заполненную диаграмму в таблице док-та. Диаграмму заполняю вручную через Серии.Добавить, Точки.Добавить и УстановитьЗначение.
В книге Митичкина есть пример с диаграммой в форме, а примера с диаграммой в табдоке нету....
1 Волшебник
 
08.11.04
11:44
Митичкина на мыло...
2 Prost
 
08.11.04
11:47
Да ладно. Посоветуй.
3 Волшебник
 
08.11.04
11:51
Покажи программный код
4 Prost
 
08.11.04
11:53
Процедура Вывести()
   Таб=Новый ТабличныйДокумент;
   таб.ТолькоПросмотр=Ложь;
   Макет=Отчеты.АнализПоказателя.ПолучитьМакет("Макет");
   облдиаг=макет.ПолучитьОбласть("График");
   д=облдиаг.Рисунки[0];
   Сообщить("Тип-"+д);
   диаг=облдиаг.Рисунки[0].Заполнение;
//    диаг=Новый Диаграмма;
   диаг.Обновление=Ложь;
   диаг.Серии.Добавить("План");
   диаг.Серии.Добавить("Факт");
   обл=макет.ПолучитьОбласть("ШапкаТаблицы");
   обл.Параметры.имя=""+Показатель+"   ,   "+Показатель.едиз;
   обл.Параметры.период=?(ДатаНач=ДатаКон,"за "+Формат(ДатаНач,"ЧГ=0")+" год","за "+Формат(ДатаНач,"ЧГ=0")+"-"+Формат(ДатаКон,"ЧГ=0")+" год");
   Таб.Вывести(обл);
   Таб.Вывести(макет.ПолучитьОбласть("заголовок"));
   дата1=дата(датанач,1,1);
   дата2=дата(датакон,12,31);
   спр=справочники.Задачи;
   плф=Справочники.ПланФакт;
   Если показатель.ЭтоГруппа Тогда
//        спр.ИспользоватьРодителя(показатель);
   КонецЕсли;
   спрвыб=спр.Выбрать();
   Пока спрвыб.Следующий() Цикл
//        // берем только один элемент справочника
       зад=спрвыб.Ссылка;
       Если не показатель.Этогруппа Тогда
           Если показатель<>зад Тогда
               Продолжить;
           КонецЕсли;
       КонецЕсли;
       колточек=-1;
       пф=плф.Выбрать(,зад,,"Код");
       Пока пф.Следующий() Цикл
           текгод=0+Лев(пф.код,4);
           текмес=0+Прав(пф.код,2);
//Сообщить("ТекГод-"+текгод+"+ДатаКон-"+ДатаКон);
           Если (текгод<=ДатаКон)и(текгод>=ДатаНач) Тогда
//Сообщить("пф-"+пф);
               обл=макет.ПолучитьОбласть("ДеталиПФ");
               обл.Параметры.пф=пф;
               обл.Параметры.пф_план=пф.План;
               обл.Параметры.пф_факт=пф.Факт;
               обл.Параметры.зад_НижнПред=зад.НижнПред;
               обл.Параметры.зад_ВерхПред=зад.ВерхПред;
               нпЧис=пф.План-пф.План*зад.НижнПред/100;
               впЧис=пф.План-пф.План*зад.ВерхПред/100;
               Если пф.Факт<=нпЧис Тогда
                   обл.Параметры.откл=пф.Факт-нпЧис;
               ИначеЕсли пф.Факт>=впЧис Тогда
                   обл.Параметры.откл=пф.Факт-впЧис;
               КонецЕсли;
               колточек=колточек+1;
               диаг.Точки.Добавить(пф.Наименование);
               диаг.УстановитьЗначение(колточек,0,пф.План);
               диаг.УстановитьЗначение(колточек,1,пф.Факт);
               Таб.Вывести(обл);
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
//    //
//    обл=макет.ПолучитьОбласть("График");
//    обл.Параметры.едиз=зад.ЕдИз;
//    Таб.Вывести(обл);
   диаг.Обновление=Истина;
//    облдиаг.Рисунки[0]=Диаг;
   Таб.Вывести(облдиаг);
   Таб.Показать();
КонецПроцедуры
5 Prost
 
08.11.04
12:04
В макете в области "График" вставлен Рисунок "Диаг" типа График
6 Prost
 
08.11.04
14:08
Может так ?
макет.Рисунки.Диаг.Объект=диаг;
, но выходит ошибка "Недоступен для записи"
7 Prost
 
09.11.04
14:25
А надо было наоборот :))
диаг=макет.Рисунки.Диаг.Объект;

Все вопросов больше нет.
8 Волшебник
 
09.11.04
14:25
Главное - не мешать человеку!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн