Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема ТП. Вывод на печать? (число прочтений - 1596 )
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
ТП. Вывод на печать?
18. Декабря 2008 :: 11:38
Печать  
Может кто уже далал подобное? Не хочеться велосипед изобретать.
Надо разпечатать Табличное поле (с колонками, которые видны, в том же порядке, с приблизительной шириной, с цветовой раскраской фона и шрифта). Источник - ТаблицаЗначений.
  
Наверх
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: ТП. Вывод на печать?
Ответ #1 - 18. Декабря 2008 :: 13:02
Печать  
Вот часть моего метода класса "ПолучитьОбраз()", который "Сливает" образ из ТП в таблицу значений (Предварительно получив данные из SQL в ТЗ при помощи запроса) - ширина, порядок и заголовки которой определяет: Порядок, ширину и заголовки колонок печатной формы. Думаю, код легко доработать Улыбка
Код
Выбрать все
  //----ТЗ - это таблица значений, полученая при пом. запроса.----
	Состояние("Создание выходной таблицы...");

	СписокКолонок = СоздатьОбъект("СписокЗначений");
	н_Кол = 1;
	Пока 1=1 Цикл
		ВремЗнач = ТЗ.ПолучитьПараметрыКолонки(н_Кол);
		Попытка
		    ВремЗнач = Колонки.Получить(ВремЗнач);
			ИндексКол = Колонки.Индекс(ВремЗнач);
			Если ((ИндексКол >= 0) и (ВремЗнач.Видимость = 1)) Тогда
				Заголовок+РазделительСтрок+Строка(ВремЗнач.Ширина));
				н_Кол = н_Кол + 1;
			Иначе
				ТЗ.УдалитьКолонку(н_Кол);
			КонецЕсли;
		Исключение
			ТЗ.УдалитьКолонку(н_Кол);
		КонецПопытки;
		Если (н_Кол > ТЗ.КоличествоКолонок()) Тогда
		    Прервать;
		КонецЕсли;
	КонецЦикла;
	СписокКолонок.Сортировать();

	РезТаб = СоздатьОбъект("ТаблицаЗначений");
	Для н_Кол=1 по СписокКолонок.РазмерСписка() Цикл
		СписокКолонок.ПолучитьЗначение(н_Кол,Поле);
		КолИмя = СтрПолучитьСтроку(Поле,1);
		КолЗаголовок = СтрПолучитьСтроку(Поле,2);
		КолШирина = Число(СтрПолучитьСтроку(Поле,3));
		ТЗ.ПолучитьПараметрыКолонки(КолИмя,Тип,Длина,Точность);
		РезТаб.НоваяКолонка(КолИмя,Тип,Длина,Точность,КолЗаголовок,КолШирина);
	КонецЦикла;

	КоличествоСтрок = ТЗ.КоличествоСтрок();
	Для н_стр=1 По КоличествоСтрок Цикл
		РезТаб.НоваяСтрока();
		Состояние("Форматирование выходной таблицы("+Цел(Строка(н_стр/КоличествоСтрок*100))+"%)...");
		Для н_Кол=1 По РезТаб.КоличествоКолонок() Цикл
			КолИмя = РезТаб.ПолучитьПараметрыКолонки(н_Кол);
			ВремЗнач = тьЗначение(н_стр,КолИмя));
			РезТаб.УстановитьЗначение(н_стр,н_Кол,ВремЗнач);
		КонецЦикла;
	КонецЦикла;
    
	Возврат РезТаб;
 


  
Наверх
 
IP записан
 
slider26
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: ТП. Вывод на печать?
Ответ #2 - 18. Декабря 2008 :: 13:12
Печать  
PS: При печати шапки устанавливаем параметры колонок при помощи:
Код
Выбрать все
	ПечТаб.ВывестиСекцию(ИмяСекции + "|Отступ");
	ПечТаб.ПрисоединитьСекцию(ИмяСекции + "|НомерСтроки");
	Для н_кол = 1 По Образ.КоличествоКолонок() Цикл
		ИмяКолонки = Образ.ПолучитьПараметрыКолонки(н_кол,,,,ЗаголовокКолонки,ШиринаКолонки);
		ПечТаб.ПрисоединитьСекцию(ИмяСекции + "|" + ИмяКолонки);
		ТекОбласть = ПечТаб.Область(ПечТаб.ВысотаТаблицы(),н_кол+2,ПечТаб.ВысотаТаблицы(),н_кол+2);
		ТекОбласть.ШиринаСтолбца(Цел(ШиринаКолонки/5));
	КонецЦикла;
 


« Последняя редакция: 18. Декабря 2008 :: 14:43 - slider26 »  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП. Вывод на печать?
Ответ #3 - 15. Января 2009 :: 20:20
Печать  
Спасибо, но больше интересуют цвета, выравнивание и шрифты.
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать