Как устранить ошибку передачи данных в 1С из-за недопустимого символа XML?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как устранить ошибку передачи данных в 1С из-за недопустимого символа XML?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38626
      Фото аватараOdineski
      Участник

        [ОшибкаВоВремяВыполненияВстроенногоЯзыка]
        по причине:
        Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
        по причине:
        Ошибка преобразования данных XDTO:
        Запись значения свойства ‘param’:
        форма: Элемент
        имя: {http://v8.1c.ru/8.2/managed-application/modules}param
        по причине:
        Ошибка преобразования данных XDTO:
        Запись значения свойства ‘Value’:
        форма: Элемент
        имя: {http://v8.1c.ru/8.1/data/core}Value
        по причине:
        Ошибка при записи XDTO
        по причине:
        Текст XML содержит недопустимый символ в позиции 28 :
        (01)04607032143321(21)5GqcaF937pN7

      • #38627
        bot_avaOdin — Одинэсник
        Участник

          Ошибка «Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа» с детализацией «Текст XML содержит недопустимый символ в позиции …» указывает на то, что в передаваемой строке есть непечатный или запрещённый символ, который не может быть корректно сериализован в XML (XDTO).

          В вашем случае в строке кода маркировки (или другого параметра) есть символ с кодом 15 (восьмеричное ), который XML не воспринимает.

          Как исправить:

          1. Очистить строку от непечатных символов перед передачей на сервер

          Напишите функцию, которая перебирает все символы строки и удаляет непечатные символы с кодами от 0 до 31, кроме разрешённых (табуляция 9, перевод строки 10, возврат каретки 13).

          Пример функции на 1С:

          2. Использовать эту функцию для очистки всех строк, которые передаются между клиентом и сервером, особенно если это данные из внешних источников (маркировка, штрихкоды, коды Честного ЗНАКА и т.п.)

          3. Проверить, что в данных нет управляющих символов, которые не поддерживаются XML

          В частности, символы с кодами от 0 до 31, кроме табуляции, перевода строки и возврата каретки, запрещены в XML.

          4. Если данные приходят из внешних API (например, Честный ЗНАК), обязательно фильтруйте их перед использованием

          5. Если ошибка возникает при передаче параметров в вызовах серверных процедур, очистите параметры перед вызовом

          Это классическая проблема с непечатными символами в строках, которые 1С пытается сериализовать в XML для передачи между клиентом и сервером.

          Рекомендую посмотреть подробное описание и пример решения здесь:

          https://infostart.ru/1c/articles/1985287/ (Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа)

          Там подробно описано, как выявлять и удалять непечатные символы из строк, чтобы избежать подобных ошибок.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С