Имя: Пароль:
 
1C
1С v8
двухмерный массив в таблицу значений
0 Voblhned
 
12.03.20
15:17
Добрый день,

Столкнулся с такой ситуацией, загружаю данные в Массив[4][31] потом из массива хочу все собрать в таблицу значений. А таблицу значений выгрузить в Табличное поле. Вроде задача не сложная.

ТаблицаЗначенийИзЭксель = Новый ТаблицаЗначений;
    // Индекс = 1;
    Для Счет = 0 по Данные.ВГраница() Цикл
            ТаблицаЗначенийИзЭксель.Колонки.Добавить("Колонка"+Данные[Счет][0], ,"Колонка"+Данные[Счет][0]);
        Для Индекс = 1 По Данные[0].Количество() Цикл // было Данные[0].Количество()-1
        
        ТаблицаЗначенийИзЭксель.Добавить();
        ТаблицаЗначенийИзЭксель.ЗагрузитьКолонку(Данные[Счет],"Колонка"+Данные[Счет][0]);
    КонецЦикла;
    
    КонецЦикла;

В конце получаю ТЗ в 132 строки, хотя заполнены всего 4 строки. Понятно дело, что я перемножил Строки с столбцами. Но я уже опух и не понимаю как правильно заполнить, с случайно генерацией названия столбцом например, потому что прописывать вручную 31 столбец это дикость.
1 Кирпич
 
12.03.20
15:37
2 080808Ник
 
12.03.20
15:52
(0) те просто нужно прогуляться, поспать пару часиков встать и выбросить этот код) зачем ты выгружаешь тз в двухмерный массив что бы загрузить его обратно?
3 Deon
 
12.03.20
16:12
(0) Вынеси цикл создания строк из цикла создания и заполнения колонок. Сначала создай строки, потом колонки.
4 Voblhned
 
12.03.20
19:29
(2) У меня массив загруженный из excel надо его в ТЗ и табличную часть документа.
(3) тогда придется что-то придумать вот с этим  ТаблицаЗначенийИзЭксель.ЗагрузитьКолонку(Данные[Счет],"Колонка"+Данные[Счет][0]); иначе не будет рабоать загрузка столбцов
5 Voblhned
 
12.03.20
20:35
(3) Твою ж... спасибо! Идеально отработал код:

    ТаблицаЗначений = Новый ТаблицаЗначений;
        
    Для Индекс = 1 По Данные[0].Количество() Цикл
        ТаблицаЗначений.Добавить();
    КонецЦикла;
    
    Для Счет = 0 по Данные.ВГраница() Цикл
        ТаблицаЗначений.Колонки.Добавить("Колонка"+Данные[Счет][0], ,"Колонка"+Данные[Счет][0]);
        ТаблицаЗначений.ЗагрузитьКолонку(Данные[Счет],"Колонка"+Данные[Счет][0]);
    КонецЦикла;
Получается вначале перебрал строки и создал их в ТаблицеЗначений, потом Загружал колонку и в нее загружал данные.
6 catena
 
13.03.20
06:11
(5)И где-то заплакал автор СП
7 Бизон
 
13.03.20
06:46
(5) у СП нет автора, СП бессвязный поток сознания
8 catena
 
13.03.20
06:49
(7)Ну это же чье-то сознание.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн