Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 04:21

Объединить две таблицы значений.

Автор AlekseyJunior, 30 мая 2024, 12:20

0 Пользователей и 1 гость просматривают эту тему.

AlekseyJunior

У меня имеются две выгруженные таблицы значений, с разным количеством колонок, в файлах с расширением VT_. Надо эти таблицы объединить с помощью консоли кода, не используя запрос. Вопрос заключается в том как это сделать? Хотелось бы услышать примерный план действий, облазил весь интернет всё, что нашёл не могу реализовать.
В 1С месяц, сильно не пинайте...

Afinogen


AlekseyJunior

Afinogen, к сожалению ментор требует именно код((( Запросом я решил эту задачку за час, а другие способы мне не известны(((

LexaK

AlekseyJunior, примерный план действий
1.создать новую результирующую ТЗ
2.добавить в нее ВСЕ колонки из первой вашей ТЗ (Тип: Произвольный)
3.добавить в нее колонки из второй вашей ТЗ которых нет в первой ТЗ
4.Загрузить вашу первую ТЗ в результирующую таблицу
5.Циклом добавить строчки из второй вашей ТЗ  в результирующую.

если помогло нажмите: Спасибо!

AlekseyJunior

LexaK, спасибо, буду пытаться реализовать))

AlekseyJunior

Всё сделал по плану, не понимаю, как заполнить ТЗ значениями из другой ТЗ :dfbsdfbsdf:

//1.Создал новую результирующую ТЗ
ТЗРез = Новый ТаблицаЗначений;
ТЗРез = ТЗ1.Скопировать();

//2.Добавляю колонки из ТЗ2, которых нет в первой
Для Каждого Колонка Из ТЗ2.Колонки Цикл
    Если ТЗРез.Колонки.Найти(Колонка.Имя) = Неопределено Тогда
        ТЗРез.Колонки.Добавить(Колонка.Имя);
    КонецЕсли;
КонецЦикла;

//3.Добавляю строки из ТЗ2
Для ё = 1 По ТЗ2.Количество() Цикл
    НоваяСтрока = ТЗРез.Добавить();
   
    //4.Заполняю значениями из ТЗ2
    Для ё2 = 1 По ТЗ2.Колонки.Количество() Цикл
        НоваяСтрока.Значение(ТЗ2.Колонки[ё2].Имя) = ТЗ2.Строки[ё].Значение(ТЗ2.Колонки[ё2].Имя);
    КонецЦикла;
КонецЦикла;

alexandr_ll


LexaK

AlekseyJunior, попробуйте этот вариант
//1.Создал новую результирующую ТЗ
ТЗРез = Новый ТаблицаЗначений;

//Вот здесь может быть проблема,
//если типы одинаковых колоно не совпадут
//вы сделали не так как было описано
ТЗРез = ТЗ1.Скопировать();

//2.Добавляю колонки из ТЗ2, которых нет в первой
Для Каждого Колонка Из ТЗ2.Колонки Цикл
    Если ТЗРез.Колонки.Найти(Колонка.Имя) = Неопределено Тогда
        ТЗРез.Колонки.Добавить(Колонка.Имя);
    КонецЕсли;
КонецЦикла;

//другой вариант добавения строк из ТЗ в реультирующую
//3.Добавляю строки из ТЗ2
Для каждого СтрокаТЗ Из ТЗ2 Цикл
ЗаполнитьЗначенияСвойств(ТЗРез.Добавить(), СтрокаТЗ);
КонецЦикла;
если помогло нажмите: Спасибо!

AlekseyJunior


Похожие темы (5)

Рейтинг@Mail.ru

Поиск