Загрузка данных из табличного документа (оптимизация для работы с 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 Скачать

См. также

PowerTools от 1 000
Добавить вознаграждение
Комментарии
1. Сергей Ожерельев (Поручик) 3439 20.06.11 00:43 Сейчас в теме
Я делал копи-пастом из открытого Excel в табличное поле. Получалось ещё быстрее :D
2. Яков Коган (Yashazz) 1940 20.06.11 01:53 Сейчас в теме
3. г. Казань Рустем Гумеров (Rustig) 773 21.06.11 11:07 Сейчас в теме
(0) Спасибо! Статья небольшая, но отлично подготовлена и написана! Некоторая информация пригодилась! При этом я чаще копирую из Эксель в ТабличныйДокумент 1С и дальше обрабатываю уже ТД, чем пользуюсь стандартной обработкой.
4. Яков Коган (Yashazz) 1940 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) 72 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) 858 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) 858 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) 858 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 строк.