Имя: Пароль:
1C
1С v8
Массив в ТЗ. снова
,
0 sandal_r
 
24.01.17
14:57
Привет.
Пользуюсь конструкцией
[code]
ТЗ = Новый ТаблицаЗначений;
Для каждого Строка из ИсходныйМассив Цикл
НовСтр = ТЗ.Добавить();
ЗаполнитьЗначенияСвойств(НовСтр, Строка);
КонецЦикла
[/code]

Копируется только вот так:
https://i.imgur.com/C0Egtqd.png
и значения всех строк массива превращаются в "СтрокаТаблицыЗначений".

Что я делаю не так?
1 sandal_r
 
24.01.17
14:58
ну как минимум не так использую теги форума :)
2 МихаилМ
 
24.01.17
15:09
(0)
где у тз колонки ?
3 Jokero
 
24.01.17
15:09
ТЗ, пустая у тебя. Попробуй колонки создать вначале
4 Timon1405
 
24.01.17
15:10
(0) ИсходныйМассив =Новый Массив;
ИсходныйМассив.Добавить("123");
ИсходныйМассив.Добавить(456);
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("МояКолонка");
Для каждого СтрокаМассива из ИсходныйМассив Цикл
    НовСтр = ТЗ.Добавить();
КонецЦикла;
ТЗ.ЗагрузитьКолонку(ИсходныйМассив,"МояКолонка");
5 sandal_r
 
24.01.17
15:23
ок
а есть ли способ сделать универсальной данную функцию?
ну чтоб сначала все колонки добавлять из массива, а потом уже заполнять тз

вот такой у меня массив
https://i.imgur.com/qM5SoOe.png
6 Asmody
 
24.01.17
15:36
(5) В массиве строки ТЗ? Тогда надо скопировать структуру исходной ТЗ в новую ТЗ
7 Timon1405
 
24.01.17
15:52
мой телепат шепчет, что ТС нужно просто скопировать часть колонок с данными из таблицы в другую?
Для этого есть метод Скопировать.
НоваяТЗ = ИсходнаяТЗ.СКОПИРОВАТЬКАРЛ(,"СписокКолонокДляКопирования");
8 Cyberhawk
 
24.01.17
15:53
Пользуюсь на всех проектах. Дарю.

Функция ПреобразоватьТаблицуЗначенийВМассив(тзДанные) Экспорт
    
    мсДанные = Новый Массив;

    // Запишем в массив
    Для Каждого СтрокаТЗ Из тзДанные Цикл

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

        мсДанные.Добавить(стСтрокаТаблицы);

    КонецЦикла;

    Возврат мсДанные;

КонецФункции

Функция ПреобразоватьМассивВТаблицуЗначений(мсДанные) Экспорт

    тзДанные = Новый ТаблицаЗначений;

    Для Каждого ЭлементМассива Из мсДанные Цикл
        // Рисуем колонки для таблицы
        Если тзДанные.Колонки.Количество() = 0 Тогда
            Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
                тзДанные.Колонки.Добавить(ЗначениеСтруктуры.Ключ);
            КонецЦикла;
        КонецЕсли;
        
        // Добавляем данные в таблицу
        НоваяСтрока = тзДанные.Добавить();
        Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
            НоваяСтрока[ЗначениеСтруктуры.Ключ] = ЗначениеСтруктуры.Значение;
        КонецЦикла;
    КонецЦикла;

    Возврат тзДанные;

КонецФункции
9 FIXXXL
 
24.01.17
15:56
(5) а может тебе хватит
НоваяТЗ = СтараяТЗ.Скопировать(МассивСтрок,)
?
10 Живой Ископаемый
 
24.01.17
15:57
правильно же в структуру
11 sandal_r
 
24.01.17
15:58
у меня нет старой тз
у меня старый массив
12 sandal_r
 
24.01.17
16:03
(8) спасибо, это как раз то, что я искал
но ругается на ЗначениеСтруктуры.Ключ
поле объекта не обнаружено
13 Живой Ископаемый
 
24.01.17
16:06
потому что у него хоть и называется мсДанные - передает он туда структуру или соответствие
14 Живой Ископаемый
 
24.01.17
16:06
И это правильно
15 Cyberhawk
 
24.01.17
16:13
Массив структур же
16 Asmody
 
24.01.17
16:13
В (5) я однозначно вижу массив строк ТЗ
17 FIXXXL
 
24.01.17
16:50
(11) куда дел? ссылки на строки из нее есть же в массиве?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший