5 способов загрузки из Excel в 1С

Публикация № 1411881

Разработка - Обмен данными 1С - Загрузка и выгрузка в Excel

excel загрузка

Конфигурация, состоящая из внешнего источника данных и одной обработки. Обработка содержит 5 примеров, как можно загрузить данные в 1С из Excel.

Протестировано на платформе: 8.3.18.1334

Написано в EDT: 2020.6.2.8

В конфигурации 1 обработка и 1 внешний источник данных, который нужен для реализации загрузки одного из вариантов.

Модуль формы разбит на области, для удобного копирования в свои обработки или изучения способа загрузки.

 

 

Работа с Excel через OLE на сервере

#Область OLEСервер

&НаКлиенте
Процедура ЗагрузкаНаСервереOLE(Команда)
	нФайл = Новый Файл(ИмяФайла);
	
	Если НЕ нФайл.Существует() Тогда 
		Возврат;
	КонецЕсли;
	
	ДвоичДанные = Новый ДвоичныеДанные(ИмяФайла);
	
	ОбработкаОЛЕНаСервере(ДвоичДанные, нФайл.Расширение);
КонецПроцедуры

&НаСервере
Процедура ОбработкаОЛЕНаСервере(ДвоичДанные, Расширение)
	ФайлЭксельНаСервере = ПолучитьИмяВременногоФайла(Расширение);
	ДвоичДанные.Записать(ФайлЭксельНаСервере);

	Попытка
		Эксель = Новый COMОбъект("Excel.Application");
		Эксель.DisplayAlerts = 0;
		Эксель.Visible = 0;
	Исключение
   		Return;
	КонецПопытки;

	// 
	// Работаем с данными Excel
	//
	
	Эксель.Workbooks.Close();
	Эксель.Application.Quit();
КонецПроцедуры

#КонецОбласти

Работа с Excel используя внешний источник данных

#Область ВнешнийИсточникДанных

