Вывод произвольной таблицы значений в табличный документ

0. WalterFOX 20 02.02.18 13:59 Сейчас в теме
Реализация вывода таблицы значений в табличный документ. Протестировано на Платформе 1С:Предприятие 8.3 (8.3.10.2561), конфигурация Учет в МФО 8 (3.1.52.05.1) . Обработка не привязана к какой-то определенной конфигурации. Может быть использована в любой конфигурации.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. necropunk 8 05.02.18 10:58 Сейчас в теме
А как именно выводится? Я обычно просто использую

Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);
Построитель.Выполнить();
Построитель.Вывести();
Отованец; JoniG; DrAku1a; CnupT; nomad_irk; 7OH; tgr123; APTEM_SLV; dock; sansys; SmileDDD; pm74; Boneman; +13 Ответить
3. kuzyara 1055 10.06.19 12:40 Сейчас в теме
(2) А как избавиться от отступов?
Чтобы сразу с первой ячейки значения шли?
4. ZhiharevDmitriy 25.08.19 23:25 Сейчас в теме
(3) Можно так:

// Получить табличный документ на основании таблицы значений
//
// Параметры:
//  Таблица - ТаблицаЗначений 
// 
// Возвращаемое значение:
//  ТабличныйДокумент 
//
Функция ПолучитьТабличныйДокумент(Таблица)
	ТабДокумент = Новый ТабличныйДокумент;
			
	// Выводим заголовок таблицы
	КолонкаИндекс = 0;
	Пока КолонкаИндекс < Таблица.Колонки.Количество() Цикл
		Колонка = Таблица.Колонки[КолонкаИндекс];
		ТабДокумент.Область(1, КолонкаИндекс + 1, 1, КолонкаИндекс + 1).Текст = Колонка.Имя;  
		КолонкаИндекс = КолонкаИндекс + 1;
	КонецЦикла;
	
	// Выводим строки таблицы
	СтрокаИндекс = 0;
	Пока СтрокаИндекс < Таблица.Количество() Цикл
		Таблица_Строка = Таблица[СтрокаИндекс];
		КолонкаИндекс = 0;
		Пока КолонкаИндекс < Таблица.Колонки.Количество() Цикл
			Колонка = Таблица.Колонки[КолонкаИндекс];
			ТабДокумент.Область(СтрокаИндекс + 2, КолонкаИндекс + 2, СтрокаИндекс + 2, КолонкаИндекс + 2).Текст = Таблица_Строка[Колонка.Имя];  // + 2, т.к. в первой строке выведен заголовок
			КолонкаИндекс = КолонкаИндекс + 1;
		КонецЦикла;		
		СтрокаИндекс = СтрокаИндекс + 1;
	КонецЦикла;
	
	Возврат ТабДокумент;
КонецФункции
Показать
5. ZhiharevDmitriy 26.08.19 17:24 Сейчас в теме
(4) Исправленная функция:

// Получить табличный документ на основании таблицы значений
//
// Параметры:
//  Таблица	 - ТаблицаЗначений 
// 
// Возвращаемое значение:
//  ТабличныйДокумент 
//
Функция ПолучитьТабличныйДокумент(Таблица) Экспорт
	ТабДокумент = Новый ТабличныйДокумент;
	
	// Выводим заголовок таблицы
	КолонкаИндекс = 0;
	Пока КолонкаИндекс < Таблица.Колонки.Количество() Цикл
		Колонка = Таблица.Колонки[КолонкаИндекс];
		ТабДокумент.Область(1, КолонкаИндекс + 1, 1, КолонкаИндекс + 1).Текст = Колонка.Имя;  
		КолонкаИндекс = КолонкаИндекс + 1;
	КонецЦикла;
	
	// Выводим строки таблицы
	СтрокаИндекс = 0;
	Пока СтрокаИндекс < Таблица.Количество() Цикл
		Таблица_Строка = Таблица[СтрокаИндекс];
		КолонкаИндекс = 0;
		Пока КолонкаИндекс < Таблица.Колонки.Количество() Цикл
			Колонка = Таблица.Колонки[КолонкаИндекс];
			ТабДокумент.Область(СтрокаИндекс + 2, КолонкаИндекс + 1, СтрокаИндекс + 2, КолонкаИндекс + 1).Текст = Формат(Таблица_Строка[Колонка.Имя], "ЧГ=0");
			КолонкаИндекс = КолонкаИндекс + 1;
		КонецЦикла;		
		СтрокаИндекс = СтрокаИндекс + 1;
	КонецЦикла;
	
	Возврат ТабДокумент;
КонецФункции
Показать
user1236603; eeeio; dimisa; dmnblg; mikl79; +5 Ответить
6. mikl79 109 15.11.19 09:45 Сейчас в теме
(2), при отображении на экране в отличии от функции в (5):
1) не выводит сетку;
2) не отображает не простые типы данных, например, массив, стукртура
7. 7OH 32 13.04.20 10:59 Сейчас в теме
Построчно выводить - явно перебор.

Строки убрать можно так:
Построитель.ВыводитьЗаголовокОтчета = Ложь;
Построитель.ВыводитьПодвалОтчета	= Ложь;
Построитель.ВыводитьПодвалТаблицы	= Ложь;


Как убрать левую пустую колонку ? не через таб док ? ))
Оставьте свое сообщение
Вопросы с вознаграждением