Обработка на основании данных из файла XML меняет цены в файле CSV по полю id
Кроме того, формируется файл rezult.csv из найденных в CSV - файле позиций.
Рисунок дерева сформирован на основании обработки
//infostart.ru/public/14610/ - XML viewer для 1С 8.*
Основная обработка файла xml и модификация файла Csv осуществляется в этом блоке программы:
Пока Чтение.Прочитать() Цикл
// Прочитать "структурные части" элементов.
// Проверить, какая часть элемента - текущая.
//СтрокаВывода = "";
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяУзла = Чтение.Имя;
// Атрибуты элементов можно читать только если текущая часть -
// начало элемента
Пока Чтение.ПрочитатьАтрибут() Цикл
// Прочитать данные узла атрибута.
ТипУзла = Чтение.ТипУзла;
Имя = Чтение.Имя;
Значение = СокрЛП(Чтение.Значение);
Если (ИмяУзла="offer") И (Имя="id") Тогда
БлокОффер.Вставить("id", Значение);
Endif;
КонецЦикла;
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
Если (ИмяУзла="price") Тогда
БлокОффер.Вставить("price", Чтение.Значение);
Endif;
Если (ИмяУзла="model") Тогда
БлокОффер.Вставить("model", Чтение.Значение);
Endif;
ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
Если ИмяУзла = "param" Тогда
Если БлокОффер.Получить("id") <> Неопределено Тогда
iddg=БлокОффер.Получить("id");
idfl = iddg;
Если idfl = Неопределено Тогда
zmodel = УбрПустые(БлокОффер.Получить("model"));
zzmodel = zmodel;
lmodel = Транслит(zzmodel);
Сообщить("Товар ( "+lmodel+" ) с кодом "+iddg +" Не найден");
СтрокаВывода="";
Иначе
idfl = СокрЛП( idfl );
СтрокаВывода = СтрокаВывода +idfl+";;";
КонецЕсли;
КонецЕсли;
Если БлокОффер.Получить("model") <> Неопределено Тогда
zmodel = УбрПустые(БлокОффер.Получить("model"));
zzmodel = zmodel;
lmodel = Транслит(zzmodel);
СтрокаВывода = СтрокаВывода +lmodel+";"+zmodel+";"+БлокОффер.Получить("price")+";";
Если idfl <> Неопределено Тогда
Попытка
ПорядкН99= Число(idfl);
Лист.Cells(ПорядкН99, 4).Value = БлокОффер.Получить("price");
Исключение
Сообщить("не преобраз."+idfl);
КонецПопытки;
КонецЕсли;
// ***
КонецЕсли;
Если НЕ ПустаяСтрока(СтрокаВывода) Тогда
Текст.ДобавитьСтроку(СтрокаВывода);
СтрокаВывода="";
ВсегоЗаписей = ВсегоЗаписей + 1;
КонецЕсли;
БлокОффер.Очистить();
КонецЕсли;
КонецЕсли;
ВсегоЦиклов = ВсегоЦиклов + 1;
КонецЦикла;
=====
В программе используются функции перевода строки в Транслит и убирание пустых символов.
На основании этого макета обработки можно составить любые программы обновления файлов Csv из файлов формата xml
Благодарю за внимание.