1. Dimkis 05.06.20 14:24 Сейчас в теме
Добрый день форумчане. Не могу разобраться с загрузкой вложенного узла XML документа, как его обойти и добавить в структуру (массив)



Что делаю не так?

		ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;		
	
		Чтение = Новый ЧтениеXML;
		Чтение.ОткрытьФайл(ПутьКФайлу);		   
						   
		МассивВыгрузки = Новый Массив();
		ТекущийПуть = "";
		Пока Чтение.Прочитать() Цикл
			Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента и Чтение.Имя="ПоступлениеДок" Тогда
				Структура = Новый Структура;
				Структура.Вставить("Номер",Чтение.ЗначениеАтрибута("Номер"));
				Структура.Вставить("Дата",Чтение.ЗначениеАтрибута("Дата"));
				Структура.Вставить("Склад",Чтение.ЗначениеАтрибута("Склад"));
				Структура.Вставить("Контрагент",Чтение.ЗначениеАтрибута("Контрагент"));
				Структура.Вставить("КонтрагентИНН",Чтение.ЗначениеАтрибута("КонтрагентИНН"));			
				Структура.Вставить("Организация",Чтение.ЗначениеАтрибута("Организация"));
				Структура.Вставить("ДоговорКонтрагента",Чтение.ЗначениеАтрибута("ДоговорКонтрагента"));
				Структура.Вставить("Ответственный",Чтение.ЗначениеАтрибута("Ответственный"));
				Структура.Вставить("НомерВходящегоДокумента",Чтение.ЗначениеАтрибута("НомерВходящегоДокумента"));
				Структура.Вставить("ДатаВходящегоДокумента",Чтение.ЗначениеАтрибута("ДатаВходящегоДокумента"));
				Структура.Вставить("СчетУчетаРасчетовСКонтрагентом",Чтение.ЗначениеАтрибута("СчетУчетаРасчетовСКонтрагентом"));
				Структура.Вставить("СуммаДокумента",Чтение.ЗначениеАтрибута("СуммаДокумента"));
				Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.Имя = "ТЧТовары" Тогда
					МассивТЧ = Новый Массив();
					Пока Чтение.ПрочитатьАтрибут() Цикл
						СтруктураТЧ = Новый Структура;
						СтруктураТЧ.Вставить("Номенклатура",Чтение.ЗначениеАтрибута("Номенклатура"));
						СтруктураТЧ.Вставить("ЕдиницаИзмерения",Чтение.ЗначениеАтрибута("ЕдиницаИзмерения"));
						СтруктураТЧ.Вставить("Коэффициент",Чтение.ЗначениеАтрибута("Коэффициент"));
						СтруктураТЧ.Вставить("Количество",Чтение.ЗначениеАтрибута("Количество"));
						СтруктураТЧ.Вставить("Цена",Чтение.ЗначениеАтрибута("Цена"));
						СтруктураТЧ.Вставить("Сумма",Чтение.ЗначениеАтрибута("Сумма"));
						СтруктураТЧ.Вставить("СтавкаНДС",Чтение.ЗначениеАтрибута("СтавкаНДС"));
						СтруктураТЧ.Вставить("СуммаНДС",Чтение.ЗначениеАтрибута("СуммаНДС"));
						СтруктураТЧ.Вставить("ОтражениеВУСН",Чтение.ЗначениеАтрибута("ОтражениеВУСН"));
						МассивТЧ.Добавить(СтруктураТЧ);
					КонецЦикла;
					Структура.Вставить("Товары",МассивТЧ);					
				КонецЕсли;
			Иначе
				Продолжить;
			КонецЕсли;
			МассивВыгрузки.Добавить(Структура);
		КонецЦикла;
Показать
По теме из базы знаний
Найденные решения
4. user1058740 05.06.20 14:58 Сейчас в теме
Смотри в сторону Фабрик XDTO
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. soft_wind 05.06.20 16:04 Сейчас в теме
(1) так вы чтение ТЧ вынесите из элемента Поступление,
и еще как совет, включите отладчик!!!! под ним пройдите всю загрузку, сразу станет ясно где косяк и что поправить.

цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента и Чтение.Имя="ПоступлениеДок" Тогда
//реквизиты документа
КонецЕсли;

Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.Имя = "ТЧТовары" Тогда
цикл
//чтение ТЧ
конеццикла
КонецЕсли;

конеццикла
Показать
2. Dimkis 05.06.20 14:27 Сейчас в теме
Первая часть до перебора строк товаров читается нормально
3. Dimkis 05.06.20 14:31 Сейчас в теме
Вот тут наглядней схема будет видна

4. user1058740 05.06.20 14:58 Сейчас в теме
Смотри в сторону Фабрик XDTO
5. Dimkis 05.06.20 15:05 Сейчас в теме
(4) на Волшебном форуме только что туда же послали )))))), пошел курить XDTO )))))
6. user1058740 05.06.20 15:12 Сейчас в теме
Для твоего случая будет что-то вроде:
Чтение = Новый ЧтениеXML;
        Чтение.ОткрытьФайл(ПутьКФайлу);
МояФабрикаXDTO = Новый ФарбикаXDTO();
ГотоваяСтруктура = МояФабрикаXDTO.ПрочитатьXML(Чтение );
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот