Символы переноса строки при выгрузке в XML
Добрый день! Находил одну тему на форуме, но год у неё старый и решения там не увидел. Возможно за это время время что-то поменялось. Создал выгрузку в xml, но при выгрузке данные пишутся в одну строчку, без переносов строк. Есть ли какая-нибудь возможность добавить в файл xml символы, которые будут показывать, что в определённом месте должен быть перенос строки? В документе в 1С выглядит как на скрине
Прикрепленные файлы:
По теме из базы знаний
- Выгрузка в xml файл с правильным форматированием
- Перенос данных из КА 1.1 в КА 2.5. Переносятся документы (обороты за период), справочная информация и остатки
- Перенос данных из УПП 1.3 в ERP 2.5, КА 2.5. Переносятся документы (обороты за период), справочная информация и остатки
- Перенос данных из КА 1.1 в ERP 2.5. Переносятся документы (обороты за период), справочная информация и остатки
- Выгрузка запроса с заполненными параметрами в файл для консоли запросов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Вот такой код
Файл=Новый ЗаписьXML;
Файл.ОткрытьФайл(Путь + "my_xml.xml");
Файл.ЗаписатьОбъявлениеXML();
Файл.ЗаписатьНачалоЭлемента("Корневой");
Файл.ЗаписатьАтрибут("ВыгружаемыйДокумент","Занятие");
Файл.ЗаписатьКомментарий("Выгрузка домашнего задания");
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| Занятие.Дата КАК Дата,
| Занятие.Дисциплина КАК Дисциплина,
| Занятие.Преподаватель КАК Преподаватель,
| Занятие.ДомашнееЗадание КАК ДомашнееЗадание,
| Занятие.Тема КАК Тема,
| Занятие.Группа КАК Группа,
| Занятие.ВидНагрузки КАК ВидНагрузки
|ИЗ
| Документ.Занятие КАК Занятие";
Выборка =Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Файл.ЗаписатьНачалоЭлемента("Элемент");
Файл.ЗаписатьАтрибут("Дата",Строка(Выборка.Дата));
Файл.ЗаписатьАтрибут("Дисциплина",Строка(Выборка.Дисциплина));
Файл.ЗаписатьНачалоЭлемента("Преподаватель");
Файл.ЗаписатьТекст(Строка(Выборка.Преподаватель));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Тема");
Файл.ЗаписатьТекст(Строка(Выборка.Тема));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ДомашнееЗадание");
Файл.ЗаписатьТекст(Строка(Выборка.ДомашнееЗадание));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Группа");
Файл.ЗаписатьТекст(Строка(Выборка.Группа));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ВидНагрузки");
Файл.ЗаписатьТекст(Строка(Выборка.ВидНагрузки));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;
Файл.ЗаписатьКонецЭлемента();
Файл.Закрыть();
ПоказатьВот такой код
(5) заполнение не влияет. Чем смотрите?
А в каком месте ожидаете переносы увидеть?
Вот, для примера усеченный вариант того что получается:
<?xml version="1.0" encoding="UTF-8"?>
<Корневой ВыгружаемыйДокумент="Занятие">
<!--Выгрузка домашнего задания-->
<Элемент Дата="21.04.2021 18:32:07" Дисциплина="Дисциплина1">
<Преподаватель>Преподаватель1</Преподаватель>
</Элемент>
</Корневой> Показать
А в каком месте ожидаете переносы увидеть?
Вот, для примера усеченный вариант того что получается:
<?xml version="1.0" encoding="UTF-8"?>
<Корневой ВыгружаемыйДокумент="Занятие">
<!--Выгрузка домашнего задания-->
<Элемент Дата="21.04.2021 18:32:07" Дисциплина="Дисциплина1">
<Преподаватель>Преподаватель1</Преподаватель>
</Элемент>
</Корневой>
(6) Смотрю в браузере и в блокноте. Вообще ожидаю, что в местах красных линий будут какие-то вставки типа символа или ещё чего, чтобы программисту сайта понятно было, что его обработчику описать для распознавания переносов. Или так не получится?
Прикрепленные файлы:
(7) вот для кода:
Получаем:
Файл=Новый ЗаписьXML;
Файл.ОткрытьФайл("D:\Temp\1.xml");
Файл.ЗаписатьОбъявлениеXML();
Файл.ЗаписатьНачалоЭлемента("Корневой");
Файл.ЗаписатьАтрибут("ВыгружаемыйДокумент","Занятие");
Файл.ЗаписатьКомментарий("Выгрузка домашнего задания");
Файл.ЗаписатьНачалоЭлемента("Элемент");
Файл.ЗаписатьАтрибут("Дата",XMLСтрока(ТекущаяДата()));
Файл.ЗаписатьАтрибут("Дисциплина",XMLСтрока("Дисциплина1"));
Файл.ЗаписатьНачалоЭлемента("Преподаватель");
СтрТекст = "Преподаватель1
| Ghtgjl2";
Файл.ЗаписатьТекст(XMLСтрока(СтрТекст));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьКонецЭлемента();
Файл.Закрыть();
ПоказатьПолучаем:
<?xml version="1.0" encoding="UTF-8"?>
<Корневой ВыгружаемыйДокумент="Занятие">
<!--Выгрузка домашнего задания-->
<Элемент Дата="2021-04-21T18:49:09" Дисциплина="Дисциплина1">
<Преподаватель>Преподаватель1
Ghtgjl2</Преподаватель>
</Элемент>
</Корневой>
<Корневой ВыгружаемыйДокумент="Занятие">
<!--Выгрузка домашнего задания-->
<Элемент Дата="2021-04-21T18:49:09" Дисциплина="Дисциплина1">
<Преподаватель>Преподаватель1
Ghtgjl2</Преподаватель>
</Элемент>
</Корневой>
(16)
Путь = Константы.ПутьВыгрузкиДЗ.Получить();
Файл=Новый ЗаписьXML;
Файл.ОткрытьФайл(Путь + "my_xml.xml",Новый ПараметрыЗаписиXML(,,,,Символы.ПС));
Файл.ЗаписатьОбъявлениеXML();
Файл.ЗаписатьНачалоЭлемента("Корневой");
Файл.ЗаписатьАтрибут("ВыгружаемыйДокумент","Занятие");
Файл.ЗаписатьКомментарий("Выгрузка домашнего задания");
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| Занятие.Дата КАК Дата,
| Занятие.Дисциплина КАК Дисциплина,
| Занятие.Преподаватель КАК Преподаватель,
| Занятие.ДомашнееЗадание КАК ДомашнееЗадание,
| Занятие.Тема КАК Тема,
| Занятие.Группа КАК Группа,
| Занятие.ВидНагрузки КАК ВидНагрузки
|ИЗ
| Документ.Занятие КАК Занятие";
Выборка =Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Файл.ЗаписатьНачалоЭлемента("Элемент");
Файл.ЗаписатьАтрибут("Дата",Строка(Выборка.Дата));
Файл.ЗаписатьАтрибут("Дисциплина",Строка(Выборка.Дисциплина));
Файл.ЗаписатьНачалоЭлемента("Преподаватель");
Файл.ЗаписатьТекст(Строка(Выборка.Преподаватель));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Тема");
Файл.ЗаписатьТекст(Строка(Выборка.Тема));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ДомашнееЗадание");
СтрТекст = "ДомашнееЗадание1
|/n";
Файл.ЗаписатьТекст (XMLСтрока(СтрТекст));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("Группа");
Файл.ЗаписатьТекст(Строка(Выборка.Группа));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьНачалоЭлемента("ВидНагрузки");
Файл.ЗаписатьТекст(Строка(Выборка.ВидНагрузки));
Файл.ЗаписатьКонецЭлемента();
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;
Файл.ЗаписатьКонецЭлемента();
Файл.Закрыть();
Показать
(21) если нужно именно в браузере смотреть, то это совсем плохо.
Попробуйте добавить в качестве разделителя < br/ >. Но это так себе ...
Пробелы убрать внутри угловых скобок (на сайте изначально он не отображается)
Попробуйте добавить в качестве разделителя < br/ >. Но это так себе ...
СтрТекст = "ДомашнееЗадание1 < br/ >
| Новая строка";
Файл.ЗаписатьБезОбработки(СтрТекст);
Пробелы убрать внутри угловых скобок (на сайте изначально он не отображается)
(17)
Вот этим что хотели сделать?
Я в своем коде просто привел пример, как нужно вставлять переносы в строке. У меня нет вашей базы и выборку не делал. Просто указав "|" не означает автоматически проставить куда-то переносы. Это символ вставки переноса в текст именно в том месте, где этот символ будет (с новой строки, означающий продолжение строки). ничего более. Можно без него:
а "/n" вообще не воспринимается 1С как разделитель. Это обычный текст.
СтрТекст = "ДомашнееЗадание1
|/n";
|/n";
Вот этим что хотели сделать?
Я в своем коде просто привел пример, как нужно вставлять переносы в строке. У меня нет вашей базы и выборку не делал. Просто указав "|" не означает автоматически проставить куда-то переносы. Это символ вставки переноса в текст именно в том месте, где этот символ будет (с новой строки, означающий продолжение строки). ничего более. Можно без него:
СтрТекст = "Тут первая строка"+Символы.ПС+"тут вторая строка"+Символы.ПС+"тут треться строка";
а "/n" вообще не воспринимается 1С как разделитель. Это обычный текст.
Решил ситуацию следующим образом
Правда символ ставится и в конце строки и начале следующей, но в целом жить можно. В дальнейшем, если найду другое решение, дополню статью
Файл.ЗаписатьНачалоЭлемента("ДомашнееЗадание");
Файл.ЗаписатьТекст(СтрЗаменить(Выборка.ДомашнееЗадание,Символы.ПС,"/n"));
Файл.ЗаписатьКонецЭлемента();
Правда символ ставится и в конце строки и начале следующей, но в целом жить можно. В дальнейшем, если найду другое решение, дополню статью
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот