Чтение xml, часть с товарами.

1. user606894_schana1w3 18.02.19 14:17 Сейчас в теме
Здравствуйте, подскажите пожалуйста что не так делаю.
Читаю хмл
Суть в чем, человек заказывает товар(Булочка 5 шт 500р, Молоко 2 шт 50р)
В итоге при чтении у меня получается запись в таблице значений всегда на последний товар
Булочку не записывает(но в цикле по ней пробегает)
вот код.
Парсер = Новый ЧтениеXML;
	Парсер.ОткрытьФайл(ПутьДляСохранения);
	Построитель = Новый ПостроительDOM;
	Документ = Построитель.Прочитать(Парсер);
	
	КС = Новый КвалификаторыСтроки(200);
	Массив = Новый Массив;
	Массив.Добавить(Тип("Строка"));
	ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
	число1 = Новый КвалификаторыЧисла(15,3);
	ОписаниеЧисла = Новый ОписаниеТипов("Число", число1);
	//ОписаниеМассива = Новый ОписаниеТипов("Массив");
	//СписокЗ.ТипЗначения = Новый ОписаниеТипов("Строка",КС);
	//СписокЗ.Добавить("name");
	//СписокЗ.Добавить("quantity");
	//СписокЗ.Добавить("price");
	//СписокЗ.Добавить("product_id");
	
	ТаблицаСЗаказами = Новый ТаблицаЗначений;
	ТаблицаСЗаказами.Колонки.Добавить("acc_nomer", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("client", ОписаниеЧисла);
	ТаблицаСЗаказами.Колонки.Добавить("status", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("note", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("total", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("payment_type", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("created_at", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("shipping_address", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("shipping_date_from", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("shipping_date_to", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("order_item_list", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("name", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("quantity", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("price", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("product_id", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("driver", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("delivery_time", ОписаниеТиповС);
	ТаблицаСЗаказами.Колонки.Добавить("operator", ОписаниеТиповС);


	
	Для Каждого Элемент0 Из Документ.ЭлементДокумента.ДочерниеУзлы Цикл
		Если Элемент0.ИмяУзла = "orders" Тогда	
			//НовСтр = ТаблицаСКлиентами.Добавить();
			КУзлов = Элемент0.ДочерниеУзлы.Количество();
			i = 0;
			x = 0;

			Для счетчик = 1 по КУзлов Цикл
				НовСтр = ТаблицаСЗаказами.Добавить();
				Для каждого Элемент1 Из Элемент0.ДочерниеУзлы[i].ДочерниеУзлы Цикл
				Если Элемент1.ИмяУзла = "order_item_list" Тогда
				КТовара = Элемент1.ДочерниеУзлы.Количество();
				
				Для счетчик1 = 1 по КТовара Цикл
					
					Для каждого Элемент2 Из Элемент1.ДочерниеУзлы[x].ДочерниеУзлы Цикл
						
						НовСтр[Элемент2.ИмяУзла] = Элемент2.ТекстовоеСодержимое;	
						
				КонецЦикла;
				x=x+1;
				
				//Счетчик1 = Счетчик1 +1;
				КонецЦикла;
				Иначе 
				НовСтр[Элемент1.ИмяУзла] = Элемент1.ТекстовоеСодержимое;
			КонецЕсли;
			//счетчик1 = 1;
			
			КонецЦикла;
			i=i+1;
			x=0;
			КонецЦикла;
		КонецЕсли;
	КонецЦикла;
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. kumi2012 110 18.02.19 14:43 Сейчас в теме
Наверно надо перенести момент добавления строки заказа:

НовСтр = ТаблицаСЗаказами.Добавить();
Для каждого Элемент1 Из Элемент0.ДочерниеУзлы[i].ДочерниеУзлы Цикл
Если Элемент1.ИмяУзла = "order_item_list" Тогда
КТовара = Элемент1.ДочерниеУзлы.Количество();

Для счетчик1 = 1 по КТовара Цикл

Для каждого Элемент2 Из Элемент1.ДочерниеУзлы[x].ДочерниеУзлы Цикл
НовСтр = ТаблицаСЗаказами.Добавить();
3. user606894_schana1w3 18.02.19 14:50 Сейчас в теме
(2)Пробовал, там вообще ахинея получается))Для счетчик1 = 1 по КТовара Цикл

Для каждого Элемент2 Из Элемент1.ДочерниеУзлы[x].ДочерниеУзлы Цикл

это я конкретно по товарам пробегаюсь,
если вынесу туда, то получится тупо значения с товарами, а все остальное, кто заказал и т.д, будет пустым.
5. kumi2012 110 18.02.19 14:55 Сейчас в теме
(3) У вас таблица с заказами одномерная, т.е. в каждой строке надо заполнять товар, кто заказал и все остальное.
4. YannikAlx 27 18.02.19 14:50 Сейчас в теме
А вы пройдитесь отладкой по своим циклам и сразу поймете почему, ну то есть сразу...
6. user606894_schana1w3 18.02.19 14:58 Сейчас в теме
А как подкорректировать, грамотно ?
Тип может указать не строковый, а массив к примеру?
Оставьте свое сообщение

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