Есть файлик там есть одинаковые параметры типо image
<image>https://lido.ua/uploads/shop/products/origin/8cedb3f7-661e-11eb-8547-00155da30131.jpeg</image>
<image>https://lido.ua/uploads/shop/products/origin/additional/8cedb3f7-661e-11eb-8547-00155da30131_2.jpeg</image>
Когда прохожусь чтение берет в запись только последний а не по очереди, что не так?
Если ЧтениеXML.Имя = "item" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда //Определяем начало элемента
НоваяСтрока = Объект.Данные.Добавить();
ИначеЕсли ЧтениеXML.Имя = "image" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "image";
Продолжить;
//ИначеЕсли ЧтениеXML.Имя = "image" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
//ИмяТекущегоУзла = "image2";
ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
Если Если ИмяТекущегоУзла = "image" тогда
НоваяСтрока.image = ЧтениеXML.Значение;
//ИначеЕсли ИмяТекущегоУзла = "image2" тогда
//НоваяСтрока.image2 = ЧтениеXML.Значение;
сохранять все значения в список/массив ..... после окончания чтения узла решать, что с ними делать
sava1 @ Сегодня, 11:40
,
там 100 000 записей не повиснет все если считать все сразу а не последовательно?)
вы про XDTO ?
burza @ Today, 10:24
,
Исходя из фрагмента вашего кода, вы создаете "НоваяСтрока" только один раз, и все последовательно прочитанные значения перезаписываете в поле одной строки. В итоге имеете только одну строку с последним значением.
Petre @ Сегодня, 12:04
,
как правильно?
burza @ Сегодня, 12:10
,
вот полный. работает но вот когда одинаковые беда(
p.s как споил добавить?)
ИмяТекущегоУзла = "";
Пока ЧтениеXML.Прочитать() Цикл //Цикл по структуре
Если ЧтениеXML.Имя = "item" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда //Определяем начало элемента
НоваяСтрока = Объект.Данные.Добавить();
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "id" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "id";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "categoryId" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "categoryId";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "vendorCode" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "vendorCode";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "vendor" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "vendor";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "name" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "name";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "name_ru" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "name_ru";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "description" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "description";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "description_ru" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "description_ru";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "BarCode" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "BarCode";
Продолжить
ИначеЕсли ЧтениеXML.Имя = "UCGFA" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "UCGFA";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "price_main_val" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "price_main_val";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "price_main" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "price_main";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "price_rrc" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "price_rrc";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "price" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "price";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "price_val" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "price_val";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "currency" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "currency";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "rate" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "rate";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "stock" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "stock";
Продолжить;
ИначеЕсли ЧтениеXML.Имя = "image" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "image";
Продолжить;
//ИначеЕсли ЧтениеXML.Имя = "image" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
//ИмяТекущегоУзла = "image2";
//Продолжить;
ИначеЕсли ЧтениеXML.Имя = "param" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяТекущегоУзла = "param";
//Продолжить;
//ИначеЕсли ЧтениеXML.Имя = "param name=""" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
//ИмяТекущегоУзла = "param name=""";
ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
Если ИмяТекущегоУзла = "id" тогда
НоваяСтрока.id = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "categoryId" тогда
НоваяСтрока.categoryId = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "vendorCode" тогда
НоваяСтрока.vendorCode = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "vendor" тогда
НоваяСтрока.vendor = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "name" тогда
НоваяСтрока.name = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "name_ru" тогда
НоваяСтрока.name_ru = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "description" тогда
НоваяСтрока.description = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "description_ru" тогда
НоваяСтрока.description_ru = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "BarCode" тогда
НоваяСтрока.BarCode = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "UCGFA" тогда
НоваяСтрока.UCGFA = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "price_main_val" тогда
НоваяСтрока.price_main_val = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "price_main" тогда
НоваяСтрока.price_main = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "price_rrc" тогда
НоваяСтрока.price_rrc = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "price" тогда
НоваяСтрока.price = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "price_val" тогда
НоваяСтрока.price_val = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "currency" тогда
НоваяСтрока.currency = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "rate" тогда
НоваяСтрока.rate = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "stock" тогда
НоваяСтрока.stock = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "image" тогда
НоваяСтрока.image = ЧтениеXML.Значение;
//ИначеЕсли ИмяТекущегоУзла = "image2" тогда
//НоваяСтрока.image2 = ЧтениеXML.Значение;
ИначеЕсли ИмяТекущегоУзла = "param" тогда
НоваяСтрока.param = ЧтениеXML.Значение;
//ИначеЕсли ИмяТекущегоУзла = "param name=""Маса, кг""" тогда
//НоваяСтрока.Маса = ЧтениеXML.Значение;
КонецЕСли;
Продолжить;
////Если это текст, читаем текст
//ИначеЕсли ЧтениеXML.ТипУзла=ТипУзлаXML.КонецЭлемента Тогда
////Определяем дальнейшие действия
КонецЕсли;
КонецЦикла;
ЧтениеXML.Закрыть();
Сделал иначе но теперь вопрос другой подскажите как вытянуть ОбъектXDTO
Есть несколько параметров название их вытягиваю, а вот значение не пойму где
Если ТипЗнч(Итем.param) = Тип("СписокXDTO") тогда //Если Итем.param = "СписокXDTO" тогда
Для Каждого Стр из Итем.param цикл
Если Стр.name = "Розмір" тогда
НоваяСтрока.param = Стр.name;
// Для Каждого Стр из НоваяСтрока.param цикл
НоваяСтрока.param_1 = Стр;
//КонецЦикла;
ИначеЕсли Стр.name = "Маса, кг" тогда
НоваяСтрока.param2 = Стр.name;
ИначеЕсли Стр.name = "Ручка" тогда
НоваяСтрока.param3 = Стр.name;
ИначеЕсли Стр.name = "Колір" тогда
НоваяСтрока.param4 = Стр.name;
ИначеЕсли Стр.name = "Тип товарів" тогда
НоваяСтрока.param5 = Стр.name;
//ИначеЕсли Стр.name = "Маса, кг" тогда
//НоваяСтрока.param2 = Стр.name;
КонецЕсли;
Конеццикла;
КонецЕсли;
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(Объект.ПутьКФайлу);
Итем = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
Для Каждого Итем из Итем.item Цикл
НоваяСтрока = Объект.Данные.Добавить();
НоваяСтрока.id = Итем.id;
НоваяСтрока.categoryId = Итем.categoryId;
НоваяСтрока.vendorCode = Итем.vendorCode;
НоваяСтрока.vendor = Итем.vendor;
НоваяСтрока.name = Итем.name;
НоваяСтрока.name_ru = Итем.name_ru;
НоваяСтрока.description = Итем.description;
НоваяСтрока.description_ru = Итем.description_ru;
НоваяСтрока.UCGFA = Итем.UCGFA;
НоваяСтрока.price_main_val = Итем.price_main_val;
НоваяСтрока.price_main = Итем.price_main;
НоваяСтрока.price_rrc = Итем.price_rrc;
НоваяСтрока.price = Итем.price;
НоваяСтрока.price_val = Итем.price_val;
НоваяСтрока.currency = Итем.currency;
НоваяСтрока.rate = Итем.rate;
НоваяСтрока.stock = Итем.stock;
//НоваяСтрока.BarCode = Итем.BarCode;
//////Список по параметрам///////////////
Если ТипЗнч(Итем.param) = Тип("СписокXDTO") тогда //Если Итем.param = "СписокXDTO" тогда
Для Каждого Стр из Итем.param цикл
Если Стр.name = "Розмір" тогда
НоваяСтрока.param = Стр.name;
// Для Каждого Стр из НоваяСтрока.param цикл
НоваяСтрока.param_1 = Стр;
//КонецЦикла;
ИначеЕсли Стр.name = "Маса, кг" тогда
НоваяСтрока.param2 = Стр.name;
ИначеЕсли Стр.name = "Ручка" тогда
НоваяСтрока.param3 = Стр.name;
ИначеЕсли Стр.name = "Колір" тогда
НоваяСтрока.param4 = Стр.name;
ИначеЕсли Стр.name = "Тип товарів" тогда
НоваяСтрока.param5 = Стр.name;
//ИначеЕсли Стр.name = "Маса, кг" тогда
//НоваяСтрока.param2 = Стр.name;
КонецЕсли;
Конеццикла;
КонецЕсли;
/////////////////////////////////////////////////////////////////
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua