|
v7: Проблема с разбором XML | ☑ | ||
|---|---|---|---|---|
|
0
Sashgun
29.07.11
✎
08:39
|
Столкнулся с такой проблемой. Вот ошибка
Документ № БПЮА0000257 Номенклатура = Номен.ВыбратьУзел("Номенклатура").Значение; {C:\USERS\AVOCHKASOV\DESKTOP\ЗАГРУЗКА ПОСТУПЛЕНИЙ ИЗ БУХ.ERT(68)}: Значение не представляет агрегатный объект (Значение) Мой код : Процедура Выполнить() Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+"v7plus.dll")<>1 Тогда Предупреждение("Внешняя компонента не найдена"); Возврат; КонецЕсли; // Анализатор=СоздатьОбъект("AddIn.XMLParser"); ДокXML=Анализатор.СоздатьДокумент(); ДокXML.Загрузить(ИмяФайлаДанных); Выборка = ДокXML.ВыбратьУзел("ФайлОбмена"); //Поехали, цикл по подчиненным объектам Для а= 1 по Выборка.КоличествоПодчиненных() Цикл НомерДокумента=Выборка.ПолучитьПодчиненныйПоНомеру(а); Номер=НомерДокумента.ВыбратьУзел("Номер").Значение; ДатаДок=НомерДокумента.ВыбратьУзел("Дата").Значение; Сообщить("Документ № "+Номер); //Создаем новый документ Докум= СоздатьОбъект("Документ.РасходнаяНакладная"); Докум.Новый(); Для б = 1 по НомерДокумента.КоличествоПодчиненных() Цикл СтрокаТек=НомерДокумента.ПолучитьПодчиненныйПоНомеру(б); Для в = 1 по СтрокаТек.КоличествоПодчиненных() Цикл Номен= СтрокаТек.ПолучитьПодчиненныйПоНомеру(в); Номенклатура = Номен.ВыбратьУзел("Номенклатура").Значение; Количество = Номен.ВыбратьУзел("Количество").Значение; Цена = Номен.ВыбратьУзел("Цена").Значение; Сообщить("Номенклатура: "+Номенклатура+"/ Кол-во: "+Количество+"/ Цена: "+Цена); // СпрНомен=СоздатьОбъект("Справочник.Номенклатура"); СпрНомен.НайтиПоНаименованию(Номен.ВыбратьУзел("Номенклатура").Значение,0); Если СпрНомен.НайтиПоНаименованию(Номен.ВыбратьУзел("Номенклатура").Значение,0)=1 Тогда НайденнаяНоменклатура=СпрНомен.ТекущийЭлемент(); КонецЕсли; СпрСклад=СоздатьОбъект("Справочник.МестаХранения"); СпрСклад.НайтиПоНаименованию("Управление торговлей",0); Если СпрСклад.НайтиПоНаименованию("Управление торговлей",0)=1 Тогда НайденныйСклад=СпрСклад.ТекущийЭлемент(); КонецЕсли; СпрНалог=СоздатьОбъект("Справочник.ВариантыРасчетаНалогов"); СпрНалог.НайтиПоКоду(7); Если СпрНалог.НайтиПоКоду(7)=1 Тогда НайденныйНалог=СпрНалог.ТекущийЭлемент(); КонецЕсли; Докум.Контрагент=Контрагент; Докум.Договор=Договор; Докум.МестоХранения=НайденныйСклад; Докум.ВидОтгрузки = 11; Докум.ВариантРасчетаНалогов=НайденныйНалог; Докум.Комментарий="Документ № "+НомерДокумента.ВыбратьУзел("Номер").Значение; Докум.ДатаДок=НомерДокумента.ВыбратьУзел("Дата").Значение; Докум.НоваяСтрока(); Докум.Товар= НайденнаяНоменклатура; Докум.Количество=Номен.ВыбратьУзел("Количество").Значение; Докум.Цена=Номен.ВыбратьУзел("Цена").Значение; Докум.Сумма=Докум.Цена* Докум.Количество; Докум.НДС = глПоказательДокумента(Докум, "НДС"); Докум.Всего = глПоказательДокумента(Докум, "СуммаСНалогами"); Докум.Записать(); КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры Причем если в третьем цикле поставить не с 1 а со втрого все отрабатывает, но выкидываем первый элемент.. Вот XML файл : <?xml version="1.0" encoding="windows-1251" standalone="no"?> <ФайлОбмена> <Документ> <Номер>БПЮА0000257</Номер> <Дата>21.07.2011 10:36:51</Дата> <ТЧ> <СтрокаТЧ> <Номенклатура>XXXXXXXXXXX</Номенклатура> <Количество>9</Количество> <Цена>1 648,38</Цена> </СтрокаТЧ> </ТЧ> </Документ> <Документ> <Номер>БПЮА0000258</Номер> <Дата>25.07.2011 10:32:46</Дата> <ТЧ> <СтрокаТЧ> <Номенклатура>XXXXXXXXXXX</Номенклатура> <Количество>3</Количество> <Цена>4 316</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>13</Количество> <Цена>947,03</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>19</Количество> <Цена>1 054,93</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>5</Количество> <Цена>766,92</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>1</Количество> <Цена>661,6</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>3</Количество> <Цена>742,85</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>18</Количество> <Цена>863,2</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>1</Количество> <Цена>1 859,2</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>4</Количество> <Цена>78,85</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>10</Количество> <Цена>162,68</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>12</Количество> <Цена>235,72</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>30</Количество> <Цена>207,5</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>3</Количество> <Цена>497,17</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>1</Количество> <Цена>839,96</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>7</Количество> <Цена>1 178,6</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>4</Количество> <Цена>1 261,6</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>2</Количество> <Цена>1 392,74</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>3</Количество> <Цена>2 049,6</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>4</Количество> <Цена>115,75</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>2</Количество> <Цена>262</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>10</Количество> <Цена>289,67</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>4</Количество> <Цена>2 138,08</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>3</Количество> <Цена>2 415,3</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>1</Количество> <Цена>4 271,18</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>4</Количество> <Цена>1 516,41</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>1</Количество> <Цена>5 299,55</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>1</Количество> <Цена>1 738,02</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>1</Количество> <Цена>4 755,9</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>5</Количество> <Цена>1 648,38</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>1</Количество> <Цена>5 419,9</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>7</Количество> <Цена>1 926,43</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>5</Количество> <Цена>120,35</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>18</Количество> <Цена>63,08</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>72</Количество> <Цена>134,46</Цена> </СтрокаТЧ> <СтрокаТЧ> <Номенклатура>YYYYYYYYYYYY</Номенклатура> <Количество>3</Количество> <Цена>7 069,11</Цена> </СтрокаТЧ> </ТЧ> </Документ> </ФайлОбмена> |
|||
|
1
andrewks
29.07.11
✎
08:47
|
ТЧ=НомерДокумента.ВыбратьУзел("ТЧ")
Для б = 1 по ТЧ.КоличествоПодчиненных() Цикл |
|||
|
2
Sashgun
29.07.11
✎
08:59
|
(1) Получается для 3 цикла тож нужно писать
СтрокаТЧ=СтрокаТек.ВыбратьУзел("СтрокаТЧ") Для в = 1 по СтрокаТЧ.КоличествоПодчиненных() Цикл ??? |
|||
|
3
Sashgun
29.07.11
✎
09:16
|
Все разобрался. 3 ий цикл и не нужен. спасибо тебе
|
|||
|
4
Sashgun
29.07.11
✎
09:30
|
Удаляем 3 цикл а во втором деламе такеи изменения
ТЧ=НомерДокумента.ВыбратьУзел("ТЧ"); Для б = 1 по ТЧ.КоличествоПодчиненных() Цикл Номен=ТЧ.ПолучитьПодчиненныйПоНомеру(б); Номенклатура = Номен.ВыбратьУзел("Номенклатура").Значение; Количество = Номен.ВыбратьУзел("Количество").Значение; Цена = Номен.ВыбратьУзел("Цена").Значение; Сообщить("Номенклатура: "+Номенклатура+"/ Кол-во: "+Количество+"/ Цена: "+Цена); |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |