Как заменить символы, которые 1С не может распознать при чтении файлов XML

11.03.24

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

Замена символов, которые 1С не может распознать при чтении файлов XML

Бывают ситуации, когда в 1С нужно загружать данные в формате XML, например, прайс-листы.

Но в них есть символы, которые 1С не может распознать при чтении файлов XML.

Например, амперсанд &.

 

Причём, надо поместить ответ HTML (или XML если загружаем из файла) в отдельную строковую переменную, иначе, может не заменить символы.

Потом при обработке данных обратно заменяем _quot_ на " и _amp_ на &:

        НаименованиеКав = СтрЗаменить(name_Реквизит.ТекстовоеСодержимое, "_quot_", Символ(34));  // двойная кавычка "   
        Наименование = СтрЗаменить(НаименованиеКав, "_amp_", Символ(38));  // амперсанд &

 

Текст кода для копирования (без восьмой строки):

	СоединениеHTTPS = Новый HTTPСоединение("santrek.ru",,,,,,Новый ЗащищенноеСоединениеOpenSSL(),);
	Запрос = Новый HTTPЗапрос("/api/yml/");
	Ответ = СоединениеHTTPS.Получить(Запрос);
	Если Ответ.КодСостояния = 200 Тогда  
		Ответ_HTML = Ответ.ПолучитьТелоКакСтроку(); 
		Строка_Ответ_HTML = "";
		Строка_Ответ_HTML = Ответ_HTML;
		ИзмКав_Ответ_HTML =  
		ИзмАмп_Ответ_HTML = СтрЗаменить(ИзмКав_Ответ_HTML, "&", "_amp_");
		ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
		ТекстФайл = Новый ЗаписьТекста(ИмяВременногоФайла, КодировкаТекста.UTF8);
		ТекстФайл.Записать(ИзмАмп_Ответ_HTML);
		ТекстФайл.Закрыть();
		КопироватьФайл(ИмяВременногоФайла, ПапкаСантрек + "yml.xml");
		ЗагрузитьСантрек(ПапкаСантрек + "yml.xml");    
	КонецЕсли;

 

Вступайте в нашу телеграмм-группу Инфостарт

Чтение XML

См. также

SALE! 20%

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

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    149548    873    302    

456

SALE! 10%

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

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    76764    208    160    

145

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

16260 руб.

18.02.2016    192622    628    540    

547

SALE! 10%

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.

55778 50200 руб.

24.04.2015    200701    166    247    

291

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    175830    321    270    

391

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    40074    115    73    

108

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

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 09.07.2025, версия 9.11 - 10.1)

18000 руб.

20.11.2015    164578    410    386    

534

SALE! 10%

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

Перенос данных из КА 1.1 в КА 2 | из КА 1.1 в УТ 11 | Воспользовались более 367 компаний! | Переносятся все возможные виды документов, начальных остатков и вся справочная информация из "1С:КА 1.1" в "1С:КА 2.х" / "1С:УТ 11" | Разработан в формате КД 2 (правила конвертации данных) | Фильтр по организациям при выгрузке | Выбор разных алгоритмов выгрузки начальных остатков | Можно проверить перенос до покупки!

55778 50200 руб.

04.12.2015    194918    254    351    

409
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 2034 11.03.24 09:05 Сейчас в теме
Зачем такой частокол кода?
Ответ_HTML = Ответ.ПолучитьТелоКакСтроку(); 
Строка_Ответ_HTML = "";
Строка_Ответ_HTML = Ответ_HTML;
ИзмКав_Ответ_HTML = СтрЗаменить(ИзмКав_Ответ_HTML, "&quоt;", "_quot_");
ИзмАмп_Ответ_HTML = СтрЗаменить(ИзмКав_Ответ_HTML, "&", "_amp_");

Все можно уместить в одну строку
ИзмАмп_Ответ_HTML = СтрЗаменить(СтрЗаменить(Ответ.ПолучитьТелоКакСтроку(), "&quоt;", "_quot_"), "&", "_amp_");

Мой внутренний перфекционист негодует))

--
Апд. Пока редактировал комментарий, понял, почему текст для копирования дан без восьмой строки. Инфостарт тоже заменят &quоt; на кавычку. Пришлось для наглядности заменить латинскую О на русскую))
3. prog2019 49 12.03.24 07:32 Сейчас в теме
(1) Я сначала и пробовал заменять символы сразу в ответе HTML. Не знаю, как у других, а у меня чудесным образом они не заменились. Только если сначала создать пустую строковую переменную, потом в неё записать ответ HTML, потом заменять символы в этой строковой переменной, только тогда они у меня заменяются.
И год назад у меня была похожая ситуация. Тоже символы заменяются, только если они в отдельной строковой переменной.
4. prog2019 49 12.03.24 08:21 Сейчас в теме
(1) Ну а что касается компактности...
У меня код такой, чтобы любой человек мог легко его читать и понимать.
Я же не для себя статьи пишу.
user1878860; +1 Ответить
2. Sam13 369 11.03.24 10:07 Сейчас в теме
(1) Не соглашусь с Вами. Мне ближе позиция автора. Длинные строки с вложенными друг в друга функциями хуже читаются. К тому же, если замен будет не 2 а 3, 4, 5, то у автора код не сильно поменяется, а вот Ваш вариант сильно усложнится для восприятия. ИМХО
user1878860; Trucker; brr; Rais96; it@contlog.ru; +5 Ответить
5. starik-2005 3184 12.03.24 18:53 Сейчас в теме
Чета сложно намутили...
Прикрепленные файлы:
6. prog2019 49 13.03.24 13:41 Сейчас в теме
	//  Если нужно читать XML не из файла, а из строковой переменной СтрXML
	Парсер = Новый ЧтениеXML;
	Парсер.УстановитьСтроку(СтрXML);         //  устанавливает строку, содержащую текст XML
	XДТО = ФабрикаXDTO.ПрочитатьXML(Парсер);
	Для каждого Ст Из XДТО.Свойства() Цикл
		Сообщить(Ст. Имя) ;
		Сообщить(ХДТО[Ст.Имя]);
	КонецЦикла;
Оставьте свое сообщение