Выгрузка в xml файл с правильным форматированием

09.01.17

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

Пример форматирования xml текста с помощью таблицы стилей. Данный прием позволяет добиться "правильного" форматирования xml данных при работе с объектной моделью документа. А именно, заменить представление содержимого xml файла в виде сплошной строки, на текст с переносом строк и отступами в разделах.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Выгрузка справочника в xml формате
.ert 193,50Kb
14
14 Скачать (1 SM) Купить за 1 850 руб.

И ветер-память по ночам гудит,
Деревья-память целый день лепечут.

И там, в пернатой памяти моей,
Все сказки начинаются с "однажды".

Так вот, однажды мне пришлось переносить данные из базы на платформе 1С:Предприятие 7.7. Первый этап, как обычно, состоял в экспорте-импорте справочников. В качестве средства обмена выступал файл в формате xml. Запись и последующее чтение было реализовано через объект Msxml2.DOMDocument.  

xmlDOM=СоздатьОбъект("Msxml2.DOMDocument.3.0"); 
xmlDOM.async=0;
	
Header = xmlDOM.createProcessingInstruction("xml", "version=""1.0"" encoding=""windows-1251""" );  
xmlDOM.appendChild(Header);   
Body = xmlDOM.createElement(name);    
xmlDom.appendChild(Body);  

В приведенном фрагменте кода  создается объект xmlDOM и  формируется  секция заголовка будущего файла, в который добавляется корневой элемент Body, содержащий всю выводимую информацию. В дальнейшем создание  новых записей происходит через вызов двух функций - createElement(...) и appendChild(...). Когда xml документ заполнен, он сохраняется в виде внешнего файла вызовом метода Save(...).

Последовательность действий несложная. Но если открыть полученный файл, то окажется, что все данные представлены одной длинной строкой. А это, откровенно говоря, неудобно. Возникает вполне законный вопрос, как привести информацию к удобному виду.  

Оказывается, что я не первый, кто столкнулся с этой проблемой. В русскоязычном разделе Сети вопросов "что в этом случае делать?" значительно больше чем ответов.  На самом деле, решение единственное - заменить последовательность символов >< на последовательность >[символ переноса строки]<. Никаких иных способов мне не встречалось. А вот замену можно провести по разному.

Один из способов состоит в применении к подготовленному xml тексту таблицы стилей, которая фактически является набором команд по преобразованию исходного представления в нужное. Делается такое преобразование одной командой - xmlDOM.transformNodeToObject(...). Секрет состоит в содержании таблицы стилей. В описании я его приводить не буду, для этого понадобится заглянуть в модуль обработки и найти функцию Function Transform(doc,path). Данное решение я встретил на англоязычном сайте, за что автору спасибо.

Но это еще не все, используя данный метод я обнаружил, что преобразованный текст сохраняется в кодировке UTF-16. Впрочем, после непродолжительной борьбы данное препятствие было устранено. Применение обработки труда не составит. Надо выбрать файл приемник, указать вид справочника, который необходимо выгрузить и нажать кнопку Сформировать. По команде Структура выводится табличный  документ с описанием реквизитов выбранного справочника.

xml форматирование

См. также

SALE! 10%

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

Перенос данных из 1С:Бухгалтерия 7.7 в БП 3.0 | Продукт является развитием и исправлением ошибок стандартной обработки для выгрузки данных из 1С Бухгалтерии 7.7 в Бухгалтерию 3.0 | Перенос из 7.7 является сложным, и на рынке сложно найти специалистов 1С по "семерке" - сотрудники помогут вам выполнить переход в рамках техподдержки предлагаемого переноса данных!

55778 50200 руб.

26.05.2020    35800    11    78    

17

Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v7.7 1C77 Платные (руб)

Универсальная обработка для 1С 7.7 по конвертации XML-файла заранее неизвестной структуры в Таблицу значений с возможностью вывода наглядной печатной формы формата MXL (с возможностью свёртки узлов XML) и/или наглядной печатной формы формата Excel (с возможностью свёртки узлов XML).

1000 руб.

16.01.2018    26907    9    0    

13

Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v7.7 1С:Торговля и склад 7.7 Абонемент ($m)

Представляю Вам техническую обработку, которая позволяет выгрузить справочник номенклатуры ТиС 7.7 в удобочитаемый JSON.

10 стартмани

09.01.2025    844    0    quazare    0    

4

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v7.7 НДС Абонемент ($m)

Пример создания документа Поступление (акт, накладная, УПД) в 1С: Бухгалтерии 3 путем загрузки из XML универсального формата EnterpriseData 1.12 файла, сгенерированного обработкой документа "Реализация". Выгрузка реализации написана в самописной конфигурации на платформе 1С:Предприятие 7.7. Способ заполнения реквизитов поступления можно переделать под себя, выгрузка XML в универсальный формат EnterpriseData останется работоспособной.

1 стартмани

14.02.2023    3296    8    ksnik    0    

6

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

Программный комплекс способный распознавать сотни листов за раз любых сканированных(фото) документов (УПД, ТОРГ12, СФ, паспорт и пр.) и загружать их в любую 1С (БП3.0, УТ, КА, УНФ, УПП, 1С7.7 ТиС, ЗУП3 и пр.), а также формировать архив сканированных документов.<br> Робот применяет до 5 способов распознавания. Максимальное качество загрузки документов из бесплатных OCR. Работает без Интернета.

10800 руб.

13.10.2022    8886    1    12    

9

Файловый обмен (TXT, XML, DBF), FTP Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Бухгалтерский учет НДС Абонемент ($m)

Выгрузка реестра необлагаемых НДС операций в ответ на требование налоговой инспекции. В формате xml согласно требованиям законодательства https://sbis.ru/formats/docFormatCard/120287/help/?scrollTo=description Реестр документов подаётся в ответ на требование налоговой о представлении пояснений. Начиная с 23 ноября 2020 года, его можно направлять по ТКС, в электронном виде в формате xml (письмо ФНС России от 12.11.2020 № ЕА-4-15/18589). Данная обработка просто выбирает необлагаемые суммы (не по ставке 0%) по книги продаж за выбранный квартал и включает их в реестр с кодом операции, который выбран в самой обработке.

1 стартмани

24.09.2021    4969    5    AndKovalchuk    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. suvolod 28 02.01.17 12:51 Сейчас в теме
Из примера в описании я вижу, что табуляции (отступа у вложенных элементов) нет. Печально.... читать большую xml-ку, написанную в "один столбец", почти также трудно как написанную "в одну строку",
2. Al-77 74 13.11.17 17:11 Сейчас в теме
Функция не обнаружена (gluvДобавитьУзел)
3. DenisCh 13.11.17 17:24 Сейчас в теме
А зачем это нужно? Кто-то смотрит хмл руками?
4. M_W_W 35 09.01.20 23:28 Сейчас в теме
Давно пользовался Вашей функцией "Transform" в своих проектах, очень радовала... А вчера, столкнулся с тем, что при превышении определенного размера XML, 1С на этой обработке начинает жутко тупить... При чем, это не сказать, что-бы сильно большая XML... Выгрузка справочника товаров для ККТ, когда их примерно 10 000, происходит практически мгновенно. А попалась база, в которой 50 000 товаров(казалость бы, что такого, всего в пять раз), и она задумывается "на всегда"... Ну, не знаю, пару раз попробовал, по пол часа прождал, и приходилось снимать задачу... Затык происходит именно на этой функции, в отладчике смотрел, DOM формируется нормально, доходит до сохранения файла, проваливается в нее, и все, висяк... Метод Save для этого-же DOM отрабатывет нормально, практически мгновенно.
А, да... Размеры файлов. Тот, в котором 10 000 товаров, примерно 2.5 мегабайта, тот, в котором 50 000 - примерно 14.5 мегабайт. Структура самих XML одинаковая.
В чем может быть причина?
5. scientes 296 17.01.20 15:19 Сейчас в теме
Добрый день. Возможно причина в особенностях движка Msxml2.DOMDocument.3.0. Надо попробовать использовать его более новую версию, например Msxml2.DOMDocument.6.0
6. M_W_W 35 22.01.20 19:46 Сейчас в теме
Будет время - попробую... Но, чисто с "прикладной" точки зрения, пофиг на форматирование, программы, которым предназначены эти файлы - глотают их и так, без форматирования, одной строкой. Зато, XMLDOM.Save(Путь), отрабатывает мгновенно. А если самому понадобится "поковырять" сформированный XML, то можно и раскомментировать вызов функции, и подождать. Ну, или, через IE его открывать, не форматированный, он его все равно откроет нормально, форматируя "на ходу"... Но, если файл большой, то открывает его то-же долгоооо....
Оставьте свое сообщение