Загрузка данных из табличного документа (оптимизация для работы с MS Excel)

Опубликовал Damian (Damian) в раздел Обработки - Универсальные обработки

Оптимизация обработки с диска ИТС "Загрузка данных из табличного документа" с целью ускорения загрузки в табличный документ файла MS Excel

В последнее время что-то все чаще приходится пользоваться этой обработкой. И постоянно напрягает, что файл Excel загружается в табличный документ чрезвычайно долго (иногда успеваю два раза сходить покурить :).

В представленной обработке немного изменен механизм чтения данных из файла MS Excel.

Основой для такой оптимизации послужила публикация "Быстрая функция чтения данных с листа Excel" от wildhog.

В результате файл, содержащий 15900 строк и 6 колонок вместо 5 минут загружается 8 секунд.

Кроме ускорения загрузки есть еще одно принципиальное различие.

Стандартный алгоритм получает данные, используя свойство ячейки Text. Оптимизированный алгоритм получает данные, используя свойство Value. Основное их различие в том, что свойство Text содержит отформатированные данные. Вот выдержка из справки по VBA MS Excel:


This example illustrates the difference between the Text and Value properties of cells that contain formatted numbers.

Visual Basic for Applications

Set c = Worksheets("Sheet1").Range("B14")
c.Value = 1198.3
c.NumberFormat = "$#,##0_);($#,##0)"
MsgBox c.Value
MsgBox c.Text


Так что, по большому счету, разницы практически никакой.

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

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

Наименование Файл Версия Размер
ЗагрузкаДанныхИзТабличногоДокумента 8.2 (Damian Edition).epf
.epf 61,48Kb
22.11.14
1121
.epf 61,48Kb 1121 Скачать

См. также

