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

09.01.17

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

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

Скачать файлы

Наименование Файл Версия Размер
Выгрузка справочника в xml формате
.ert 193,50Kb
12
.ert 193,50Kb 12 Скачать

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

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

Так вот, однажды мне пришлось переносить данные из базы на платформе 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%

Перенос данных из 1С:Бухгалтерия 7.7 в БП 3.0. Переносятся остатки, документы и справочники

Файловый обмен (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 | Предоставляем техподдержку | Обновляем на новые релизы 1С | Перенос из 7.7 является сложным, и на рынке сложно найти специалистов 1С по "семерке" - наши сотрудники помогут вам выполнить переход в рамках техподдержки предлагаемого переноса данных!

50722 45650 руб.

26.05.2020    33910    10    67    

16

Загрузка документов в 1С (7.7) из табличных файлов Excel,OpenOffice,1C,DBF,TXT (обработка)

Файловый обмен (TXT, XML, DBF), FTP Загрузка и выгрузка в Excel Платформа 1С v7.7 Конфигурации 1cv7 Платные (руб)

Обработка решает поставленную задачу по вводу документов, а кроме того обладает важной функцией: настраивается на ассортимент конкретного поставщика, запоминая соответствие между его номенклатурой и «нашей». Т.е. фактически – является самообучающейся системой ввода накладных. У разных поставщиков могут быть накладные различного типа, с разным количеством полей, поэтому для каждого из них может быть сохранена своя собственная настройка диалоговой формы так, что любая поступающая накладная может быть обработана. По отношению к программе "1С:Предприятие 7.7" данное решение является внешними файлами. Для использования данного продукта не требуется вносить изменения в алгоритм существующих программ или используемых конфигураций.

2400 руб.

10.12.2009    76456    58    93    

68

Выгрузка документа Поступление товаров на комиссию из 1С 7.7 в универсальный формат EnterpriseData 1.12 для загрузки в 1С: Бухгалтерию 3

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

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

1 стартмани

14.02.2023    2715    6    ksnik    0    

6

Робот-загрузчик и архив документов. Распознавание/загрузка сканов документов в 1С8(7.7), архив сканированных документов.

Файловый обмен (TXT, XML, DBF), FTP Учет документов Распознавание документов и образов Платформа 1С v7.7 Платформа 1С v8.3 Платформа 1C v8.2 Конфигурации 1cv8 Конфигурации 1cv7 Россия Платные (руб)

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

10800 руб.

13.10.2022    7859    1    12    

9

Реестр необлагаемых по 7 разделу декларации НДС операций

Файловый обмен (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    4440    5    AndKovalchuk    0    

3

Выгрузка из 1С ТиС 9.2 в 1С БП 3.0 с дополнительными фильтрами по Фирме, Складу, Контрагенту, Проекту, Автору и Юрлицу

Файловый обмен (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    8367    52    Kuzya_brаtsk    8    

11
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. suvolod 28 02.01.17 12:51 Сейчас в теме
Из примера в описании я вижу, что табуляции (отступа у вложенных элементов) нет. Печально.... читать большую xml-ку, написанную в "один столбец", почти также трудно как написанную "в одну строку",
2. Al-77 73 13.11.17 17:11 Сейчас в теме
Функция не обнаружена (gluvДобавитьУзел)
3. DenisCh 13.11.17 17:24 Сейчас в теме
А зачем это нужно? Кто-то смотрит хмл руками?
4. M_W_W 30 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 288 17.01.20 15:19 Сейчас в теме
Добрый день. Возможно причина в особенностях движка Msxml2.DOMDocument.3.0. Надо попробовать использовать его более новую версию, например Msxml2.DOMDocument.6.0
6. M_W_W 30 22.01.20 19:46 Сейчас в теме
Будет время - попробую... Но, чисто с "прикладной" точки зрения, пофиг на форматирование, программы, которым предназначены эти файлы - глотают их и так, без форматирования, одной строкой. Зато, XMLDOM.Save(Путь), отрабатывает мгновенно. А если самому понадобится "поковырять" сформированный XML, то можно и раскомментировать вызов функции, и подождать. Ну, или, через IE его открывать, не форматированный, он его все равно откроет нормально, форматируя "на ходу"... Но, если файл большой, то открывает его то-же долгоооо....
Оставьте свое сообщение