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

02.02.18

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

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

Файлы

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

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

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

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

15500 руб.

02.09.2020    201112    1111    410    

1015

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

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

8400 руб.

20.08.2024    35171    203    104    

194

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    23754    63    26    

92

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

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

16000 руб.

10.11.2023    16321    70    39    

88

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

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

9360 руб.

17.05.2024    34427    122    53    

164

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

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

20000 руб.

07.10.2021    20463    8    32    

44

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

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 руб.

22.11.2024    1538    1    0    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 2165 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; valik_888; 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 Сейчас в теме
Построчно выводить - явно перебор.

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


Как убрать левую пустую колонку ? не через таб док ? ))
ya6ina; 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), ТипСмещенияТабличногоДокумента.ПоВертикали)
ya6ina; LeXXeR; +2 Ответить
Оставьте свое сообщение