Загрузка из EXCEL в 1с в редакции 8.3

1. user734952 05.12.23 10:19 Сейчас в теме
Добрый день! Необходимо написать обработку Загрузка из EXCEL в 1с, делаю это первый раз нашла в инете как это делать здесь https://programmist1s.ru/zagruzka-iz-excel-v-1s/ пишется для 8.3 но пример обработки на 8.2. Но все таки попробовала сделать в управляемой форме, но зависает и ничего не происходит, приходиться принудительно прерывать. Помогите посмотрите пожалуйста где ошибка.
&НаКлиенте
Процедура ВыполнитьЗагрузку(Команда) 
        ПрочитатьДокумент(ИмяФайла);
КонецПроцедуры   
            
&НаСервереБезКонтекста
Процедура ПрочитатьДокумент(ИмяФайла)
    НачатьТранзакцию();
	//подключаемся к эксел
	Попытка
		Excel = Новый COMОбъект("Excel.Application");
		Excel.WorkBooks.Open(ИмяФайла);
		//Состояние("Обработка файла Microsoft Excel...");
	Исключение
		Сообщить("Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!");
		Сообщить(ОписаниеОшибки());
		Возврат;
	КонецПопытки;
		
	Попытка 
    	//Открываем необходимый лист
    	Excel.Sheets(1).Select();  // лист 1, по умолчанию  
	Исключение
		//Закрываем Excel
	    Excel.ActiveWorkbook.Close(); 	
		Excel = 0;
		Сообщить("Файл "+Строка(ИмяФайла)+" не соответствует необходимому формату! Первый лист не найден!");
		ОтменитьТранзакцию();
		Возврат;
	КонецПопытки;	
	
    //Получим количество строк и колонок.
    //В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
    Версия = Лев(Excel.Version,Найти(Excel.Version,".")-1);
    Если Версия = "8" тогда
        ФайлСтрок   = Excel.Cells.CurrentRegion.Rows.Count;
        ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
	Иначе
		ФайлСтрок   = Excel.Cells(1,1).SpecialCells(11).Row;
		ФайлКолонок = Excel.Cells(1,1).SpecialCells(11).Column;   
	Конецесли;
	
	//считываем первую строку и генерируем колонки
	
	Сч = 1;
	Пока ЗначениеЗаполнено(Excel.Cells(1, Сч).Text) Цикл
		ИмяКолонки = Excel.Cells(1, Сч).Text;
		ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ",""); // убираем из имени колонок пробелы  
		Сообщить("ИмяКолонки="+ИмяКолонки);
		//Расшифровка.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);
		//НоваяКолонка = ЭлементыФормы.Расшифровка.Колонки.Добавить(ИмяБезПробелов, ИмяКолонки);
		//НоваяКолонка.Данные = ИмяБезПробелов;
		//Сч = Сч + 1;
	КонецЦикла;	
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 05.12.23 10:37 Сейчас в теме
(1) Сейчас правильно загружать через табличный документ. Санкции, импортозамещение...
3. user734952 05.12.23 10:42 Сейчас в теме
Все решила проблему, вот здесь нашла https://forum.infostart.ru/forum9/topic144440/ . По этому примеру сделала загрузку работает, вопрос закрыт
4. user734952 05.12.23 12:17 Сейчас в теме
Что то поторопилась, работать то работает, но вот из массива выбирает только шапку а далее значение не получаю с массивом в редакции 3 не работала, посмотрите пожалуйста код и если можно подскажите
    Массив=Новый Массив; 

	Попытка
		COMОбъект = Новый COMОбъект("Excel.Application");
		Workbook   = COMОбъект.Workbooks.Open(ИмяФайла);
		ExcelЛист  = COMОбъект.Sheets(1);
		ActiveCell = COMОбъект.ActiveCell.SpecialCells(11);
		RowCount = ActiveCell.Row;
		ColumnCount = ActiveCell.Column;    
		
		
		
		Для Строка = 1 По RowCount Цикл   
			Для Колонка = 1 По ColumnCount Цикл
				Стурктура=Новый Структура;
				//Значение=ExcelЛист;
				Значение  = СокрЛП(ExcelЛист.Cells(Строка,5).Value);  //Код поставщика
				Значение2 = СокрЛП(ExcelЛист.Cells(Строка,12).Value);  //Сумма комиссии     
			КонецЦикла;  
			Стурктура.Вставить("КодПоставщика",Значение);
			Стурктура.Вставить("СуммаКомиссии",Значение2);
			Массив.Добавить(Стурктура);
		КонецЦикла;
		ЗаполнитьТабличнуюЧастьТовары(Массив);
		WorkBook.Close();        
	Исключение
		COMОбъект.Quit();
		COMОбъект = 0;
		СообщениеОбОшибке = НСтр("ru = 'Не удалось прочитать данные из файла. Подробности: '")
		+ КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
		ВызватьИсключение СообщениеОбОшибке;  
		
	КонецПопытки;    
Показать

5. igor63 05.12.23 12:21 Сейчас в теме
ТабДок = Новый ТабличныйДокумент;
	
	Попытка
		ТабДок.Прочитать(Файл, СпособЧтенияЗначенийТабличногоДокумента.Текст);
	Исключение 
		Сообщить("Не удалось прочитать файл!");	
	КонецПопытки; 
	
	
	ТекЛист = Табдок.ПолучитьОбласть("НазваниеОбласти");
	ТекСтрока = 2; 
	
	Пока Истина Цикл
		Код = СокрЛП(ТекЛист.Область(ТекСтрока,1).Текст);
		Если Код = "" Тогда 
			Прервать;
		КонецЕсли;
		ТекСтрока = ТекСтрока + 1;
	КонецЦикла;
Показать
starik-2005; +1 Ответить
Оставьте свое сообщение

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