gifts2017

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

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

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

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

В представленной обработке немного изменен механизм чтения данных из файла MS 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. Сергей Ожерельев (Поручик) 20.06.11 00:43
Я делал копи-пастом из открытого Excel в табличное поле. Получалось ещё быстрее :D
2. Яков Коган (Yashazz) 20.06.11 01:53
3. г. Казань Рустем Гумеров (Rustig) 21.06.11 11:07
(0) Спасибо! Статья небольшая, но отлично подготовлена и написана! Некоторая информация пригодилась! При этом я чаще копирую из Эксель в ТабличныйДокумент 1С и дальше обрабатываю уже ТД, чем пользуюсь стандартной обработкой.
4. Яков Коган (Yashazz) 21.06.11 15:25
А вообще забавно, как все пытаются читать обычным com-обменом, напрочь игнорируя прямой доступ к файлам Excel, ADO, csv-чтение и другие полезные вещи. Которые, к слову, гораздо быстрее любых Sheets и Range.
cool.vlad4; +1 Ответить 1
5. Ийон Тихий (cool.vlad4) 21.06.11 15:27
6. Ийон Тихий (cool.vlad4) 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) между триадами. Считаю что так не должно быть по умолчанию ))
10. Наталья Зотова (natik86) 27.09.11 13:22
Похожая обработка есть на ИТС.
11. Алексей Наумов (aleksey2) 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) 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) 16.11.11 18:34
Отличная вещь, главное достоинство что существует 2 варианта загрузки, это очень удобно поскольку при загрузке *.xls, ячейки а которых числовые значения при преобразовании в строку, как в оптимизированном варианте этой обработки, так и новой версии этой обработки от 1с, разделяются на триады, и при загрузке появляются пробелы...
20. Kostya Zhurov (It-developer) 01.12.11 17:54
21. Damian (Damian) 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) 09.06.13 16:33
а у меня выходит ошибка "{ВнешняяОбработка.ЗагрузкаДанныхИзТабличногоДокумента.МодульОбъекта(1982)}: Поле объекта не обнаружено (ЭлементыФормы)
Для каждого ЭлементФормы Из Форма.ЭлементыФормы Цикл
"
28. Юленька (s_uu) 09.06.13 16:36
а у меня выходит ошибка "{ВнешняяОбработка.ЗагрузкаДанныхИзТабличногоДокумента.МодульОбъекта(1982)}: Поле объекта не обнаружено (ЭлементыФормы)
Для каждого ЭлементФормы Из Форма.ЭлементыФормы Цикл
"
29. Damian (Damian) 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) 23.01.14 13:50
Спасибо за обработку, очень помогла при загрузке 35000 строк.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа