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

02.02.18

Разработка - Инструментарий разработчика

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Вывод произвольной таблицы значений в табличный документ.:
.epf 8,47Kb
33
33 Скачать (1 SM) Купить за 1 850 руб.

Данный механизм может быть использован для простой расшифровки произвольной таблицы значений, когда пользователю необходимо видеть  промежуточный результат формирования отчета, либо для других целей.

Как правило, использую в случаях, когда необходимо реализовать отчет, который состоит из показателей, каждый их которых рассчитывается по определенному алгоритму.  Нет необходимости делать отдельный макет, отдельный вывод на форму.

В процедуру передается таблица значений и имя табличного документа на форме. По числовым значениям выводятся итоги.

В своей обработке нужно разместить процедуру

ВывестиТаблицуНаФорму(ЭлементРезультат,ТестоваяТаблица);

ЭлементРезультат - имя табличного поля на форме 

ТестоваяТаблица - таблица для вывода.

таблицаЗначений ТабличныйДокумент

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    180700    1001    403    

954

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    21950    148    82    

146

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    19541    50    19    

84

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    13248    54    33    

74

Инструментарий разработчика Программист Платформа 1С v8.3 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    29712    101    48    

147

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18856    7    32    

43

Инструментарий разработчика Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    2012    2    0    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 03.02.18 09:02
Сообщение было скрыто модератором.
...
2. necropunk 11 05.02.18 10:58 Сейчас в теме
А как именно выводится? Я обычно просто использую

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

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

// Получить табличный документ на основании таблицы значений
//
// Параметры:
//  Таблица	 - ТаблицаЗначений 
// 
// Возвращаемое значение:
//  ТабличныйДокумент 
//
Функция ПолучитьТабличныйДокумент(Таблица) Экспорт
	ТабДокумент = Новый ТабличныйДокумент;
	
	// Выводим заголовок таблицы
	КолонкаИндекс = 0;
	Пока КолонкаИндекс < Таблица.Колонки.Количество() Цикл
		Колонка = Таблица.Колонки[КолонкаИндекс];
		ТабДокумент.Область(1, КолонкаИндекс + 1, 1, КолонкаИндекс + 1).Текст = Колонка.Имя;  
		КолонкаИндекс = КолонкаИндекс + 1;
	КонецЦикла;
	
	// Выводим строки таблицы
	СтрокаИндекс = 0;
	Пока СтрокаИндекс < Таблица.Количество() Цикл
		Таблица_Строка = Таблица[СтрокаИндекс];
		КолонкаИндекс = 0;
		Пока КолонкаИндекс < Таблица.Колонки.Количество() Цикл
			Колонка = Таблица.Колонки[КолонкаИндекс];
			ТабДокумент.Область(СтрокаИндекс + 2, КолонкаИндекс + 1, СтрокаИндекс + 2, КолонкаИндекс + 1).Текст = Формат(Таблица_Строка[Колонка.Имя], "ЧГ=0");
			КолонкаИндекс = КолонкаИндекс + 1;
		КонецЦикла;		
		СтрокаИндекс = СтрокаИндекс + 1;
	КонецЦикла;
	
	Возврат ТабДокумент;
КонецФункции
Показать
Nikitos_NSK; birk; MrEvilSkotch; criptid; 24rus; Nikolaich_; baracuda; CratosX; Mingrel; Garik8866; sv_baranov; user1236603; eeeio; dimisa; dmnblg; mikl79; +16 Ответить
10. AnryMc 849 28.10.21 13:19 Сейчас в теме
(5) Не посмотрел что есть (5) - ответил в (4)
12. baracuda 2 01.02.22 17:28 Сейчас в теме
(5)
// Получить табличный документ на основании таблицы значений
//
// Параметры:
// Таблица - ТаблицаЗначений
//
// Возвращаемое значение:
// ТабличныйДокумент
//
Функция ПолучитьТабличныйДокумент(Таблица) Экспорт
ТабДокумент = Новый ТабличныйДокумент;

// Выводим заголовок таблицы
КолонкаИндекс = 0;
Пока КолонкаИндекс < Таблица.Колонки.Количество() Цикл
Колонка = Таблица.Колонки[КолонкаИндекс];
ТабДокумент.Область(1, КолонкаИндекс + 1, 1, КолонкаИндекс + 1).Текст = Колонка.Имя;
КолонкаИндекс = КолонкаИндекс + 1;
КонецЦикла;

// Выводим строки таблицы
СтрокаИндекс = 0;
Пока СтрокаИндекс < Таблица.Количество() Цикл
Таблица_Строка = Таблица[СтрокаИндекс];
КолонкаИндекс = 0;
Пока КолонкаИндекс < Таблица.Колонки.Количество() Цикл
Колонка = Таблица.Колонки[КолонкаИндекс];
ТабДокумент.Область(СтрокаИндекс + 2, КолонкаИндекс + 1, СтрокаИндекс + 2, КолонкаИндекс + 1).Текст = Формат(Таблица_Строка[Колонка.Имя], "ЧГ=0");
КолонкаИндекс = КолонкаИндекс + 1;
КонецЦикла;
СтрокаИндекс = СтрокаИндекс + 1;
КонецЦикла;

Возврат ТабДокумент;
КонецФункции
Показать


Годнота!
13. CratosX 115 01.02.22 23:59 Сейчас в теме
(5)
ТабДокумент.Область(1, КолонкаИндекс + 1, 1, КолонкаИндекс + 1).Текст = Колонка.Имя;


можно усовершенствовать код:

		КолонкаИмя = ?(ЗначениеЗаполнено(Колонка.Заголовок), Колонка.Заголовок, Колонка.Имя);
		ТабДокумент.Область(1, КолонкаИндекс + 1, 1, КолонкаИндекс + 1).Текст = КолонкаИмя;
		
		Если Колонка.Ширина > 0 Тогда
			ТабДокумент.Область("C"+Формат(КолонкаИндекс + 1, "ЧГ=")).ШиринаКолонки = Колонка.Ширина;
		КонецЕсли;


Попробовал ещё зафиксировать первую строку, но сохранение почему-то игнорит это:
ТабДокумент.ФиксацияСверху = 1;

Платформа 8.3.20, конфигурация в режиме совместимости с 8.2.13.
9. AnryMc 849 28.10.21 13:18 Сейчас в теме
(4)
ТабДокумент.Область(СтрокаИндекс + 2, КолонкаИндекс + 2, СтрокаИндекс + 2, КолонкаИндекс + 2).Текст = Таблица_Строка[Колонка.Имя]; // + 2, т.к. в первой строке выведен заголовок


Ошибка! Надо +2 только в строках, а в колонках +1 иначе строки начиная со 2-й смещаются на 1-ну колонку
6. mikl79 120 15.11.19 09:45 Сейчас в теме
(2), при отображении на экране в отличии от функции в (5):
1) не выводит сетку;
2) не отображает не простые типы данных, например, массив, стукртура
7. 7OH 70 13.04.20 10:59 Сейчас в теме
Построчно выводить - явно перебор.

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


Как убрать левую пустую колонку ? не через таб док ? ))
Dolp4in; LeXXeR; avk_avk; +3 Ответить
8. hcooh 24.09.20 20:25 Сейчас в теме
(7)
ОбластьУдаления = ТабДокумент.Область(, НомерКолонки, , НомерКолонки);
Смещать = ТипСмещенияТабличногоДокумента.ПоГоризонтали;
ТабДокумент.УдалитьОбласть(ОбластьУдаления, Смещать);
11. vl-sher1 44 30.12.21 02:49 Сейчас в теме
(8)
ОбластьУдаления = ТабДокумент.Область(, НомерКолонки, , НомерКолонки);
Смещать = ТипСмещенияТабличногоДокумента.ПоГоризонтали;
ТабДокумент.УдалитьОбласть(ОбластьУдаления, Смещать);

Не удаляет. Я делаю так:
ТабДокумент.УдалитьОбласть(ТабДокумент.Область(, 1, 1, 1), ТипСмещенияТабличногоДокумента.ПоВертикали)
Dolp4in; LeXXeR; +2 Ответить
Оставьте свое сообщение