Обработка данных XML в СSV. Замена поля. Простой практический пример

17.02.15

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

В наше время часто ставится задача работы с данными форматов XML и CSV.
Первый формат файлов широко используется в самых разных программных системах для выгрузки и загрузки нетабличных данных (т.е. данных представленных в виде дерева).
Второй формат часто используется в интернет-магазинах для загрузки данных.
Иногда актуальной становится задача обновления данных формата CSV из файла XML.
Решению этой задачи и посвящена данная статья.

Скачать исходный код

Наименование Файл Версия Размер
Обработка данных XML в СSV . Замена поля. Простой практический пример.
.epf 10,38Kb
7
.epf 10,38Kb 7 Скачать

Обработка на основании данных из файла 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

Благодарю за внимание.

 

xml csv

См. также

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135512    730    291    

391

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20586    136    38    

93

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    68801    179    139    

111

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46739    199    64    

162

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    67736    41    123    

46

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

48278 43450 руб.

03.12.2020    34401    81    58    

78

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9303    9    8    

11

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 09.04.2024, версия 9.9 - 9.10)

14400 руб.

20.11.2015    151345    366    376    

502
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4722 17.02.15 09:18 Сейчас в теме
Я бы для такой задачи использовал xslt-преобразование и, возможно, регулярные выражения. Было бы и универсально, и быстрее, чем в циклах.
+
2. uvsd2014 4 17.02.15 09:52 Сейчас в теме
(1) Yashazz, Да, возможно, но не все понимают эту технологию. Пример в статье именно отличается простотой и доступностью для изменения и не требует дополнительных усилий, чтобы вникнуть в тонкости xslt-преобразования
Чтобы подготовить небольшой участок земли к посадке весной вовсе не обязательно вызывать трактор.

Будьте добры - приведите пример как можно эту программу изменить с использованием xslt-преобразования
+
3. Yashazz 4722 17.02.15 10:58 Сейчас в теме
(2) Фраза
На основании этого макета обработки можно составить любые программы обновления файлов Csv из файлов формата xml
говорит о претензии на нечто большее, чем вскапывание огородика на 6 сотках))

Пишите в личку, обсудим стоимость, если это для вас актуально.
+
4. uvsd2014 4 17.02.15 11:16 Сейчас в теме
Извините, но мне собственно говоря не нужна Ваша программа - это программа вполне работоспособна и устраивает и клиентов и меня.
+
Оставьте свое сообщение