Здравствуйте друзья. Понадобилось сделать обработку загрузки из Excel так как типовая с ИТС не подходит для наших целей. Вот что у меня получилось:
По итогу засек время загрузки в ТЧ. Вот результат: Строк 30600, столбцов 2, Время 3 мин 15 сек.
Может быть можно как-то ускорить процесс или это нормально?
&НаКлиенте
Процедура ВыборФайлаЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
ДиалогВыбораФайла = ДополнительныеПараметры.ДиалогВыбораФайла;
Если (ВыбранныеФайлы <> Неопределено) Тогда
ЭтаФорма.ИмяФайла = ДиалогВыбораФайла.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Загрузить(Команда)
Массив=Новый Массив;
Попытка
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(Строка,1).Value); //НаименованиеНашегоПрайса
Значение2 = СокрЛП(ExcelЛист.Cells(Строка,2).Value); //НаименованиеПоПоставщику
КонецЦикла;
Стурктура.Вставить("Номенклатура",Значение);
Стурктура.Вставить("ДополнительныйРеквизит",Значение2);
Массив.Добавить(Стурктура);
КонецЦикла;
ЗаполнитьТабличнуюЧастьТовары(Массив);
WorkBook.Close();
Исключение
COMОбъект.Quit();
COMОбъект = 0;
СообщениеОбОшибке = НСтр("ru = 'Не удалось прочитать данные из файла. Подробности: '")
+ КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
ВызватьИсключение СообщениеОбОшибке;
КонецПопытки;
КонецПроцедуры
&Насервере
Процедура ЗаполнитьТабличнуюЧастьТовары(Массив)
Для Каждого Эл из Массив цикл
Номенклатура=Справочники.Номенклатура.НайтиПоНаименованию(СокрЛП(Эл.Номенклатура),Истина);
НоваяСтрока=Объект.Товары.Добавить();
НоваяСтрока.Номенклатура=Номенклатура;
НоваяСтрока.ДополнительныйРеквизит=Эл.ДополнительныйРеквизит;
КонецЦикла;
КонецПроцедуры
ПоказатьПо итогу засек время загрузки в ТЧ. Вот результат: Строк 30600, столбцов 2, Время 3 мин 15 сек.
Может быть можно как-то ускорить процесс или это нормально?
По теме из базы знаний
- Загрузка из EXCEL в 1С. MS EXCEL.Application
- Загрузка документов из Excel в 1С: УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Почему при загрузке таблицы Excel в 1С возникают ошибки?
- Загрузка из Excel в 1С: Бухгалтерию в документ Отчет производства за смену
- Универсальная загрузка из Excel в 1С
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Cells исключительно тугая штука.
http://infostart.ru/public/163640/
Значение = СокрЛП(ExcelЛист.Cells(Строка,1).Value); //НаименованиеНашегоПрайса
Значение2 = СокрЛП(ExcelЛист.Cells(Строка,2).Value); //НаименованиеПоПоставщику
Cells исключительно тугая штука.
(7) ong1990, примерно так:
МассивЗначений - это массив 1С, его уже крути как хочешь.
Лист_ = Книга_.Sheets.Item(НомЛиста);
СтрокНаЛисте = Лист_.Cells.SpecialCells(11).Row;
ОбластьЗначений = Лист_.Range(Лист_.Cells(1, 1), Лист_.Cells(СтрокНаЛисте, 2));//получили два столбца
МассивЗначений = ОбластьЗначений.Value.Выгрузить();//получили многомерный массив со столбцами
МассивЗначений - это массив 1С, его уже крути как хочешь.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот