Имя: Пароль:
1C
 
Загрузка из XML

0 BB52
 
27.11.06
15:21
Подскажите плз что в приведенном коде нужно поменять чтобы получить данные по товарам?
   имяф=КаталогИБ()+"XML\tovar.xml";
   objDom=СоздатьОбъект("MSXML.DOMDocument");
   objDom.load(имяф);
   
   obj = objDom.selectNodes("//Товары") ;
   Для i1 = 0 По obj.length - 1 Цикл
       obj1=obj.item(i1);
       для i2=1 по obj1.childNodes.length Цикл
           obj2=obj1.childNodes.item(i2-1);    
           сообщить(obj2.text);
             сообщить(obj2.nodeName);
                                   
           Ид=0+obj2.getAttribute("Ид");
           Наименование=obj2.getAttribute("Наименование");
           Единица=obj2.getAttribute("Единица");
           ЦенаЗаЕдиницу=0+obj2.getAttribute("ЦенаЗаЕдиницу");
           сообщить("Ид: "+Ид+"  Наименование: "+Наименование+"  Единица: "+Единица+"  ЦенаЗаЕдиницу: "+ЦенаЗаЕдиницу);
       КонецЦикла;
       
   КонецЦикла;
в результате выполнения получаю следующее:
85001800 Ajusa гидрокомпенсаторГидрокомпенсаторы17,210шт.1Ajusa85001800
Товар
Ид: 0  Наименование:   Единица:   ЦенаЗаЕдиницу: 0
46754 Diesel System Cleaner Wynn's очиститель топливной системыПрисадки в топливо3,337шт.1Wynn's46754
Товар
Ид: 0  Наименование:   Единица:   ЦенаЗаЕдиницу: 0
47355 Fuel Stabilizer Wynn's присадка для стабилизации свойств тПрисадки в топливо2,588шт.1Wynn's47355
Товар
Ид: 0  Наименование:   Единица:   ЦенаЗаЕдиницу: 0
1 GrayT
 
27.11.06
15:32
Кусок XML-я покажи, а то осчучение что текст есть, а атрибутов нет
2 BB52
 
27.11.06
15:39
так он выглядит в XMLEditor
 <?xml version="1.0" encoding="UTF-16" ?>
- <КоммерческаяИнформация ВерсияСхемы="2.01" ДатаФормирования="2006-11-23">
- <Документ>
 <ХозОперация>ЗаказТовара</ХозОперация>
 <Номер>7263867</Номер>
 <Дата>2006-11-23</Дата>
 <Роль>Покупатель</Роль>
 <Валюта>EUR</Валюта>
 <Курс>2150</Курс>
 <Кратность>1,27</Кратность>
+ <Контрагенты>
- <Контрагент>
 <Ид>3333</Ид>
 <Роль>Покупатель</Роль>
 </Контрагент>
- <Контрагент>
 <Ид>47</Ид>
 <Роль>Продавец</Роль>
 </Контрагент>
 </Контрагенты>
 <Время>11:05:51</Время>
+ <Товары>
- <Товар>
 <Ид>85001800 Ajusa гидрокомпенсатор</Ид>
 <Наименование>Гидрокомпенсаторы</Наименование>
 <ИдКаталога />
 <ЦенаЗаЕдиницу>17,2</ЦенаЗаЕдиницу>
 <Количество>10</Количество>
 <Единица>шт.</Единица>
 <Коэффициент>1</Коэффициент>
 <Производитель>Ajusa</Производитель>
 <ИдВКаталогеПроизводителя>85001800</ИдВКаталогеПроизводителя>
 </Товар>
- <Товар>
 <Ид>46754 Diesel System Cleaner Wynn's очиститель топливной системы</Ид>
 <Наименование>Присадки в топливо</Наименование>
 <ИдКаталога />
 <ЦенаЗаЕдиницу>3,33</ЦенаЗаЕдиницу>
 <Количество>7</Количество>
 <Единица>шт.</Единица>
 <Коэффициент>1</Коэффициент>
 <Производитель>Wynn's</Производитель>
 <ИдВКаталогеПроизводителя>46754</ИдВКаталогеПроизводителя>
 </Товар>
- <Товар>
 <Ид>47355 Fuel Stabilizer Wynn's присадка для стабилизации свойств т</Ид>
 <Наименование>Присадки в топливо</Наименование>
 <ИдКаталога />
 <ЦенаЗаЕдиницу>2,58</ЦенаЗаЕдиницу>
 <Количество>8</Количество>
 <Единица>шт.</Единица>
 <Коэффициент>1</Коэффициент>
 <Производитель>Wynn's</Производитель>
 <ИдВКаталогеПроизводителя>47355</ИдВКаталогеПроизводителя>
 </Товар>
 </Товары>
+ <ДополнительныеРеквизиты>
- <ДополнительныйРеквизит>
 <Наименование>Расчет</Наименование>
 <Значение>0</Значение>
 </ДополнительныйРеквизит>
 </ДополнительныеРеквизиты>
 </Документ>
 </КоммерческаяИнформация>
3 GrayT
 
27.11.06
15:44
У тебя ни одного атрибута, а MSXML.DOMDocument - это видимо второй парсер. Я с ним тоже накололся. по тексту он выдает текст всего нижележащего узла :(
4 GrayT
 
27.11.06
15:45
Чем выгружал ХМЛ?
5 BB52
 
27.11.06
15:47
выгружал не я. мне надо загружать.
как я понял тут что то не то с форматом файла? или же проблема с версией парсера?
6 myk0lka
 
27.11.06
15:49
(5) Скорее всего парсер...
7 GrayT
 
27.11.06
15:53
Да, я стаким столкнулся именно на втором парсере. Но отказываться от него не захотел. Что будет в 3 или 4 - не знаю.
У себя файл переделал в таком виде (на твоем примере)
<Товар ид="123343" Наименование="оаповарлаопр" Цена=123 />
8 BB52
 
27.11.06
15:56
(7) потом эту строку получаеш из obj2.text и далее анализируеш её сам?
9 GrayT
 
27.11.06
15:58
Зачем? Именно getAttribute и считываю, а у тебя вообще нет ни одного атрибута.
10 BB52
 
27.11.06
16:24
(9) понятно. Но не стал ломать их алгоритм выгрузки. Работает и в таком виде, только пришлось у <Товар выбирать подчиненные, пробегать по ним и делать проверку который из них сейчас обрабатвывается.. ну а далее уже получать значение из .text
спасибо за помощь!