Имя: Пароль:
1C
1С v8
Добавить строки в таблицу значений
0 DimSon123
 
16.06.15
23:04
Есть код, по которому добавляю 3 колонки в ТЗ:

Для Индекс = 0 По МассивЭлементов.Количество() - 1 Цикл
Элемент = СтрЗаменить(МассивЭлементов[Индекс],"""","");                        МассивТЗ[СчТаблиц].Колонки.Добавить(Элемент);    
КонецЦикла;

Так же есть Массив, в котором хранится 3 элемента.

Как добавить элементы массива в колонки (для 1-колонки - 1-й элемент массива и т.д.)?
1 KarpovDeniska
 
16.06.15
23:19
Для Индекс = 0 По МассивЭлементов.Количество() - 1 Цикл
Элемент = СтрЗаменить(МассивЭлементов[Индекс],"""","");                        МассивТЗ[СчТаблиц].Колонки.Добавить(Элемент);
СтрокаТЗ = МассивТЗ[СчТаблиц].Добавить();
СтрокаТЗ[Элемент] = МассивЭлементов[Индекс];  
КонецЦикла;
2 DimSon123
 
16.06.15
23:34
(1) так не работает, ищет колонку с именем, которой нет.
Картина следующая:

//формируем колонки
Если СчФайла = 1 Тогда
МассивЭлементов=РазбитьСтроку(ЭлементМассива,Разделитель;
Для Индекс = 0 По МассивЭлементов.Количество() - 1 Цикл
Элемент = СтрЗаменить(МассивЭлементов[Индекс],"""","");                        МассивТЗ[СчТаблиц].Колонки.Добавить(Элемент);    
КонецЦикла;
Иначе
//заполняем колонки элементами
МассивЭлементов=РазбитьСтроку(ЭлементМассива,Разделитель;
стр = МассивТЗ[СчТаблиц].Добавить();
Для Индекс = 0 По МассивЭлементов.Количество() - 1 Цикл
  Элемент = СтрЗаменить(МассивЭлементов[Индекс],"""","");
  //НАДО КАК-ТО ЗАПИСАТЬ ЗНАЧЕНИЕ "ЭЛЕМЕНТ" В КОЛОНКУ
  КонецЦикла;
КонецЕсли;
3 DimSon123
 
16.06.15
23:38
(2) то есть, нам приходит МассивЭлементов, если он приходит первый раз - то его элементы будут названиями колонок. А с помощью последующих элементов МассивЭлементов заполняем эти колонки...
4 DimSon123
 
16.06.15
23:49
(1) пробовал вот так вот:
МассивТЗ[СчТаблиц].Колонки[Индекс] = Элемент;
Пишет  Индексированное значение доступно только для чтения
5 KarpovDeniska
 
16.06.15
23:51
Тебе нужно заполнить колонки в ТЗ, ты это делаешь вот так
6 KarpovDeniska
 
16.06.15
23:51
МассивТЗ[СчТаблиц].Колонки.Добавить(Элемент);
7 KarpovDeniska
 
16.06.15
23:52
далее добавляешь строку и заполняешь значения столбцов
СтрокаТЗ = МассивТЗ[СчТаблиц].Добавить();// добавил строку
СтрокаТЗ[Элемент] = МассивЭлементов[Индекс] заполнил значение;
8 KarpovDeniska
 
16.06.15
23:54
зачем ты снова пытаешься изменить колонку в (4)
МассивТЗ[СчТаблиц].Колонки[Индекс] = Элемент;?
9 DimSon123
 
16.06.15
23:58
(7) Если сделать вот так:

СтрокаТЗ[Элемент] = МассивЭлементов[Индекс]

и вставить этот код туда, где написано:

//НАДО КАК-ТО ЗАПИСАТЬ ЗНАЧЕНИЕ "ЭЛЕМЕНТ" В КОЛОНКУ

тогда мы получим примерный результат:
Яблоко = Яблоко;
и запись не произойдет, потому что колонки с названием яблоко у нас нет...
10 DimSon123
 
17.06.15
00:01
(8) это я я просто попробовал так решить проблему.
11 KarpovDeniska
 
17.06.15
00:07
(9) как нет если ты эту колонку добавляешь предыдущей строкой )))
12 KarpovDeniska
 
17.06.15
00:09
+ если у тебя массив с не уникальными значениями, то второй раз колонка не добавится, выскочит ошибка.
13 DimSon123
 
17.06.15
00:13
(11) колонки добавляются в "в условии Если, в Тогда" а, строки в "Иначе".
Если сделать добавление строк и колонок в в "Тогда", то заполнение их будет не правильным.
Смотри код на (2)
14 DimSon123
 
17.06.15
00:15
коменты не так расставил


//заполняем колонки

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

МассивЭлементов=РазбитьСтроку(ЭлементМассива,Разделитель;
стр = МассивТЗ[СчТаблиц].Добавить();
Для Индекс = 0 По МассивЭлементов.Количество() - 1 Цикл
  Элемент = СтрЗаменить(МассивЭлементов[Индекс],"""","");
  //НАДО КАК-ТО ЗАПИСАТЬ ЗНАЧЕНИЕ "ЭЛЕМЕНТ" В КОЛОНКУ

  КонецЦикла;
КонецЕсли;
15 KarpovDeniska
 
17.06.15
00:17
у тебя в если и в иначе разные массивы?
16 DimSon123
 
17.06.15
00:17
(15) да
17 KarpovDeniska
 
17.06.15
00:19
количество элементов одинаковое?
18 DimSon123
 
17.06.15
00:20
(17) да
19 KarpovDeniska
 
17.06.15
00:28
МассивЭлементов = РазбитьСтроку(ЭлементМассива,Разделитель);
стр = МассивТЗ[СчТаблиц].Добавить();
Для Индекс = 0 По МассивЭлементов.Количество() - 1 Цикл
  Элемент = СтрЗаменить(МассивЭлементов[Индекс],"""","");
  Колонка = МассивТЗ[СчТаблиц].Колонки[Индекс];
  стр[Колонка.Имя] = Элемент;
КонецЦикла;
20 DimSon123
 
17.06.15
00:34
Да, это оно, спасибо друг!
Я еще нашел одно решение:

стр.Установить(Индекс, Элемент);
21 KarpovDeniska
 
17.06.15
00:35
пожалуйста