|
v7: Быстродействие загрузки и разбора XML-файла с заказами | ☑ | ||
---|---|---|---|---|
0
julien
18.01.12
✎
16:36
|
Здравствуйте!
Подскажите, пожалуйста, если кто-то с подобным сталкивался. Есть интернет-магазин (битрикс), заказы (xml-формат CommerceML 1.0) в 1С забираю библиотекой v7plus.dll по http-протоколу. Столкнулась с тем,что на разных компьютерах время выполнения обработки может составить от 1-5 минут в зависимости от мощности компьютера. Есть еще другие способы загрузки и парсинга XML-файла? |
|||
1
andrewks
18.01.12
✎
16:49
|
да. если рассматривать не-ДОМ модели, то
1. OpenXML 2. свой парсинг текстового файла через adodb или FSO |
|||
2
julien
18.01.12
✎
16:54
|
andrewks, я правильно понимаю, что ДОМ-модели предназначены для небольшого объема документов, и в этом причина медленного выполнения обработки? Но как оценить, что предложенные Вами способы увеличат быстродействие?
|
|||
3
andrewks
18.01.12
✎
17:01
|
смотря, что для вас небольшой объём.
какие размеры xml-файлов? |
|||
4
julien
18.01.12
✎
17:32
|
andrewks, все зависит от заказа. Бывает до 300 мегабайт.
|
|||
5
Mikeware
18.01.12
✎
17:36
|
(4) обрабатывать трехсотметровые иксэмэльки в-семь-плюсом - это отдельное мазохическое удовольствие....
|
|||
6
julien
18.01.12
✎
17:37
|
Mikeware, а что делать,если основное требование - автоматизировать работу в 1С, и на 8-ку упорно переходить не намереваются?
|
|||
7
andrewks
18.01.12
✎
17:43
|
||||
8
andrewks
18.01.12
✎
17:45
|
но я бы лично написал с использованием adodb
|
|||
9
andrewks
18.01.12
✎
17:46
|
во, здесь много инфы. изучай: Книга знаний: Чтение и запись текстовых файлов XML средствами 1С:Предприятие 7.7
|
|||
10
julien
18.01.12
✎
17:47
|
Да, уже нашла эту страницу. andrewks, спасибо,что откликнулись! И за советы!
|
|||
11
andrewks
18.01.12
✎
17:51
|
(10) учти, с OpenXML и FSO могут возникнуть проблемы с некоторыми образцами xml-файлов. идеальный вариант - взять алгоритмы из (9), но чтение/запись текста заменить на использование adodb. вот небольшой пример, как работать с этим объектом:
Попытка SF=СоздатьОбъект("ADODB.Stream"); SF.CharSet="windows-1251"; DF=СоздатьОбъект("ADODB.Stream"); DF.CharSet="utf-8"; Исключение Сообщить("Не удалось создать объект ADODB.Stream","!"); Возврат; КонецПопытки; Папка1=""; Папка2=""; Если ФС.ВыбратьКаталог(Папка1,"Выберите исходную папку")<>1 Тогда Возврат; КонецЕсли; Если ФС.ВыбратьКаталог(Папка2,"Выберите папку назначения")<>1 Тогда Возврат; КонецЕсли; ИмяФайла1=ФС.НайтиПервыйФайл(Папка1+"\*.fodt"); Пока (ПустаяСтрока(ИмяФайла1)=0) Цикл Сообщить("Обработка файла: "+ИмяФайла1); SF.Open(); DF.Open(); SF.LoadFromFile(Папка1+"\"+ИмяФайла1); SF.CopyTo(DF); DF.SaveToFile(Папка2+"\"+ИмяФайла1,2); SF.Close(); DF.Close(); ИмяФайла1=ФС.НайтиСледующийФайл(); КонецЦикла; узнай больше о нём на http://www.w3schools.com/ado/ado_ref_stream.asp |
|||
12
andrewks
18.01.12
✎
17:51
|
узнай больше об adodb на http://www.w3schools.com/ado/ado_ref_stream.asp
|
|||
13
julien
18.01.12
✎
17:55
|
andrewks,почему все-таки советуешь средствами adodb?
|
|||
14
andrewks
18.01.12
✎
17:55
|
(13) ну, например, у FSO могут возникнуть проблемы с файлами в кодировке utf-8. у OpenXML тоже есть свои тараканы
|
|||
15
julien
18.01.12
✎
17:57
|
Возникнут однозначно, все в utf-8. А средствами adodb я могу забрать xml-файл с удаленного фтп-сервера?
|
|||
16
andrewks
18.01.12
✎
17:58
|
(15) а сейчас ты как его забираешь?
|
|||
17
julien
18.01.12
✎
18:01
|
v7plus.dll
HTTPСервис = СоздатьОбъект("AddIn.V7HHTPReader"); HTTPСервис.ПолучитьКакФайл(Адрес, ФайлЗаказов) |
|||
18
andrewks
18.01.12
✎
18:03
|
(17) ну, тогда так же и оставь, чтобы меньше переделывать, здесь ты навряд ли достигнешь весомого ускорения за счёт смены инструмента. просто полностью замени блок парсинга xml-файла
кстати, на всякий случай замерь, сколько у тебя каждый раз грузится файл (можно в лог-файл писать), может, периодически интернет тормозит |
|||
19
julien
18.01.12
✎
18:06
|
Хорошо,спасибо,andrewks!!Буду пробовать через adodb
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |