Метод Merge Pandas для 1С при работе с файлом Excel

18.09.24

Разработка - Универсальные функции

Использование merge Pandas в среде 1С при работе с многостраничным файлом Excel.

Методом Merge Pandas можно соединять несколько таблиц в одну, не написав многостраничный код. В среде 1С для типа ТаблицаЗначений нет типового метода.

Задача:

  • Есть Файл Excel с несколькими листами названия которых нам неизвестны;
  • Колонки в некоторых листах больше, знаем что названия совпадают, но некоторые колонки отсутствуют на других листах
  • Объединить листы в одну таблицу для дальнейшей работы с данными на платформе 1С

Зная метод Merge Pandas решил реализовать аналогичное решение на базе 1С.

Функция реализации на &Сервере:

 

	ТабДок = Новый ТабличныйДокумент;
	Попытка
		ТабДок.Прочитать(ФайлЗагрузки, СпособЧтенияЗначенийТабличногоДокумента.Текст);
	Исключение
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = ОписаниеОшибки();
		Сообщение.Сообщить();
	КонецПопытки; 
	
	ТЗ = Новый ТаблицаЗначений;

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

	Возврат ТЗ;

Мы уже прочитали ФайлЗагрузки, отправили его на сервер, а в Функции уже работаем с ТабличнымДокументом и читаем данные с каждого листа, соединяем в одну ТаблицуЗначений. На выходе возвращаем общую ТаблицуЗначений для дальнейшей работы.

Вступайте в нашу телеграмм-группу Инфостарт

Excel

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    3453    Abysswalker    8    

45

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

Порой необходимо временно отключить расширение 1С, не удаляя его, чтобы не потерять данные. Но в этом случае при каждом запуске всем будет лезть уведомление о неактивном расширении, хотя очевидно, это техническая информация, которой не стоит лишний раз пугать пользователей.

14.05.2025    6392    DeerCven    15    

57

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.

21.05.2024    48837    dimanich70    83    

170

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    7309    6    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    61072    atdonya    31    

69

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    9111    ke.92@mail.ru    17    

68
Для отправки сообщения требуется регистрация/авторизация