&НаКлиенте
Процедура ЗагрузкаСПомощьюВнешнегоИсточникаДанных(Команда)
	ЗагрузкаСПомощьюВнешнегоИсточникаДанныхНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗагрузкаСПомощьюВнешнегоИсточникаДанныхНаСервере()
	ПараметрыПодключения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
	
	ПараметрыПодключения.СтрокаСоединения =
	"Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + ИмяФайла + ";";
	
	ВнешниеИсточникиДанных.Excel.УстановитьОбщиеПараметрыСоединения(ПараметрыПодключения);
	ВнешниеИсточникиДанных.Excel.УстановитьСоединение();
	
	Запрос = Новый Запрос("ВЫБРАТЬ
	             |	ExcelТаблицаТаблица1.КолонкаКод,
	             |	ExcelТаблицаТаблица1.Колонка2,
	             |	ExcelТаблицаТаблица1.Колонка3 КАК Колонка3
	             |ИЗ
	             |	ВнешнийИсточникДанных.Excel.Таблица.Таблица1 КАК ExcelТаблицаТаблица1
	             |ГДЕ
	             |	ExcelТаблицаТаблица1.Колонка3 > 1
	             |УПОРЯДОЧИТЬ ПО
	             |	Колонка3");
	             
	             
	
	ТаблицаЭксельВ1с = Запрос.Выполнить().Выгрузить();
	
	Для Каждого Стр Из ТаблицаЭксельВ1с Цикл
		Сообщить(Стр); // Обрабатываем
	КонецЦикла;	
КонецПроцедуры

#КонецОбласти

Работа с Excel через OLE на клиенте

#Область OLEКлиент

&НаКлиенте
Процедура ЗагрузкаНаКлиентеOLE(Команда)
	Попытка
		Эксель = Новый COMОбъект("Excel.Application");
		Эксель.DisplayAlerts = 0;
		Эксель.Visible = 0;
	Исключение
   		Сообщить(ОписаниеОшибки()); 
   		Возврат;
	КонецПопытки;
				
	ЭксельКнига = Эксель.Workbooks.Open(ИмяФайла);	
	КоличествоСтраниц = ЭксельКнига.Sheets.Count;
	
	// Перебираем все листы
	Для НомерЛиста = 1 По КоличествоСтраниц Цикл 
		Лист = ЭксельКнига.Sheets(НомерЛиста);
		КоличествоСтрок = Лист.Cells(1, 1).SpecialCells(11).Row;
		КоличествоКолонок = Лист.Cells(1, 1).SpecialCells(11).Column;

		// Перебираем строки
		Для НомерСтроки = 1 По КоличествоСтрок Цикл 
			
			// Перебираем колонки
			Для НомерКолонки = 1 По КоличествоКолонок Цикл
				ЗначениеВЯчейке = Лист.Cells(НомерСтроки, НомерКолонки).Value;
				// ...
				Сообщить(ЗначениеВЯчейке); // Обрабатываем занчение
				// ...
			КонецЦикла;
		КонецЦикла;	
	КонецЦикла;
		
	Эксель.Workbooks.Close();
	Эксель.Application.Quit();
КонецПроцедуры

#КонецОбласти

Загрузка в табличный документ

#Область ТабличныйДокумент

&НаСервере
Процедура ЗагрузкаВТабличныйДокументНаСервере()
	табДок = Новый ТабличныйДокумент;
	
	Попытка
		табДок.Прочитать(ИмяФайла);
	Исключение
		Возврат;
	КонецПопытки;
	
	нТабзнч = Новый ТаблицаЗначений;
	
	нТабзнч.Колонки.Добавить("КолонкаКод",	Новый ОписаниеТипов("Строка"));
	нТабзнч.Колонки.Добавить("Колонка2",	Новый ОписаниеТипов("Строка"));
	нТабзнч.Колонки.Добавить("Колонка3",	Новый ОписаниеТипов("Число"));
	
	КоличествоСтрок = табДок.ВысотаТаблицы;
	
	Для сч = 2 По КоличествоСтрок Цикл 
		
		нСтр = нТабзнч.Добавить();		
		
		Попытка
			нСтр.КолонкаКод	= Строка(табДок.ПолучитьОбласть("R" + Формат(сч, "ЧГ=0;") + "C" + 1).ТекущаяОбласть.Текст);
			нСтр.Колонка2	= Строка(табДок.ПолучитьОбласть("R" + Формат(сч, "ЧГ=0") + "C" + 2).ТекущаяОбласть.Текст);
			нСтр.Колонка3	= Число(табДок.ПолучитьОбласть("R" + Формат(сч, "ЧГ=0") + "C" + 3).ТекущаяОбласть.Текст);
		Исключение
			Сообщение		= Новый СообщениеПользователю;
			Сообщение.Текст	= "Не удалось загрузить строку " + Строка(сч);
			Сообщение.Сообщить();
		КонецПопытки;
		
	КонецЦикла;
КонецПроцедуры

Работа с Excel через построитель

#Область ТабличныйДокументv2Построитель

&НаКлиенте
Процедура ЗагрузкаВТабличныйДокументv2(Команда)
	ЗагрузкаВТабличныйДокументНаСервереv2();
КонецПроцедуры

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

КонецПроцедуры

#КонецОбласти

 

Скачать файлы

Наименование Файл Версия Размер
5 способов загрузки из Excel в 1с:

.cf 83,08Kb
5
.cf 1.0 83,08Kb 5 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ManyakRus 415 29.03.21 10:16 Сейчас в теме
надо было померить скорость работы заодно :) разных способов
2. elephant_x 36 29.03.21 10:18 Сейчас в теме
(1) Хорошая идея. Вечером пожалуй сделаю, дополню статью, и добавлю тестовый файл)
3. ManyakRus 415 30.03.21 09:41 Сейчас в теме
И ещё хорошо бы "выбрать" самый лучший способ из всех(голосовалку :-). Я использую "Загрузка в табличный документ" т.к. тогда не надо устанавливать Excel, в том числе на сервере.
Ali1976; itoptimum; Jimbo; +3 Ответить
Оставьте свое сообщение

См. также

Загрузка прайс-листа из Excel / OpenOffice.org Calc в УТ 10.3, УПП 1.3, КА 1.1 Промо

Загрузка и выгрузка в Excel Оптовая торговля Оптовая торговля v8 КА1 УТ10 УПП1 Россия Абонемент ($m)

Обработка позволяет загрузить сотни строк номенклатурных позиций и зарегистрировать цены для них за десятки секунд в простой и наглядной форме.

14.02.2012    23556    282    karnilaev    65    

Внешняя обработка заполнения табличной части из Excel (с созданием Номенклатуры)

Загрузка и выгрузка в Excel Оптовая торговля Оптовая торговля v8 v8::БУ БП3.0 БУ Абонемент ($m)

Внешняя обработка заполнения табличной части из Excel (с созданием Номенклатуры)

1 стартмани

22.01.2017    20560    163    Batman    34    

Обработка выгрузки/загрузки табеля учета рабочего времени

Зарплата Учет рабочего времени Загрузка и выгрузка в Excel Зарплата Учет рабочего времени v8 ЗУП2.5 БУ УУ Абонемент ($m)

Обработка предназначена для выгрузки и загрузки табеля учета рабочего времени. Обработка выгружает шаблоны табеля учета рабочего времени в файлы Excel по подразделениям (для каждого подразделения один файл). И загружает введённые данные из этих же файлов.

1 стартмани

04.02.2014    23100    74    arr    5    

Сбор паспортных данных физ. лиц и сохранение в excel Промо

Управление персоналом (HRM) Загрузка и выгрузка в Excel Управление персоналом (HRM) v8 ЗУП2.5 Россия Абонемент ($m)

Сбор паспортных данных физ. лиц и сохранение в excel.

1 стартмани

17.11.2012    19536    88    alextyumen    8    

Загрузка начислений/удержаний из Excel

Загрузка и выгрузка в Excel Зарплата Зарплата v8 ЗУП2.5 Россия БУ Абонемент ($m)

Как то понадобилось загружать различные начисления или удержания из листа Excel в зарплатную базу. Написали эту обработку, при чем довольно наглядную в настройке, что и как загружать из файла.

1 стартмани

22.04.2012    8199    169    Greeen84    31    

Загрузка из Excel

Загрузка и выгрузка в Excel Производство готовой продукции (работ, услуг) Учет ТМЦ Производство готовой продукции (работ, услуг) Учет ТМЦ v8 УПП1 Россия Абонемент ($m)

Обработка для загрузки из товарной накладной / заявки (Excel) данных в справочник Номенклатура, регистр сведений Номенклатура контрагентов и табличную часть документа Поступление товаров и услуг. UPD: добавлены возможности загрузки перемещения из накладной и из лимитки и отчета производства из производственного листа UPD: добавлена загрузка оприходования, исправлены мелкие ошибки UPD: добавлен новая версия обработки (от 2017 года) с артикулами и штрихкодами

1 стартмани

27.02.2012    14104    197    FullMoon    10    

Удобная загрузка номенклатуры, картинок, прайсов и накладных из Excel (xls) и dbf-файлов для 1с 8.1/8.2 (обычные формы)

Учет ТМЦ Ценообразование, анализ цен Файловые протоколы обмена, FTP Загрузка и выгрузка в Excel Учет ТМЦ Ценообразование, анализ цен v8 1cv8.cf Россия Абонемент ($m)

Удобная загрузка номенклатуры (с картинками), в справочник Номенклатура и любые документы с табличной частью Товары, включая УстановкуЦенНоменклатуры из Excel (xls) и dbf-файлов для 1с 8.1/8.2. Только в обычном (не управляемом) режиме запуска.

1 стартмани

20.10.2011    61975    2095    sacred    347    

Загрузка зарплатных лицевых счетов в ЗУП из файла Excel

Обработка справочников Загрузка и выгрузка в Excel Банковские операции Зарплата Банковские операции Зарплата v8 ЗУП2.5 Россия Абонемент ($m)

Обработка предназначена для загрузки зарплатных лицевых счетов в ЗУП 2.5 из файла Excel.

1 стартмани

15.06.2011    15267    356    pas    14    

Выгрузка зарплаты в Сбербанк, перечисление на карточки

Файловые протоколы обмена, FTP Обмен с банком Банковские операции Зарплата Загрузка и выгрузка в Excel Банковские операции Зарплата v8 ЗУП2.5 Абонемент ($m)

Выгрузка зарплаты для Сбербанка, с возможностью формирования dbf файлов по разным осб, и автоматическое формирование реестров по зарплате в файл Excel

1 стартмани

02.08.2010    8060    538    Vancy43    23    

Загрузка табеля учета рабочего времени из файла Excel

Зарплата Загрузка и выгрузка в Excel Зарплата v8 ЗУП2.5 Россия БУ Абонемент ($m)

Небольшая обработка по загрузке данных об отработанном времени из xls-файла

15.11.2009    28967    754    smooth    65