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

09.01.17

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Выгрузка справочника в xml формате
.ert 193,50Kb
13
13 Скачать (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 Конфигурации 1cv7 Россия Платные (руб)

Класс 1С++ для подключения ФИАС (Федеральная информационная адресная система) к любой конфигурации 1С 7.7. Опционально доступно геокодирование адресов и хранение географических координат адресных элементов ФИАС в отдельной БД. В конфигурации, где для ведения адресов используется типовой интерфейс по работе с КЛАДР, встраивается за пару минут.

6000 руб.

15.11.2017    27510    31    71    

29

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

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

1 стартмани

14.02.2023    3091    8    ksnik    0    

6

Файловый обмен (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    8418    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    4745    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    9233    55    Kuzya_brаtsk    8    

11

Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД Программист Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 1С:Торговля и склад 7.7 1С:Бухгалтерия 1.6 1С:Упрощенное налогообложение 7.7 Россия Бухгалтерский учет Абонемент ($m)

Обмениваемся УПД (УКД) с различными контрагентами через СБИС. А чтобы загрузить УПД (УКД) из 7.7 в Сбис, используем данную обработку, которая создает файл в формате XML, который можно импортировать в систему электронного документооборота. Для конфигурации "Бухгалтерский учет" (тестировалась на релизе 7.70.663) Для конфигурации "Упрощенная система налогообложения" ( тестировалась на релизе 7.70.305) Для конфигурации "Торговля и Склад 7.7" (тестировалась на релизе 7.70.1007)

1 стартмани

31.07.2021    16624    257    AndKovalchuk    54    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 32 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 295 17.01.20 15:19 Сейчас в теме
Добрый день. Возможно причина в особенностях движка Msxml2.DOMDocument.3.0. Надо попробовать использовать его более новую версию, например Msxml2.DOMDocument.6.0
6. M_W_W 32 22.01.20 19:46 Сейчас в теме
Будет время - попробую... Но, чисто с "прикладной" точки зрения, пофиг на форматирование, программы, которым предназначены эти файлы - глотают их и так, без форматирования, одной строкой. Зато, XMLDOM.Save(Путь), отрабатывает мгновенно. А если самому понадобится "поковырять" сформированный XML, то можно и раскомментировать вызов функции, и подождать. Ну, или, через IE его открывать, не форматированный, он его все равно откроет нормально, форматируя "на ходу"... Но, если файл большой, то открывает его то-же долгоооо....
Оставьте свое сообщение