|
Подскажите как лучше считать такой блок из XML | ☑ | ||
---|---|---|---|---|
0
Невский Александр
27.04.12
✎
16:21
|
Подскажите как лучше считать такой блок из XML
<products> <product id="64"> <price> 950 </price> <name> Набор фишек FT100 </name> <IsDeleted> False </IsDeleted> </product> <product id="1130"> <price> 0 </price> <name> Есть ли еще варианты, кроме как Файл = Новый ЧтениеXML; Файл.ОткрытьФайл(ИмяФайлаДанных); Пока Файл.Прочитать() Цикл Если Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда Если Файл.Имя = "product" Тогда Пока Файл.ПрочитатьАтрибут() Цикл НовСтрока = ТаблицаНоменклатуры.Добавить(); НовСтрока.Код = Файл.Значение; КонецЦикла; ИначеЕсли Файл.Имя = "price" Тогда Пока Файл.ПрочитатьАтрибут() Цикл НовСтрока.Цена = Файл.Значение; КонецЦикла; ИначеЕсли Файл.Имя = "name" Тогда НовСтрока.Наименование = Файл.Значение; ИначеЕсли Файл.Имя = "IsDeleted" Тогда НовСтрока.ПометкаУдаления = Файл.Значение; КонецЕсли; КонецЕсли; |
|||
1
izekia
27.04.12
✎
16:22
|
выбрать элементы, какой-то такой метод в 1С есть, и там запрос, но это через дом
|
|||
2
Fragster
гуру
27.04.12
✎
16:23
|
через фабрику XDTO, не?
|
|||
3
Невский Александр
27.04.12
✎
16:23
|
нужно считать в таблицу значений - блок неудобен тем, что идет не одной строкой, а разбит на подчиненный узлы, да и в том виде, как я считываю, почему-то видны только коды, все остальные значения - не считываются, даже если я ставлю ПрочитатьАтрибут
|
|||
4
Невский Александр
27.04.12
✎
16:24
|
может у кого кусок кода есть для примера
|
|||
5
Невский Александр
27.04.12
✎
16:25
|
и в файле несколько секций, в других идет все одной строкой, а в этой - по номенклатуре - именно так
|
|||
6
Axel2009
27.04.12
✎
16:26
|
(3) потому что это стоит Если Файл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
|
|||
7
х86
27.04.12
✎
16:30
|
Процедура ЗагрузитьДанные()
ТаблЗагрузки.Очистить(); ЧтениеХМЛ = Новый ЧтениеXML; Попытка ЧтениеХМЛ.ОткрытьФайл(ПутьВыгрузки); Исключение Сообщить("Ошибка открытия файла по причине:" + Символы.ПС + " " + ОписаниеОшибки()); Возврат; КонецПопытки; ЧтениеХМЛ.Прочитать();// Прочитать Реализации Пока ЧтениеХМЛ.Прочитать() Цикл Если (ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента) и (ЧтениеХМЛ.Имя = "Реализация") Тогда ПрочитатьСтрокуРеализации(ЧтениеХМЛ, ТаблЗагрузки.Добавить(), ЧтениеХМЛ.ПолучитьАтрибут("Ссылка")); КонецЕсли; КонецЦикла; ЧтениеХМЛ.Закрыть(); КонецПроцедуры Процедура ПрочитатьСтрокуРеализации(ЧтениеХМЛ, СтрокаТаблЗагрузки, ЗначениеСсылки) СтрокаТаблЗагрузки.Ссылка = ЗначениеСсылки; Пока ЧтениеХМЛ.Прочитать() Цикл Если (ЧтениеХМЛ.ТипУзла = ТипУзлаXML.КонецЭлемента) и (ЧтениеХМЛ.Имя = "Реализация") Тогда Возврат; КонецЕсли; ИмяКолонки = ""; Если ЧтениеХМЛ.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда ИмяКолонки = ЧтениеХМЛ.Имя; Если ЧтениеХМЛ.Прочитать() Тогда Если ТаблЗагрузки.Колонки.Найти(ИмяКолонки) = Неопределено Тогда ТаблЗагрузки.Колонки.Добавить(ИмяКолонки); КонецЕсли; СтрокаТаблЗагрузки[ИмяКолонки] = ЧтениеХМЛ.Значение; КонецЕсли; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
8
izekia
27.04.12
✎
16:30
|
да не, потому что он считывает атрибуты, а надо подчиненные элементы
|
|||
9
х86
27.04.12
✎
16:35
|
(7)+
<?xml version="1.0" encoding="UTF-8" ?> - <Реализации> - <Реализация Ссылка="Реализация товаров и услуг х/х/120403/00001 от 03.04.2012 9:23:41"> <Дата>03.04.2012</Дата> <Номер>х/х/120403/00001</Номер> <СуммаДокумента>60027,00</СуммаДокумента> <Контрагент>ххх ООО</Контрагент> <КонтрагентИНН>хххх59971</КонтрагентИНН> <КонтрагентЮрФизЛицо>Юр. лицо</КонтрагентЮрФизЛицо> <ДоговорКонтрагента>Д12/П/0131</ДоговорКонтрагента> <ДатаДоговора>06.02.2012</ДатаДоговора> <Ответственный>ххх Елена Евгеньевна</Ответственный> <Склад>Заказ</Склад> <НомерСчетФактуры>х/х/120403/00001</НомерСчетФактуры> <ДатаСчетФактуры>03.04.2012</ДатаСчетФактуры> <НомерПлатежноРасчетногоДокумента>246</НомерПлатежноРасчетногоДокумента> <ДатаПлатежноРасчетногоДокумента>05.03.2012</ДатаПлатежноРасчетногоДокумента> <Документ /> </Реализация> - <Реализация Ссылка="Реализация товаров и услуг х/х/120403/00002 от 03.04.2012 9:38:15"> <Дата>03.04.2012</Дата> <Номер>х/х/120403/00002</Номер> <СуммаДокумента>685010,00</СуммаДокумента> <Контрагент>хххян С.А. ИП</Контрагент> <КонтрагентИНН>хххх184775</КонтрагентИНН> |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |