Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

ERR_1C_XML_PARSER_SYNTAX 1С:Предприятие и СУБД

Ошибка синтаксического анализа XML в 1С — Поиск и исправление

Обновлено: 25.08.2026 · Официальная документация ↗
  • Исключение: Ошибка синтаксического анализа XML (XML parser error: mismatched tag / unexpected end of file).
  • Сбой выгрузки/загрузки данных через планы обмена и правила конвертации (КД 2.0 / КД 3.0).
  • Наличие в теле документа недопустимых непечатаемых управляющих символов ASCII (коды 0x00 - 0x1F).
  • Нарушение структуры тегов и кодировки XML пролога (<?xml version="1.0" encoding="UTF-8"?>).

1. Поиск точной строки и колонки ошибки в ЧтениеXML

Объект ЧтениеXML позволяет точно определить место повреждения документа:

Чтение = Новый ЧтениеXML;
Попытка
    Чтение.ОткрытьФайл("C:\Exchange\data.xml");
    Пока Чтение.Прочитать() Цикл
        // Потоковая обработка узлов
    КонецЦикла;
Исключение
    НомерСтроки = Чтение.НомерСтроки;
    НомерПозиции = Чтение.НомерПозиции;
    ВызватьИсключение СтрШаблон("Сбой XML в строке %1, позиция %2: %3", НомерСтроки, НомерПозиции, ОписаниеОшибки());
Фиксировать
    Чтение.Закрыть();
КонецПопытки;

2. Очистка невалидных символов XML (XML 1.0 Invalid Characters)

Спецификация XML 1.0 запрещает большинство низкоуровневых управляющих символов. Выполните предварительную фильтрацию перед разбором:

Функция ОчиститьНедопустимыеСимволыXML(ИсходныйТекст)
    // Удаление спецсимволов кроме табуляции, перевода строки и возврата каретки
    Недопустимые = Новый Массив;
    Для Сч = 0 По 31 Цикл
        Если Сч <> 9 И Сч <> 10 И Сч <> 13 Тогда
            ИсходныйТекст = СтрЗаменить(ИсходныйТекст, Символ(Сч), "");
        КонецЕсли;
    КонецЦикла;
    Возврат ИсходныйТекст;
КонецФункции

3. Экранирование зарезервированных сущностей

Убедитесь, что текстовые значения узлов экранируют базовые сущности: & (&amp;), < (&lt;), > (&gt;), " (&quot;), ' (&apos;).

💡 Практика специалистов: При генерации XML через ЗаписьXML никогда не формируйте теги вручную через сложение строк. Всегда используйте методы ЗаписатьНачалоЭлемента, ЗаписатьТекстЭлемента и ЗаписатьКонецЭлемента — это гарантирует корректное экранирование и структуру.

Частые вопросы (FAQ)

Почему метод ЧтениеXML падает на больших файлах (>2 Гб)?

Если файл считывается целиком в память через строку, происходит переполнение стека. Используйте исключительно потоковое чтение через методы ЧтениеXML.ОткрытьФайл() и ЧтениеXML.Прочитать().

Как проверить валидность XML-документа по схеме XSD?

Используйте объект ФабрикаXDTO и метод ФабрикаXDTO.Создать(). Если документ нарушает ограничения схемы XSD, платформа вернет детальное описание несоответствия типов.

Что означает ошибка 'EntityRef: expecting ';''?

В тексте XML встретился символ амперсанда '&', который не является началом валидной сущности. Он должен быть заменен на '&amp;'.

Можно ли разобрать частично поврежденный XML файл?

Стандартный DOM-парсер 1С завершит работу с ошибкой. Поврежденные фрагменты можно восстановить только регулярными выражениями или сторонними утилитами восстановления текста.

Полезные материалы
Рекомендуем