Содержание:
1. XML – расширяемый язык разметки
2. Устранение Ошибки разбора XML в 1С
3. «Обход» Ошибки разбора XML в 1С
1. XML – расширяемый язык разметки
В данной статье речь пойдёт о причинах возникновения фатальной ошибки «Ошибка разбора XML» и способах устранения данной неполадки. Также будет дана инструкция не по устранению, но «обходу» ошибки, то есть действиям на опережение.
XML (с английского – extensible markup language – расширяемый язык разметки) – это язык разметки, который рекомендует Консорциум Всемирной паутины. Обычно язык разметки XML служит для описания документации, соответствующего типа, а также описывает действия соответствующих процессоров. Расширяемый язык разметки имеет довольно простой синтаксис, поэтому используется по всему миру, чтобы создавать и обрабатывать документацию программным способом. Он создавался именно для использования в Интернете. XML назвали именно расширяемым языком разметки, так как в нём нет фиксации разметки, которая содержится внутри документа, а именно: программист может создавать любую разметку, а ограничения будут встречаться лишь в синтаксисе.
2. Устранение Ошибки разбора XML в 1С
«Ошибка разбора XML» возникает исключительно в тонком клиенте 1С. Также стоит отметить, что «Ошибка разбора XML» также довольна схожа с ошибкой по формату потока, которая возникает в толстом клиенте. Обычно в 1С «Ошибка разбора XML» возникает по причине наличия кэша метаданных. И если очистить кэш, то ошибка будет устранена. Выглядит окно с ошибкой, а также окно с комментариями от технической поддержки следующим образом:
Рис. 1 Окно Ошибки разбора XML в 1С
XML данные читаются по потокам, так что в каждый из моментов времени объект «сосредоточен» в некотором узле XML. Из-за этого также может возникать фатальная ошибка «Ошибка разбора XML». Для того чтобы её устранить, можно вызвать функцию «ИсключениеЧтенияXml», как показано на скриншоте примера ниже:
Рис. 2 Вызов функции ИсключениеЧтенияXML для устранения Ошибки разбора XML в 1С
3. «Обход» Ошибки разбора XML в 1С
Данные два способа (очистка кэша метаданных и функция «ИсключениеЧтенияXml») – не все возможные варианты устранения ошибки разбора XML. Далее рассмотрим нестандартный подход, который позволит избежать ошибки еще до её возникновения.
Для наглядности будем работать в конфигурации 1С:Бухгалтерия предприятия, одной из наиболее распространенных программ фирмы 1С. У многих людей, которые пользуются программой 1С:Отчётность появляются неполадки при попытках открыть данные/файлы от налоговой. Чтобы открыть такой файл повторяем следующие действия:
· Переходим по пути: «Настройки 1С:Отчётности → Журнал обмена с контролирующими органами», как показано на скриншоте ниже:
Рис. 3 Настройка 1С Отчетности
· Далее кликаем на «Запросы» и выделяем ту выписку, которую не было возможности открыть из-за ошибки, как продемонстрировано на скриншоте ниже:
Рис. 4 Выбор выписки с Ошибкой разбора XML в 1С
· Обращаем внимание на стадию отправки, которая располагается внизу этого сообщения, и кликаем два раза на зелёный круг:
Рис. 5 Стадия отправки документа с Ошибкой разбора XML в 1С
· Появляется транспортное сообщение, в нём кликаем на «Выгрузить» и выбираем папку, куда необходимо провести выгрузку, после чего сохраняем данный файл. Пробуем открыть его, при помощи любого из графических редакторов, который может поддерживать формат PDF, как показано на скриншоте ниже:
Рис. 6 Результат обхода Ошибки разбора XML в 1С
· Всё успешно открылось, а ошибка даже не успела возникнуть.
Специалист компании «Кодерлайн»
Айдар Фархутдинов
07.05.2019
Способ «обхода» ошибки, «Разбора XML- [1,1]» в 1с Отчетности. На примере конфигурации «Бухгалтерия предприятия» (ред. 3.0)
На данной момент, у пользователей 1с Отчетности, возникают проблемы, при открытие файлов из налоговой. Для того чтобы открыть файл нужно сделать следующее:
Рис.1-Ошибка
1.Для того чтобы, «обойти» данную ошибку, заходим:
Настройки 1c Отчетности – Журнал обмена с контролирующими органами
Рис. 2- Отчетность
2.После того, как «зашли» во вкладку « Журнал обмена с контролирующими органами», нажимаем : Запросы — выделяем справку или выписку которая не открывается (это делается одним нажатием левой кнопкой мыши)
Рис. 3- Журнал обмена
3.Находим внизу, стадию отправки, данного транспортного сообщения и нажимаем на предпоследний зеленый кружок, двойным щелчком «мыши».
Рис. 4 -Стадия отправки
4. Выходит транспортное сообщение, в котором нажимаем, «выгрузить», после чего выбираете папку, куда хотите выгрузить — сохраняете файл и открываете его через любой графический редактор, который сможет открыть pdf формат.
Рис. 5 -Выгрузка
Автор статьи
Сафаров Ильдар. Специалист Линии консультаций
Возврат к списку
Фатальная ошибка: Extra content of the end of the document. Ошибка разбора XML: — [1,1].
Такую фигню выдает 1с при обмене через веб-сервис. Вот текст XML-ки,, на которую он ругается:
<?xml version=»1.0″ encoding=»UTF-8″?>
<v8msg:Message xmlns:v8msg=»http://v8.1c.ru/messages»>;
<v8msg:Header>
<v8msg:ExchangePlan>кпкОбменПолный</v8msg:ExchangePlan>
<v8msg:To>001</v8msg:To>
<v8msg:From>TP4</v8msg:From>
<v8msg:MessageNo>7</v8msg:MessageNo>
<v8msg:ReceivedNo>24</v8msg:ReceivedNo>
</v8msg:Header>
<v8msg:Body xmlns:v8=»http://v8.1c.ru/data»; xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»>;
<DocumentObject.кпкЗаказ>
<Ref>a355466a-3971-fb19-01fc-a52cb9c46780</Ref>
<DeletionMark>false</DeletionMark>
<Date>2014-02-11T15:23:32</Date>
<Number>Ц-КМ0000617</Number>
<Posted>true</Posted>
<кпкОрганизация>06b8615c-e2c0-11e2-85e6-0015174c80a1</кпкОрганизация>
<кпкКонтрагент>331ed844-ee79-11e2-a746-0015174c80a1</кпкКонтрагент>
<кпкТипЦен>dc06b125-e2fd-11e2-85e6-0015174c80a1</кпкТипЦен>
<Автор>06b86163-e2c0-11e2-85e6-0015174c80a1</Автор>
<СуммаДокумента>2160</СуммаДокумента>
<Комментарий/>
<Синхронизирован>false</Синхронизирован>
<Товары>
<Row>
<кпкНоменклатура>516f4255-ee74-11e2-a746-0015174c80a1</кпкНоменклатура>
<Количество>12</Количество>
<Цена>180</Цена>
<Сумма>2160</Сумма>
</Row>
</Товары>
</DocumentObject.кпкЗаказ>
</v8msg:Body>
</v8msg:Message>
Вроде все правильно с точки зрения протокола XML… Но не работает обмен и все тут.
22.12.16 — 13:00
Платформа сервера 1С 8.3.7.1917
Платформа мобильных: 8.3.5.109
Есть самописные обмены между базами и мобильными устройствами (стандартный handshake xml-обмен, описан тут: http://fs.kursypo1c.ru/free/FM-MobilePlatform/Module03/mobile-apps-fm-theory-module03.pdf). Обмены в целом работают стабильно, но при попытке передчи данных с мобильного на сервер возникает «Ошибка разбора XML [1,1] — Extra content at the end of the document». Т.е. какого-то фёдора на сервер попадет пустая XML, чего в принципе быть не должно (даже в пустом пакете будет минимум пару тегов). Если бывают проблемы со связью (нет инета), то и соединение с сервером (создание прокси) вовсе не происходит. А так прокси создаётся нормально, ошибка возникает уже при передаче данных серверу.
Кто что думает? Где искать причину — на мобильных устройствах или на сервере? Такое впечатление, что после установки соединения потом рубается связь.
ЗЫ: Если нужны куски кода, выложу.
1 — 22.12.16 — 13:14
Платформы менять пробовал?
2 — 22.12.16 — 13:21
(1) Только мобильные платформы меняли (8.3.6) — ситуация осталась. Серверную пока не трогали. Есть вероятность, что это сервер так куралесит?
3 — 22.12.16 — 13:28
(2) может, 8.3.7 помниться глючная была
4 — 22.12.16 — 13:54
были такие ошибки. попробуй убрать в обмене все объекты и последовательно найди тот объект который мешает обмену. возможно разная структура объекта проверь это.
5 — 22.12.16 — 14:02
(4) С объектами все гуд, при разной структуре ругнётся на середину файла, а тут он со старта пустой [1,1]. Да и при разной структуре у нас проверка стоит, сразу ловится реквизит и объект которые не совпадают.
(3) Какую платформу посоветуете ставить, какая наиболее стабильная?
6 — 22.12.16 — 14:09
(0) Такая ошибка часто возникает, если вместо XML приходит HTML (ошибки авторизации, права и т.д.). Дело не в платформе.
7 — 22.12.16 — 14:11
Пример того что может прийти вместо XML
<html>
<head><title> A server error occurred. </title></head>
<h1> Аутентификация пользователя не выполнена. </h1>
<hr/>
An error occurred processing this request.</html>
8 — 22.12.16 — 14:33
(6) так вроде у него обмен падает не всегда. Как с одной парой логинпароль может иногда не пускать?
9 — 22.12.16 — 14:49
(8) авторизация это одна из возможных причин, нужно смотреть что в таких случаях приходит
10 — 22.12.16 — 15:07
Код в мобильном приложении:
Функция ВыполнитьОбменДанными(ТекстОшибки = «») Экспорт
Прокси = ПолучитьПрокси();
Если Прокси = Неопределено Тогда
ТекстОшибки = «Не удалось установить соединение.»;
Возврат Ложь;
КонецЕсли;
…….
// Отправляем данные
ДанныеОбмена = ОбменСервер.СформироватьПакетОбмена(ЦентральныйУзел, Прокси); <——- Здесь пакет ХML успешно формируется
Прокси.ЗаписатьДанные(ИмяУстройства, ДанныеОбмена); <——— ВОТ ЗДЕСЬ НА СЕРВЕРЕ ПРОИСХОДИТ ИСКЛЮЧЕНИЕ
// Принимаем данные
ДанныеОбмена = Прокси.ПолучитьДанные(ИмяУстройства);
ОбменСервер.ПринятьПакетОбмена(ЦентральныйУзел, ДанныеОбмена);
// Отправляем еще раз для снятия регистрации в ЦБ
ДанныеОбмена = ОбменСервер.СформироватьПакетОбмена(ЦентральныйУзел,
Прокси.ЗаписатьДанные(ИмяУстройства, ДанныеОбмена);
Возврат Истина;
КонецФункции
11 — 22.12.16 — 15:14
Код веб-сервиса ЗаписатьДанные() на стороне сервера:
Функция ЗаписатьДанные(ИмяУстройства, ДанныеМобильногоПриложения)
УзелОбмена = ПланыОбмена.МобильноеПриложениеКонтрольКультур.НайтиПоКоду(ИмяУстройства);
Если УзелОбмена.Пустая() Тогда
ТекстИсключения = НСтр(«ru=’Неизвестное устройство: ‘») + ИмяУстройства;
ВызватьИсключение(ТекстИсключения);
КонецЕсли;
СообщениеОбмена = ДанныеМобильногоПриложения.Получить();
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(СообщениеОбмена);
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
//^^^^^ ВОТ НА ЭТОМ УЧАСТКЕ ВЫЛЕТАЕТ, ошибка разбора XML [1,1]
//…………
//…………
//…………
КонецФункции
12 — 22.12.16 — 15:15
(11) PS: параметр ДанныеМобильногоПриложения имет тип ХранилищеЗначения
13 — 22.12.16 — 15:19
Получается, что на стороне мобильного успешно формируется XML, а на стороне сервера уже почему-то пустая строка. Как такое может быть?
14 — 22.12.16 — 16:59
(13) нужно смотреть что на самом деле получает сервер (записать СообщениеОбмена в файл, использовать отладку, записать в виде строки в любое хранилище).
15 — 22.12.16 — 18:47
версия стационарной какая? и она скульная?
16 — 22.12.16 — 18:56
(15) > Платформа сервера 1С 8.3.7.1917
Да, она SQL
17 — 22.12.16 — 19:02
угу, уходи от скуля или обновись. Это баг стационарный я с 1С вместе его ловил долго. Они даже воспроизвести его не могли. Короче, весело было.
В 8.3.8 вроде уже исправили его.
А баг проявлялся только на скуле, изредка, при определнных размерах пакета, от 100кб до 200кб, вроде, не помню уже.
dave2000
18 — 22.12.16 — 21:47
(17) Спасибо, попробую на тестовый последнюю 8.3.8.2167 поставить, погоняем, посмотрим
16.05.2017
Борьба с ошибкой
Extra content at the end of the document,
а также с ошибкой 500 при попытке открытия страницы с ws — описанием в браузере.
Проблема : при попытке обращения к веб сервису из 1с возникает ошибка :
Ошибка разбора XML: — [1,1]
Фатальная ошибка:
Extra content at the end of the document
При попытке открытия страницы с ws — описанием в браузере — ошибка 500
Решение.
1.Запускаем диспетчер IIS.
2.Находим в пулах приложений приложение DefaultAppPool. Правая кнопка мыши — дополнительные параметры — Разрешены 32 разрядные приложения — поставитьTrue
3.Находим в ветке «Сайты» нужный нам каталог, 2 раза щелкаем мышкой на него, в правом окне запускаем «Фильтрация запросов». Удаляем все запрещения на расширение (либо удалить элемент, либо поставить Разрешено=true)
4. Перезапускаем IIS
Ошибка разбора XML: -[1,1]
Фатальная ошибка:
Document is empty
Решение:
Заполните адреса сотрудников, используя КЛАДР/ФИАС.