|
v7: MSXML2.DOMDocument.6.0 VS MSXML2.DOMDocument.4.0 | ☑ | ||
---|---|---|---|---|
0
Franchiser
гуру
06.12.12
✎
13:55
|
Подскажите в чем разница, что улучшилось в последней версии. Думаю заменить в универсальной обработке выгрузке XML на данный объект. Пропадает ли ошибка с нехваткой памяти?
|
|||
1
Ёпрст
06.12.12
✎
13:57
|
не пропадёт.
и.. память есть не DOMDocument, если че. |
|||
2
Franchiser
гуру
06.12.12
✎
14:01
|
в описании на ms пишут что значительные улучшения в работе на 64bit системах... Интересно какие.
|
|||
3
Ёпрст
06.12.12
✎
14:02
|
(2) разбор мот побыстрее, да прочий мусор для разбора/поиска улучшили.
Тебе это не поможет при создании xmlфайла |
|||
4
Franchiser
гуру
06.12.12
✎
14:03
|
я к тому справшиваю, что раньше я думал что из-за того что выгрузка делается 1с7.7 то у нее есть ограничение на 2 гб памяти как 32bit приложения. Но если есть XMLDOM на 64bit значит может выделиться памяти до 3-4гб
|
|||
5
Ёпрст
06.12.12
✎
14:04
|
(4) какая наивность
еще раз - домдокумент тут вообще никоим боком. можешь файло хоть в гиг создать |
|||
6
Franchiser
гуру
06.12.12
✎
14:04
|
понятно( спс
|
|||
7
Ёпрст
06.12.12
✎
14:05
|
проблема только, откуда ты получаешь данные - из тз там какой-нить, которая отожрала всю память и привет.
|
|||
8
Ёпрст
06.12.12
✎
14:06
|
можешь проверить - запусти цикл до миллиона и пиши пару тегов и атрибутов через дом - нормально усё запишется..
|
|||
9
Franchiser
гуру
06.12.12
✎
14:09
|
но объект дом тоже ведь хранится в памяти, как экземляр записываемого файла обмена, значит он тоже память жрет. Я для себя нашел приемлемый вариант выгрузки частями, чисто для интереса хочется получить результат что-то вроде последовательной записи. На ис видел сегодня обработку за 10 тыр, где кд переписали для записи не через дом а какой то другой объект для выгрузки бол. объемов данных, интересно на какой объект можно заменить дом в выгрузке.
|
|||
10
Ёпрст
06.12.12
✎
14:13
|
(9) на запись в текстовый файл с ручной установкой тегов, через fso
|
|||
11
Ёпрст
06.12.12
✎
14:13
|
но, оно того не стоит.
|
|||
12
Franchiser
гуру
06.12.12
✎
14:16
|
я читал про это статью ромикса, но чтобы это делать правилами из КД не получится. Хотелось бы заменить процедуры на что-нибудь без ДОМ:
/****************************************************************************** // // // Параметры: // // Возвращаемое значение: // // Описание: // Функция СоздатьУзел(name) newNode = DOMDocument.createNode(1, name, ""); Возврат newNode; КонецФункции // СоздатьУзел() //****************************************************************************** // // // Параметры: // // Возвращаемое значение: // // Описание: // Процедура УстановитьАтрибут(element, name, value) element.setAttribute(name, Строка(value)); КонецПроцедуры // УстановитьАтрибут() //****************************************************************************** // // // Параметры: // // Возвращаемое значение: // // Описание: // Процедура ЗаписатьЭлемент(node, name, value = "") childNode = DOMDocument.createNode(1, name, ""); Попытка childNode.text = Строка(value); Исключение Сообщить("Не удалось записать элемент: "+name+", со значением: "+value); childNode.text = ""; КонецПопытки; node.appendChild(childNode); КонецПроцедуры // одЗаписатьЭлемент() //****************************************************************************** // // // Параметры: // // Возвращаемое значение: // // Описание: // Процедура ДобавитьПодчиненный(parentNode, childNode) parentNode.appendChild(childNode); КонецПроцедуры // ДобавитьПодчиненный() |
|||
13
Ёпрст
06.12.12
✎
14:20
|
(12) дык в стандартной КД разве не приблуда от v7plus ?
Там же нет домдокумента |
|||
14
Franchiser
гуру
06.12.12
✎
14:30
|
то код я привел и стандартной кд. Как раз выгрузка идет через DOM:
// ПОД Попытка _DOMDocument = CreateObject("Msxml2.DOMDocument.4.0"); Исключение _DOMDocument = CreateObject("Msxml2.DOMDocument"); КонецПопытки; _DOMDocument.load(ИмяФайлаПравил); УзелПОД = _DOMDocument.selectSingleNode("ПравилаОбмена/ПравилаОчисткиДанных"); ДобавитьПодчиненный(УзелПравилаОбмена, УзелПОД); УзелАлгоритмы = _DOMDocument.selectSingleNode("ПравилаОбмена/Алгоритмы"); ДобавитьПодчиненный(УзелПравилаОбмена, УзелАлгоритмы); УзелЗапросы = _DOMDocument.selectSingleNode("ПравилаОбмена/Запросы"); ДобавитьПодчиненный(УзелПравилаОбмена, УзелЗапросы); ДобавитьПодчиненный(rootNode, УзелПравилаОбмена) КонецПроцедуры // ИнициализацияФайлаОбмена() |
|||
15
Ёпрст
06.12.12
✎
14:33
|
(14) дык в типовой кд нет DOMDocument..
т.е ты ужо переписал и не устраивает, так что ли ? |
|||
16
Franchiser
гуру
06.12.12
✎
14:35
|
Это не я переписал, это 1с, типовой код сформированный правилами из типовой КД. Как раз я хотел это все убрать и сделать последовательную запись, чтобы не грузить память. и не пойму почему 1с не изпользует Msxml2.DOMDocument.6.0.
|
|||
17
Ёпрст
06.12.12
✎
14:36
|
(16) не знаю, где ты это взял, в типовой используется
объект от v7plus |
|||
18
Franchiser
гуру
06.12.12
✎
14:38
|
загрузил 1с правила переноса в КД , редакция 2.1 (2.1.6.1)
и выгрузил правила и обработчики. В обработчиках указанный код. v7plus кажется используется только при выгрузке в формате КД 1.0 а не КД 2. |
|||
19
Franchiser
гуру
06.12.12
✎
14:39
|
речь идет о выгрузке 7.7 - 8.2
|
|||
20
Ёпрст
06.12.12
✎
14:39
|
(18) может быть, один хрен ни то ни то не использую..
Ну поменяй на DOMDocument.6 - разницы никакой не будет |
|||
21
Franchiser
гуру
06.12.12
✎
14:40
|
лан хрен с ним
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |