|
Чтение XML, табличная часть
| ☑ |
0
picom
15.04.20
✎
14:27
|
Приветствую!
Загружаю файлы XML в 1С.
Файлы имеют табличную часть:
<Область>
- <усПриемкаФакт НомерЗаявки="009201">
<Строка Номенклатура="00-00000413"/>
<Строка Номенклатура="00-00000416"/>
<Строка Номенклатура="00-00000418"/>
<Строка Номенклатура="00-00000427"/>
</усПриемкаФакт>
</<Область>>
С помощью кода все читается великолепно, НО когда в файл одна строка, он не определяет его как табличная часть и вылазит ошибка про итератор.
Как корректней это обойти без пакета XDTO?
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(Чтение);
Contr = ОбъектXDTO.усПриемкаФакт;
Для каждого Contr2 Из Contr.Строка Цикл //тут словим ошибку
НоменклатураКод = Contr2.Номенклатура;
КонецЦикла;
|
|
1
palsergeich
15.04.20
✎
14:31
|
(0) Есть такая особенность. Надо писать код по обходу.
|
|
2
FIXXXL
15.04.20
✎
15:10
|
(0) проверяй тип Contr.Строка Объект это или СписокХДТО
|
|
3
Fragster
гуру
15.04.20
✎
16:52
|
Правильнее всего подгрузить схему или создать пакет XDTO и указывать нужный тип при чтении фабрикой
|
|
4
Fragster
гуру
15.04.20
✎
16:53
|
заодно там и числа с датами, если они есть, в правильные типы преобразуются и отпарсятся. И ГУИДы в ссылки превратятся, если есть
|
|
5
FIXXXL
15.04.20
✎
19:31
|
(3) несомненно
но всегда возможно
|
|
6
picom
16.04.20
✎
13:35
|
Победил так
Функция КоллекцияXDTO(Элемент)
Если ТипЗнч(Элемент)=Тип("ОбъектXDTO") Тогда
МассивXDTO=Новый Массив;
МассивXDTO.Добавить(Элемент);
Возврат МассивXDTO;
КонецЕсли;
Возврат Элемент;
КонецФункции
ля каждого Contr2 Из КоллекцияXDTO(Contr.Строка) Цикл
НоменклатураКод = Contr2.Номенклатура;
КонецЦикла;
|
|