Выгрузка в 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 форматирование

См. также

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

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

1000 руб.

16.01.2018    26814    9    0    

13

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

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

10 стартмани

09.01.2025    752    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    3229    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    8737    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    4913    5    AndKovalchuk    0    

3

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

Обработка и правила обмена данными для выгрузки документов и всех связанных с ними справочников из 1С7.7 ТиС 9.2 в 1С8.3 БП 3.0 через файл XML. В типовых конфигурациях уже есть такое решение. Это немного доработанные правила и сама обработка выгрузки, добавлена возможность устанавливать отбор по выгружаемым документам по Фирме, Контрагенту, Складу, Проекту, Автору, ЮрЛицу. А также это внешняя обработка, что даёт возможность адаптировать её под нетиповую ТиС. Обработка и правила тестировались на платформах: 1С: Предприятие 7.7 и 1С: Предприятие 8.3.18.1334. На типовых конфигурациях: «Торговля + склад», редакция 9.2 (7.70 1004) и «Бухгалтерия предприятия» редакция 3.0 (3.0.96.30).

1 стартмани

13.08.2021    9655    65    Kuzya_brаtsk    8    

11
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 его открывать, не форматированный, он его все равно откроет нормально, форматируя "на ходу"... Но, если файл большой, то открывает его то-же долгоооо....
Оставьте свое сообщение