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

Синхронизация и обмен для 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    136898    737    292    

394

Перенос данных из 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 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 руб.

15.04.2019    69587    171    141    

112

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

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

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

28000 руб.

23.07.2020    47620    206    64    

166

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

43450 руб.

03.12.2020    34874    84    58    

81

Перенос данных из УПП 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.227.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    21179    138    38    

97

[ED2] Обмен УПП 1.3, КА 1.1, УТ 10.3 с EnterpriseData (универсальный формат обмена), обработка

Перенос данных 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, почту.

14580 руб.

18.02.2016    183739    567    508    

510

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

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

Переход и перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:ERP Управление предприятием 2.5 и 1С:Комплексную автоматизацию 2.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.227.x), ERP 2.5 (2.5.16.x), КА 2.5 (2.5.16.x) .

28000 руб.

24.06.2020    61775    45    27    

76

Перенос данных из КА 1.1 в КА 2.5. Переносятся документы, остатки и справочники

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

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

45650 руб.

04.12.2015    189913    240    345    

396
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 1813 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 3046 12.03.24 18:53 Сейчас в теме
Чета сложно намутили...
Прикрепленные файлы:
6. prog2019 48 13.03.24 13:41 Сейчас в теме
	//  Если нужно читать XML не из файла, а из строковой переменной СтрXML
	Парсер = Новый ЧтениеXML;
	Парсер.УстановитьСтроку(СтрXML);         //  устанавливает строку, содержащую текст XML
	XДТО = ФабрикаXDTO.ПрочитатьXML(Парсер);
	Для каждого Ст Из XДТО.Свойства() Цикл
		Сообщить(Ст. Имя) ;
		Сообщить(ХДТО[Ст.Имя]);
	КонецЦикла;
Оставьте свое сообщение