x 

Чтение Excel, ADO, COM и COMSAFEARRAY.

1 1 1 1 1 1 1 1 1 1 Рейтинг 0.00
Рейтинг:   / 0
ПлохоОтлично 

Опубликовано: 2015.01.19

Загрузка данных в 1С

Доброго времени суток! Сегодня хотелось бы вернуться к избитой теме загрузки из Excel.

Все нам отлично известен способ обработки Excel файла через COMсоединение, но есть и другие способы обработки данных. Например «ADO», ActiveX Data Objects, позволяет представлять данные из разнообразных источников, а так же тип данных, такой как COMSafeArray, о нем достаточно обширная справка в синтаксис помощнике.

Цель этой темы сравнить 3 различных режима загрузки данных из Excel, двух разных файлов. В одном файле будет 4 строки и 7 колонок, не считая шапки, во втором 12000 строк и 7 колонок. 

Что же начнем, первым будет файл из четырех строк и способ ADO:

Загрузка данных в 1С 

Результаты вот:

Загрузка данных в 1С

Что же весьма не плохо, давайте теперь попробуем файл на 12000 строк, результат: 

Загрузка данных в 1С 

Быстро.

Теперь перейдем к способу через COMСоединение. Начнем с маленького файла:

Загрузка данных в 1С 

Результат:

Загрузка данных в 1С  

ОГО! Вот такая у меня реакция ADO выполнился за 60 мсек., а COM за 2 972 мсек. Разница весьма большая. Что же будет на 12000 тысячах строк?

Результат:

Загрузка данных в 1С 

Ну, что тут сказать. Все очень плохо

Но не будем спешить, у нас есть еще третий способ COMSafeArray. Как можно понять из названия способ тоже работает по технологии COM. Суть способа в том чтобы выгрузить данные листа и загрузить по колонкам. Вот так:

Загрузка данных в 1С 

Результат маленького файла:

Загрузка данных в 1С 

Немного быстрей обычного COM способа, но до ADO все еще очень далеко. Осталось только проверить этот способ на файлике с 12000 строк. Зачем спросите Вы, тут и так все понятно. Вот тут и будет сюрприз

Обрабатываем файл и результат:

Загрузка данных в 1С 

Вполовину быстрей, чем ADO. Почему так? В случае ADO мы сделали запрос к листу и получили набор данных, которые записали в таблицу, в случае COM мы перебирали строчка за строчкой, а в случае с COMSafeArray мы выгрузили лист по колонкам и так же по колонкам загрузили, в последнем случае количество строк не играло значительную роль. Какой способ использовать решать Вам.

Если у вас есть еще способы – делитесь, с удовольствием замеряем результаты. 

С другими полезными темами вы можете ознакомиться в нашей базе знаний

Все Услуги 1С компании FinSoft вы можете посмотреть перейдя по ссылке

Так же Вы можете ознакомиться с нашими разработками 1С

Если у вас остались вопросы, Вы всегда можете обратиться к нашим аналитикам по телефонам:

(057) 780-70-70

(095) 090-70-20

(068) 090-70-20