![]() |
![]() |
![]() |
|
КД 2.0 DOM xpath | ☑ | ||
---|---|---|---|---|
0
kai17
17.09.08
✎
10:59
|
Пишу правила конвертации 8.1 -> 8.1
После загрузки объекта "организации" хочу на основании данных XML файла сделать дополнительные действия . для этого в обработчике "ПослеЗагрузкиОбъекта" пишу: Нпп = одАтрибут(ФайлОбмена, одТипСтрока, "Нпп"); DOMПостроитель = Новый ПостроительDOM() ; ЧтениеXML = Новый ЧтениеXML ; ЧтениеXML.ОткрытьФайл(ИмяФайлаОбмена) ; DOMФайлОбмена = DOMПостроитель.Прочитать(ЧтениеXML) ; ТекстЗапросаXPath = "/Объект[@Нпп="""+Нпп+"""][@Тип=""СправочникСсылка.Организации""][@ИмяПравила=""Организации""]" ; XPathЗапрос = DOMФайлОбмена.СоздатьВыражениеXPath(ТекстЗапросаXPath,DOMФайлОбмена.СоздатьРазыменовательПИ(DOMФайлОбмена)) ; РезультатЗапросаXPath = DOMФайлОбмена.ВычислитьВыражениеXPath(XPathЗапрос ,DOMФайлОбмена ,,DOMФайлОбмена.СоздатьРазыменовательПИ(DOMФайлОбмена)) ;//XPathЗапрос.Вычислить(DOMФайлОбмена); // КоличествоНайденныхЭлеметов = РезультатЗапросаXPath.РазмерСнимка ; Сообщить("КоличествоНайденныхЭлеметов = "+КоличествоНайденныхЭлеметов+" | ТекстЗапросаXPath : "+ТекстЗапросаXPath) ; Сообщить("ПолучитьСледующий = "+РезультатЗапросаXPath.ПолучитьСледующий()) ; Пока НЕ(РезультатЗапросаXPath.ПолучитьСледующий()= Неопределено) Цикл Сообщить("РезультатЗапросаXPath "+РезультатЗапросаXPath) ; КонецЦикла в итоге выдаёт что свойство РазмерСнимка не существует у объекта РезультатЗапросаXPath . Что я делаю не правильно ? |
|||
1
Defender aka LINN
17.09.08
✎
11:02
|
(0) Ипануться... Ниче, что в этом событии "Приемник" - это ЗаписьXML? Не говоря уж о том, что файл еще не записан, а может и не создан?
|
|||
2
borik
17.09.08
✎
11:04
|
(0) Если уж ты формируешь динамически запрос по объектам, может пойти дальше и формировать его аналогично и по реквизитам объекта, а там и выборку также сделать, глядишь проблема и снимется.
|
|||
3
kai17
17.09.08
✎
11:06
|
(1) Переменная "Приемник" используется при выгрузке .
Событие вызывается при загрузке. Используются переменные : ИмяФайлаОбмена - строка с полным именем файла обмена . Нпп - порядковый номер текущего загруженного объекта. |
|||
4
Defender aka LINN
17.09.08
✎
11:08
|
(3) При загрузке? Ладно, ошибся, там не "Приемник", а "ФайлоОбмена". И что ж ты хочешь сделать-то? Есть мнение, что пытаешься очередной велосипед изобрести.
|
|||
5
kai17
17.09.08
✎
11:09
|
(2) выборка (xpath) как раз и не работает. Формировать дополнительные данные в xml на этапе выгрузки пока не требуется (использую только стандартные реквизиты объектов).
|
|||
6
kai17
17.09.08
✎
11:11
|
(4) Согласен , велосипед . но хочу его сделать на xpath через DOM .
Необходимо получить атрибут "наименование" у объекта с атрибутом НПП =<например 3> |
|||
7
Defender aka LINN
17.09.08
✎
11:12
|
(6) Так что является целью: "сделать на xpath через DOM", или все же "получить атрибут "наименование" у объекта с атрибутом НПП =<например 3>"?
|
|||
8
kai17
17.09.08
✎
11:16
|
(6) основная задача - получить аттрибут .
для упрощения выборки данных был выбран инструмент xpath (как наиболее удобный для запросов по параметрам в XML) . Каким образом можно получить аттрибут без использования прямого перебора узлов ? |
|||
9
Defender aka LINN
17.09.08
✎
11:18
|
(8) Я бы тупо запоминал при загрузке в параметры :) Или стандартными методами обработки.
|
|||
10
kai17
17.09.08
✎
11:25
|
(8) если данные произвольные , то можно и в параметры . в данном случае данные типовые (код , наименование , реквизиты) . Стандартные методы обработки не позволяют получить предыдущий объект/узел (по НПП) .
|
|||
11
Defender aka LINN
17.09.08
✎
11:32
|
(10) А ты так уверен, что предыдущий узел - это тот объект, что тебе нужен? Делай средствами 1С и не парься.
|
|||
12
kai17
17.09.08
✎
11:45
|
(10) задам вопрос по другому , xpath вообще в 1с работает ? где взять пример? (типовые xpath'ом не польузются , везде ПолучитьАтрибут по имени/номеру )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |