Имя: Пароль:
1C
1С v8
Доступ к содержимому ТЧ, не зная имен колонок
,
0 igel1969
 
25.01.19
15:14
Здравствуйте!

1С 8.2 УТ 10.3

Пишу внешнюю обработку. В ней есть несколько Табличных частей. У каждой ТЧ есть несколько колонок. Названия все разные. Мне нужно все это выгрузить каждую ТЧ в отдельный текстовый файл с разделителями.
Писать для каждой ТЧ
Текст.ДобавитьСтроку(СокрЛП(ТЧ1.Реквизит1) + ";" + СокрЛП(ТЧ1.Реквизит2) + СокрЛП(ТЧ1.Реквизит2) и т.д.);
считаю ниже своего программистского достоинства. Считаю что должна быть возможность написать процедуру, в которую передавать ТЧ, чтобы эта процедура выгружала в текстовый файл ТЧ любой структуры.
А свойства "Колонки" у ТЧ нет. И доступа к ячейкам по индексу тоже нет. Если только выгрузить на форму в Табличное поле и брать оттуда? Просто нет необходимости эти данные визуально отображать.

Не подскажете - можно как-то выкрутиться?
1 Mort
 
25.01.19
15:18
ВнешняяОбработка.Метаданные()
2 igel1969
 
25.01.19
15:26
(1) Хм, во-первых я прошу прощения, что неправильно написал - у меня не обработка, а отчет внешний.
Далее, я пытался писать
Отчет.Метаданные();
ЭтотОтчет.Метаданные();
Обработка.Метаданные();
ЭтаОбработка.Метаданные();
ИмяОтчета.Метаданные();

Все-время ругается на первое слово - нет такой переменной!
3 ДенисЧ
 
25.01.19
15:26
тз = ТЧ.ВыгрузитьКолонки();
и вперёд
4 igel1969
 
25.01.19
15:27
(3) Это я в хелпе легко нашел. А что дальше - как, зная имя колонки, получить содержимое?
5 igel1969
 
25.01.19
15:28
(1)
ВнешняяОбработка.Метаданные()
ВнешнийОтчет.Метаданные()
тоже пробовал
6 Вафель
 
25.01.19
15:29
ТЧ.Выгрузить и это уже таблица значений, а у нее есть колонки
7 igel1969
 
25.01.19
15:29
(6) попробую
8 Ёпрст
 
25.01.19
15:30
["тут имя колонки"]
9 igel1969
 
25.01.19
15:50
(8) Да, я пошел по Вашему пути, большое спасибо!
Хотя, возможно и путь (6) сработал бы.

Прототип процедуры выглядит так:

Процедура ВыгрузитьВФайл(ТЧ)
ТЗ = ТЧ.ВыгрузитьКолонки();
Предупреждение(ТЗ.Колонки.Количество());
Для каждого Стр Из ТЧ Цикл
        Для каждого Кол из ТЗ.Колонки Цикл
            Сообщить(Стр[Кол.Имя]);
        КонецЦикла;
    КонецЦикла;

КонецПроцедуры

Просто дальше вместо Сообщить я вставлю то, что мне надо.
10 igel1969
 
25.01.19
15:51
(8) в смысле - все работает в моей процедуре
Программист всегда исправляет последнюю ошибку.