Методом Merge Pandas можно соединять несколько таблиц в одну, не написав многостраничный код. В среде 1С для типа ТаблицаЗначений нет типового метода.
Задача:
- Есть Файл Excel с несколькими листами названия которых нам неизвестны;
- Колонки в некоторых листах больше, знаем что названия совпадают, но некоторые колонки отсутствуют на других листах
- Объединить листы в одну таблицу для дальнейшей работы с данными на платформе 1С
Зная метод Merge Pandas решил реализовать аналогичное решение на базе 1С.
Функция реализации на &Сервере:
ТабДок = Новый ТабличныйДокумент;
Попытка
ТабДок.Прочитать(ФайлЗагрузки, СпособЧтенияЗначенийТабличногоДокумента.Текст);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
ТЗ = Новый ТаблицаЗначений;
Для Каждого Область Из ТабДок.Области Цикл
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область(Область.Имя));
ПостроительЗапроса.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
ПостроительЗапроса.ЗаполнитьНастройки();
ПостроительЗапроса.Выполнить();
ТаблицаДанных = ПостроительЗапроса.Результат.Выгрузить();
Для каждого Колонка Из ТаблицаДанных.Колонки Цикл
ЕстьКолонка = ТЗ.Колонки.Найти(Колонка.Имя);
Если ЕстьКолонка = Неопределено Тогда
ТЗ.Колонки.Добавить(Колонка.Имя);
КонецЕсли;
КонецЦикла;
Для каждого Строка Из ТаблицаДанных Цикл
ЗаполнитьЗначенияСвойств(ТЗ.Добавить(), Строка)
КонецЦикла;
КонецЦикла;
Возврат ТЗ;
Мы уже прочитали ФайлЗагрузки, отправили его на сервер, а в Функции уже работаем с ТабличнымДокументом и читаем данные с каждого листа, соединяем в одну ТаблицуЗначений. На выходе возвращаем общую ТаблицуЗначений для дальнейшей работы.