Имя: Пароль:
1C
 
Диаграмма Ганта. Подскажите
0 Невский Александр
 
30.07.10
16:28
Есть у меня отчет, называется "График ТО". Сейчас в нем при нажатии на кнопку "сформировать" идет блок с запросами, и процедурами расстановки ТО по машинам с установленными параметрами загрузки ТО и коэффициентом "предпочтения ТО" для каждой расстановки. Но сут не в этом ... При нажатии на кнопку у меня выводится диаграмма Ганта - первая в форму, вторая - в табличный документ (для печати).

Вопрос ... на форме диаграмма помещается вся, а в табличном документе нет. Подскажите, как сделать, чтобы диаграмма в табличном документе выводилась полностью?

Вот текст вывода диаграмм:

ТД = Новый ТабличныйДокумент;
   МакетОТчета = ПолучитьМакет("ГрафикТО");
   
   ОсновнаяЧасть = МакетОтчета.ПолучитьОбласть("Основная");
   ДГ = ЭлементыФормы.ДиаграммаГанта1;
   ДГ1 = ОсновнаяЧасть.Рисунки.D2.Объект;
   ДГ.Очистить();
   ДГ.ОбластьЗаголовка.Текст = "График ТО";
   ДГ.АвтоОпределениеПолногоИнтервала = Ложь;
   ДГ.УстановитьПолныйИнтервал(НачалоДня(НачПериода), КонецДня(КонПериода));
   ДГ.ЕдиницаПериодическогоВарианта=ТипЕдиницыШкалыВремени.День;
   ДГ.ПоддержкаМасштаба=ПоддержкаМасштабаДиаграммыГанта.Авто;
   
   ДГ1.Очистить();
   ДГ1.ОбластьЗаголовка.Текст = "График ТО "+ПредставлениеПериода(НачалоДня(НачПериода),КонецДня(КонПериода),"ФП=ИСТИНА");
   ДГ1.АвтоОпределениеПолногоИнтервала = ЛОЖЬ;
   ДГ1.УстановитьПолныйИнтервал(НачалоДня(НачПериода), КонецДня(КонПериода));
   ДГ1.ЕдиницаПериодическогоВарианта=ТипЕдиницыШкалыВремени.День;
   ДГ1.ПоддержкаМасштаба=ПоддержкаМасштабаДиаграммыГанта.ВсеДанные;
   ДГ1.РастягиваниеПоВертикали = РастягиваниеПоВертикалиДиаграммыГанта.НеРастягивать;
   ДГ1.ВертикальнаяПрокрутка = ИСТИНА;
   ДГ1.ОтображениеИнтервала =  ОтображениеИнтервалаДиаграммыГанта.Объемный;
   ДГ1.ПоддержкаМасштаба =  ПоддержкаМасштабаДиаграммыГанта.Авто;
   
   
   Для Каждого Эл ИЗ ДГ1.ОбластьПостроения.ШкалаВремени.Элементы Цикл
       Эл.ФорматДня = ФорматДняШкалыВремени.ДеньМесяца;
       Эл.Формат = "ДФ='dd'";
   КонецЦикла;
   
   Мас = Новый Соответствие;
   Мас1 = Новый Соответствие;    
   Для Каждого СТР ИЗ  РезПОТО22 Цикл
       ТекТ = ДГ.УстановитьТочку(Строка(СТР.ТС));
       ТекТ1 = ДГ1.УстановитьТочку(Строка(СТР.ТС));        
       Мас.Вставить(Строка(уатОбщегоНазначения.уатПрочитатьРеквизитыТС(СТР.ТС,"ГосударственныйНомер").ГосударственныйНомер),ТекТ);
       Мас1.Вставить(Строка(уатОбщегоНазначения.уатПрочитатьРеквизитыТС(СТР.ТС,"ГосударственныйНомер").ГосударственныйНомер),ТекТ1);        
   КонецЦикла;
   
   Сер = Новый Соответствие;
   Сер1 = Новый Соответствие;    
   
   Для Каждого СТР1 ИЗ ТаблицаТО.Колонки Цикл  
       Если СТР1.Имя = "ПодтверждениеПользователя" Тогда
           Продолжить;
       КонецЕсли;
       ТекС = ДГ.УстановитьСерию(Строка(СТР1.Имя));
       ТекС1 = ДГ1.УстановитьСерию(Строка(СТР1.Имя));        
       Сер.Вставить(Строка(СТР1.Имя),ТекС);
       Сер1.Вставить(Строка(СТР1.Имя),ТекС1);        
   КонецЦикла;
   
   Для Каждого Кол ИЗ ТаблицаТО.Колонки Цикл
       Если ИсклКолонки.Найти(Кол.Имя) = Неопределено Тогда    
           ТекЦвет = ТаблицаЦветовТО.НайтиСтроки(Новый Структура("ВидТО",Справочники.уатВидыОбслуживанияТС.НайтиПоНаименованию(Строка(Кол.Имя))));
           Если ТекЦвет.Количество()>0 Тогда
               Сер.Получить(Строка(Кол.Имя)).Цвет = ТекЦвет.Получить(0).Цвет;
               Сер1.Получить(Строка(Кол.Имя)).Цвет = ТекЦвет.Получить(0).Цвет;
           КонецЕсли;
       КонецЕсли;        
   КонецЦикла;
   
   ПервыйДень = НачалоМесяца(ТекущаяДата());
   
   Для Каждого СТР2 ИЗ  РезПОТО22 Цикл
       Значение = ДГ.ПолучитьЗначение(Мас.Получить(Строка(уатОбщегоНазначения.уатПрочитатьРеквизитыТС(СТР2.ТС,"ГосударственныйНомер").ГосударственныйНомер)), Сер.Получить(СокрЛП(Строка(Стр2.ВидТО.Наименование))));
       Интервал = Значение.Добавить();
       Интервал.Текст = СокрЛП(Строка(Стр2.ВидТО.Наименование));
       Интервал.Начало = СТР2.ДеньТО;
       Интервал.Конец = СТР2.ДеньТО +  24 * 60 * 60;
       
       Значение1 = ДГ1.ПолучитьЗначение(Мас1.Получить(Строка(уатОбщегоНазначения.уатПрочитатьРеквизитыТС(СТР2.ТС,"ГосударственныйНомер").ГосударственныйНомер)), Сер1.Получить(СокрЛП(Строка(Стр2.ВидТО.Наименование))));
       Интервал = Значение1.Добавить();
       Интервал.Текст = СТР2.ВидТО.Наименование;
       Интервал.Начало = СТР2.ДеньТО;
       Интервал.Конец = СТР2.ДеньТО +  24 * 60 * 60;
   КонецЦикла;
   
   МаксимальнаяДата = НачалоДня(КонПериода);
   ТекущаяДата = ПервыйДень;
   ЗапросПоВыходнымДням = Новый Запрос;
   ЗапросПоВыходнымДням.Текст =
   "ВЫБРАТЬ
   |    уатРегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаВ
   |ИЗ
   |    РегистрСведений.уатРегламентированныйПроизводственныйКалендарь КАК уатРегламентированныйПроизводственныйКалендарь
   |ГДЕ
   |    уатРегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачДата И &КонДата
   |    И (уатРегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.уатВидыДнейПроизводственногоКалендаря.Суббота)
   |            ИЛИ уатРегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.уатВидыДнейПроизводственногоКалендаря.Воскресенье)
   |            ИЛИ уатРегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.уатВидыДнейПроизводственногоКалендаря.Праздник))";
   ЗапросПоВыходнымДням.УстановитьПараметр("НачДата",НачалоДня(НачПериода));
   ЗапросПоВыходнымДням.УстановитьПараметр("КонДата",КонецДня(КонПериода));
   РезПоВыходнымДням = ЗапросПоВыходнымДням.Выполнить().Выгрузить();
   
   Пока ТекущаяДата <= МаксимальнаяДата Цикл
       Если РезПоВыходнымДням.НайтиСтроки(Новый Структура("ДатаВ",ТекущаяДата)).Количество() > 0 Тогда
           ДГ.ИнтервалыФона.Добавить(ТекущаяДата, ТекущаяДата + 24 * 3600);
           ДГ1.ИнтервалыФона.Добавить(ТекущаяДата, ТекущаяДата + 24 * 3600);                
       КонецЕсли;
       ТекущаяДата = ТекущаяДата + 24 * 3600;
   КонецЦикла;
1 Невский Александр
 
30.07.10
16:33
(0) + Диаграмма выводится полностью, только не все точки в ней отображаются, приходится двигать ее границу вниз. Можно ли сделать так, чтобы она автоматически подстраивалась под то количество строк, которое выводится?
2 Невский Александр
 
30.07.10
16:52
Сделал пока вот так
   ОсновнаяЧасть.Рисунки.D2.Высота =  РезПОТО22.Количество()*12;