Как строку из одной ТаблицыЗначений довавить в другую таблицу?

1. user1194102 21.02.20 10:17 Сейчас в теме
У меня есть итоговая таблица значений и в нее я подбираю строки из других ТаблицЗначений с одинаковыми колонками таблиц, полученных по запросам. Нашел два кода с такой реализацией:

1.
Стр = ТабВКоде.Добавить();
    Стр.Фрукт = "Яблоко";
    Стр.Цвет = "Зелёный";
    Стр.Вес = 200;


2.
Скопировать строку таблицы значений 1С, для примера — первую:

ЗаполнитьЗначенияСвойств(ТаблицаТоваров.Добавить(), ТаблицаТоваров[0]);


1й код рабочий, я его уже ранее использовал в программе, но когда много полей, надо все перебирать, не очень удобно и громоздко. 2й код более простой, но выходит ошибка индекс ушел за пределы границы (это я в цикле добавляю значения).
Может еще существуют другие методы? Если есть индекс строки таблицы, данные которой нужно передать в первую таблицу значений.

3. Или другой вариант, есть исходная ТаблицаЗначений, в нее нужно добавить все строки из второй ТаблицыЗначений (правда во второй таблице всегда одна строка, так как вторая таблица на этот момент уже свернута)
Найденные решения
2. FetisovAN 21.02.20 10:39 Сейчас в теме
во 2-ом примере можно отказаться от индекса.

Если у вас цикл по 2-ой таблице значений, то

Для каждого текстр из Таблица2 цикл
     новстр = Таблица1.Добавить();
 ЗаполнитьЗначенияСвойств(новстр,текстр);
конецЦикла
zastep; One_Assembler; user1194102; +3 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FetisovAN 21.02.20 10:39 Сейчас в теме
во 2-ом примере можно отказаться от индекса.

Если у вас цикл по 2-ой таблице значений, то

Для каждого текстр из Таблица2 цикл
     новстр = Таблица1.Добавить();
 ЗаполнитьЗначенияСвойств(новстр,текстр);
конецЦикла
zastep; One_Assembler; user1194102; +3 Ответить
4. user1194102 21.02.20 13:33 Сейчас в теме
(2) Спасибо интересное решение, возьму на заметку.
7. пользователь 18.02.22 12:48
Сообщение было скрыто модератором.
...
8. DrDrewAvenue 18.02.22 12:49 Сейчас в теме
(2) Всё верно, только у меня итоговая таблица всё равно пустая. Надо ли в итоговой таблице колонки создавать всё таки? Или можно новую таблицу только инициализировать?

У меня такой код не отрабатывается:
ИтоговаяТЗ = Новый ТаблицаЗначений;

Для каждого СтрокаТЗ Из ТекущийДокументТЗ Цикл
	НоваяСтрока = ИтоговаяТЗ.Добавить(); 
	ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЗ); 	
КонецЦикла;
9. Sashares 35 18.02.22 12:52 Сейчас в теме
(8)
Надо ли в итоговой таблице колонки создавать всё таки?

Что вы, нет конечно. Надо просто подождать, когда платформа подключится к вашему мозгу, найдет там, какие же колонки должны быть в таблице, чтобы их заполнить.
10. lolovlol1 19.07.23 14:15 Сейчас в теме
(8) всё так, но вместо
ИтоговаяТЗ = Новый Таблица Значений;
нужно сделать
ИтоговаяТЗ = ТекущийДокументТЗ.СкопироватьКолонки();
и будет работать
11. пользователь 19.07.23 14:29
Сообщение было скрыто модератором.
...
3. duhin 21.02.20 10:53 Сейчас в теме
2й вариант рабочий, вот пример. Ошибка просто гдето у вас, отлаживайте, ищите, по тому что вы написали где она непонятно. Может дело в том, что из одной таблицы в нее же добавляете..
	тзн1 = Новый ТаблицаЗначений;
	тзн1.Колонки.Добавить("Поле1");
	тзн1.Колонки.Добавить("Сумма");
	тзн2 = Новый ТаблицаЗначений;
	тзн2.Колонки.Добавить("Поле1");
	тзн2.Колонки.Добавить("Сумма");
	стртзн1 = тзн1.Добавить();
	стртзн1.Поле1 = "Кря";
	стртзн1.Сумма = 1;
	стртзн1 = тзн1.Добавить();
	стртзн1.Поле1 = "Ква";
	стртзн1.Сумма = 2;
	стртзн2 = тзн2.Добавить();
	стртзн2.Поле1 = "Хрю";
	стртзн2.Сумма = 3;
	ЗаполнитьЗначенияСвойств(тзн2.Добавить(), тзн1[0]);
	ЗаполнитьЗначенияСвойств(тзн2.Добавить(), тзн1[1]);
	ЗаполнитьЗначенияСвойств(тзн2.Добавить(), тзн1[1]);
	
	ОткрытьЗначение(тзн2);
Показать
user1194102; +1 Ответить
5. user1194102 21.02.20 13:35 Сейчас в теме
(3) спасибо, тоже интересно. Ошибку у себя нашел, иногда были пустые запросы и таблица значений тоже соответственно пустая и нулевого индекса конечно не было.
6. user1194102 23.02.20 13:02 Сейчас в теме
вот еще вариант нашел на курсах у Павла Чистова
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот