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

17.02.15

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Обработка данных XML в СSV . Замена поля. Простой практический пример.
.epf 10,38Kb
7 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • Поиск от одного разработчика до ИТ-команд под проект.
  • Обмен любыми контактами разрешён.
  • 0% комиссии, допускаются расчёты напрямую.

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

См. также

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    187618    356    288    

416

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 руб.

12.06.2017    159811    960    317    

481

SALE! 10%

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

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

38000 34200 руб.

15.12.2021    33635    250    64    

190

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

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

58000 руб.

29.10.2018    62444    80    131    

79

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

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

38000 34200 руб.

23.07.2020    67534    313    94    

252

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

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

58000 руб.

15.04.2019    83355    222    174    

161

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 3, УНФ 3 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

16531 руб.

18.02.2016    202282    671    543    

562

НДС 22% Учетные задачи ККМ Файловый обмен (TXT, XML, DBF), FTP 1С 8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Бухгалтерский учет Налоговый учет НДС Платные (руб)

Готовое обновление для конфигурации 1С:Управление торговлей 10.3, 1С:Комплексная автоматизация 1.1 , 1С:Управление производственным предприятием 1.3 обеспечивающее полную поддержку новой ставки НДС 22%. Для 1С:УТ 10.3 реализована поддержка печати чеков ККМ, а также Правила обмена с 1С:БП 3.0. Решение встраивает необходимые изменения в перечисления и документы, включая торговые операции и печатные формы.

12200 руб.

16.12.2025    8248    91    0    

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

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

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