Как заменить символы, которые 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

См. также

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135972    731    291    

393

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Перенос данных 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 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    69146    181    139    

111

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.226.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20783    136    38    

95

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

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

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    47082    201    64    

162

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

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

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

48278 43450 руб.

03.12.2020    34610    83    58    

81

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

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

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    68014    41    123    

46

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки

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

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

50722 45650 руб.

24.04.2015    191267    270    239    

270

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в 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 Платные (руб)

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

14400 руб.

20.11.2015    152142    368    376    

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