Комментарии
1. Сергей Ожерельев (Поручик) 3493 20.06.11 00:43 Сейчас в теме
Я делал копи-пастом из открытого Excel в табличное поле. Получалось ещё быстрее :D
2. Яков Коган (Yashazz) 1977 20.06.11 01:53 Сейчас в теме
3. г. Казань Рустем Гумеров (Rustig) 781 21.06.11 11:07 Сейчас в теме
(0) Спасибо! Статья небольшая, но отлично подготовлена и написана! Некоторая информация пригодилась! При этом я чаще копирую из Эксель в ТабличныйДокумент 1С и дальше обрабатываю уже ТД, чем пользуюсь стандартной обработкой.
4. Яков Коган (Yashazz) 1977 21.06.11 15:25 Сейчас в теме
А вообще забавно, как все пытаются читать обычным com-обменом, напрочь игнорируя прямой доступ к файлам Excel, ADO, csv-чтение и другие полезные вещи. Которые, к слову, гораздо быстрее любых Sheets и Range.
cool.vlad4; +1 Ответить 1
5. Ийон Тихий (cool.vlad4) 41 21.06.11 15:27 Сейчас в теме
6. Ийон Тихий (cool.vlad4) 41 21.06.11 15:29 Сейчас в теме
имеет смысл пользоватся комом, если используются специфичные вещи приложения(цвет ячейки например), но здесь не тот случай
7. Максим Сметанников (mc-sim) 28.07.11 21:13 Сейчас в теме
Ребята, а подскажите, использую платформу 8.2 с конфигурацией управление торговлей 11, так вот обработка не открывается! Точнее открывается но в маленьком окне и без кнопок...
8. Александр Крутой (Alex@ander) 20.09.11 03:49 Сейчас в теме
Оптимизировал хорошо, только вот у меня в результате в табличный документ число из текстового поля артикул загрузилось не числом, как оно загружается "не оптимизированным способом", а как строка с неразрывным пробелом (КодСимвола 160) между триадами. Считаю что так не должно быть по умолчанию ))
9. Ольга Кузнецова (Tristania) 21.09.11 09:42 Сейчас в теме
10. Наталья Зотова (natik86) 27.09.11 13:22 Сейчас в теме
Похожая обработка есть на ИТС.
11. Алексей Наумов (aleksey2) 74 30.09.11 09:43 Сейчас в теме
в названии не должно быть пробелов так как скачивается без расширения ЗагрузкаДанныхИзТабличногоДокумента
12. Solid Li (Solid) 17.10.11 15:21 Сейчас в теме
Зачем вводить в заблуждение, обработка не для управляемого приложения. За это надо банить.
Какого ... я потратил свои тугрики на это г... :)
13. Вероника (Likusia) 21.10.11 10:27 Сейчас в теме
спасибо, очень хорошо помогает в работе
14. Nick K (Nick5k) 26.10.11 20:59 Сейчас в теме
А где на итс лежат обработки? Не могу найти!
15. Damian (Damian) 859 27.10.11 00:03 Сейчас в теме
(12) никто и не говорил, что она для управляемого приложения.
16. Антон Самаркин (AntoxaVR6) 04.11.11 05:01 Сейчас в теме
Хорошая штука! Я доволен
17. Reik Reik (reik) 11.11.11 13:58 Сейчас в теме
18. dpagon (dpagon) 6 16.11.11 18:34 Сейчас в теме
Отличная вещь, главное достоинство что существует 2 варианта загрузки, это очень удобно поскольку при загрузке *.xls, ячейки а которых числовые значения при преобразовании в строку, как в оптимизированном варианте этой обработки, так и новой версии этой обработки от 1с, разделяются на триады, и при загрузке появляются пробелы...
20. Kostya Zhurov (It-developer) 20 01.12.11 17:54 Сейчас в теме
21. Damian (Damian) 859 01.12.11 20:46 Сейчас в теме
(20), согласен, ADO быстрее отработает (+ еще и от наличия установленного MS Excel не зависит), но на тот момент решил не заморачиваться.
22. Надежда Иванова (Bacbka) 13.01.12 00:57 Сейчас в теме
Спасибо, очень пригодилось. Действительно, выводились не все кнопки, помогла перезагрузка, как написано выше. Загружает на порядок быстрее стандартной, удобнее и время экономит
24. Наталья Зотова (natik86) 25.01.12 16:44 Сейчас в теме
Что то не могу разобраться в обработке...
25. uno dos (unoDosTres) 01.03.12 12:24 Сейчас в теме
отличная обработка, значительно быстрей работает, даже не ожидал
26. Dyuha K (dyuha) 31.05.12 10:02 Сейчас в теме
Мне помнится в 8.1 по кнопке обновить загружалась текущая информация из справочника, а в 8.2 этого не происходит. Подскажите, пожалуйста, может я что-то не так делаю?
27. Юленька (s_uu) 16 09.06.13 16:33 Сейчас в теме
а у меня выходит ошибка "{ВнешняяОбработка.ЗагрузкаДанныхИзТабличногоДокумента.МодульОбъекта(1982)}: Поле объекта не обнаружено (ЭлементыФормы)
Для каждого ЭлементФормы Из Форма.ЭлементыФормы Цикл
"
28. Юленька (s_uu) 16 09.06.13 16:36 Сейчас в теме
а у меня выходит ошибка "{ВнешняяОбработка.ЗагрузкаДанныхИзТабличногоДокумента.МодульОбъекта(1982)}: Поле объекта не обнаружено (ЭлементыФормы)
Для каждого ЭлементФормы Из Форма.ЭлементыФормы Цикл
"
29. Damian (Damian) 859 10.06.13 09:53 Сейчас в теме
(27) Странно, по указанному номеру строки подобной конструкции нет...
Такой цикл есть ниже по коду, в строке 2038 и выполняется, когда выбираем режим загрузки "В табличную часть документа".
Опишите поподробнее, какие действия приводят к ошибке.
30. никита казарфн (lelvisl) 22.07.13 13:43 Сейчас в теме
Просьба подсказать в чем может быть проблема- - обработчик загружает данные в любой справочник, кроме нуменклатуры.
При попытке загрузки в нуменклатуру не выдает ошибок, но потом загруженных данных там не отображается.
При чем загрузка в любое другое место проходит успешно. В чем может быть проблема?
31. Владимир Клименко (KliMich) 13.08.13 12:59 Сейчас в теме
Спасибо! Переделал. А то страндартным образом у меня загрузка почти всю ночь шла...
32. Viacheslav Bilous (Gendalf_beliy) 22.01.14 12:34 Сейчас в теме
Спасибо, теперь сотня тысяч строк загружается намного быстрее
33. Елена Ситникова (lesenoklenok) 18 23.01.14 13:50 Сейчас в теме
Спасибо за обработку, очень помогла при загрузке 35000 строк.