Удалить недопустимые символы 1с
Ошибка при записи изменений при обмене: Ошибка при вызове метода контекста (ЗаписатьИзменения): Текст XML содержит недопустимый символ в позиции .
Обнаруживал эту ошибку 2 раза.
а) Один раз когда производился обмен в распределенной базе данных.
б) Другой раз когда производилось обновление конфигурации 1С: Бухгалтерия предприятия с версии 1.6 до версии 2.0.
В обоих случаях используется выгрузка-загрузка данных через файлый в формате XML.
Решается так:
Для случая б)
Новая база данных Бухгалтерия 2.0 обращается к старой базе данных версии 1.6, запуская программу 1С: Предприятие и инициируя выгрузку данных с помощью обработки УниверсальныйОбменДаннымиXML.
В этой обработке в последних версиях есть возможность поставить галочку, чтобы обработка сама боролась с ситуацией "недопустимые символы XML". По умолчанию (и при вызове этой обработки "из вне", как в описываемом случае) данная галочка не стоит.
Не тратя времени - просто исправил обработку УниверсальныйОбменXML в исходной базе данных конфигурации 1.6 так, установив параметр, соответствующий галочке, чтобы по умолчанию обработка сама боролась с ситуацией "недопустимых символов".
То есть корень проблемы мой способ не решает, просто я заставил прогрмму 1С: Предприятие игнорировать небольшой косячный участок данных, загружая то, что можно загрузить.
Все равно после загрузки в базу данных конфигурации Бухгалтерия 2.0 проверять все данные нужно.
Решение для ситуации а)
Распределенная база данных
Та же база данных (да и проблема наверняка в одних и тех же документах) - 1C V8, Бухгалтерия Предприятия 2.0, то же было в 1.6, причем и на платформе 1C V8.1 и на платформе 1C V8.2.
После неудачной выгрузки в каталоге временных файлов Windows нашел недописанный файл XML, который называется в моем случае ""C:\Documents and Settings\ИмяПользователяWindows\Local Settings\Temp\a\Полный\ОбменСФилиалом\Message_АБВ_ЭЮЯ.xml""
В самом конце этого файла обнаружил, что не завершена запись для документа "СписаниеСРасчетногоСчета", номер и дата этого документа в XML уже были записаны до возникновения ошибки, потому найти документ в базе данных не сложно.
Написал обработку, которая с помощью "ПланыОбмена.УдалитьРегистрациюИзменений(ВыбУдаленныйУзел, ВыбКосячныйДокумент);" исключает из выгрузки битый документ.
Повторил выгрузку, обнаружил ту же ошибку на другом документе того же вида с той же операцией - "Списание с расчетного счета: Расчеты по кредитам и займам".
Возникли подозрения, что данные банковские документ косячат потому как загружены автоматически системой "Клиент-банк".
После того, как все косячные документы были исключены из обмена данными с помощью вышеописанной операции "УдалитьРегистрациюИзменений" выгрузка прошла успешно.
Поскольку заказчику было важно, что все документы уезжали в другую базу данных продолжил поиск проблемы.
После того, как заново провел один косячный документ он опять застопорил обмен данными.
Посмотрев внимательнее куций файл XML, созданный во временном каталоге увидел, что застопорился на записи табличной части "РеквизитыКонтрагента" на реквизите "Значение".
В данной статье будет рассмотрено, как происходит замена и удаление недопустимых символов в системе 1С, если мы находим недопустимые символы в имени файла и когда недопустимые символы содержит XML.
1. Недопустимые символы в имени файла
Когда имя некоторого файла содержит недопустимые символы, возникает потребность замены этих символов. Для произведения замены нужно оговорить, какой синтаксис имеет функция замены при ошибке недопустимых символов в имени файла. Он представлен на скриншоте со строкой кода далее:
Рис.1 Замена недопустимых символов с имени файла
Также у данной функции есть первичные параметры:
· «ИмяФайла» – параметр со строкой, которая содержит наименование файла;
· «НаЧтоМенять» – параметр со строкой, на которую будут заменены недопустимые символы в названии файла.
Результат работы данной функции – это значение, которое будет возвращаться. В нашем случае это строка, которая содержит новое имя файла, после преобразований.
Рассмотрим пример вызова данной функции:
Рис. 2 функция замены при ошибке недопустимых символов
Также очень важным аспектом является доступность данной функции. В системе 1С функцию можно использовать на сервере, на тонком клиенте, на толстом клиенте и на внешнем соединении.
2. Недопустимые символы в XML
Рассмотрим, как происходит удаление если XML содержит недопустимые символы.
Чтобы выполнить данную процедуру, аналогично предыдущему пункту используем специальную функцию, которая продемонстрирована на строке ниже:
Рис. 3 Функция для удаления недопустимых символов XML
Далее следует оговорить, какие параметры поддерживаются в данной функции. Параметр в данном случае только один – это «Текст-Строка». Это строка, внутри которой требуется провести удаление всех недопустимых символов.
Итогом работы этой функции будет значение, которое возвращается в виде строки, полученной в итоге удаления всех недопустимых символов из XML строки.
Рассмотрим на примере общего вида, который представлен ниже, как будет выглядеть вызов функции по удалению, когда текст XML содержит недопустимые символы:
Рис. 4 Вызов функции для удаления недопустимых символов XML
Использование данной функции доступно для сервера, на тонком и толстом клиентах и для внешнего соединения.
Рассмотрим использование функции «НайтиНедопустимыеСимволыXML» на примере. Данная функция не удаляет, а только производит поиск по символам в строке, которые являются недопустимыми в XML строке:
Рис. 5 Удаление недопустимых символов XML
Чтобы сделать поиск по недопустимым символам более быстрым, попытаемся определить позицию недопустимого символа в тексте XML строки. Для этого в середине цикла дадим функции первичные позиции из поиска. Пример данного применения показан на строчке кода ниже:
Рис. 6 Поиск недопустимого символа в тексте
В данной статье были рассмотрены функции, которые помогают определять и удалять, либо заменять, недопустимые символы в имени файла и в XML строке.
Для решения проблемы поиска этой самой ошибки вида: "Ошибка при вызове метода контекста(ЗаписатьИзменения): Текст XML содержит недопустимые символ в позиции . " была написана эта простенькая обработка. Может кому-то пригодится :)
Как работает обработка?
Обработка поиска недопустимых символов узла обменаСпециальные предложения
Просмотры 20518
Загрузки 101
Рейтинг 8
Создание 29.04.14 10:04
Обновление 29.04.14 10:04
№ Публикации 275731
Конфигурация Не имеет значения
Операционная система Windows
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
"Словом можно убить, словом можно спасти, словом можно полки за собой повести" Онлайн-тренажер "Боевая риторика. Ложь и давление в переговорах" с 29 ноября по 27 декабря.См. также
Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON, Такси+ОФ) Промо
Простой перенос через JSON данных между двумя базами 1С (документов, справочников, ПВХ, ПВР, счетов). Аналогична произвольной выгрузке в типовой "Выгрузка/загрузка XML", но может использоваться для отличающихся конфигураций. Подходит для любых пар баз с любым интерфейсом (управляемый + обычный). Без настроек. Не требует идентичности конфигураций и платформ. При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.
1 стартмани
22.10.2014 225071 4383 ekaruk 184
У вас "Ошибка преобразования данных XML" или "Error transforming XML data"? Решение
Рассмотрим варианты возникновения данной ошибки и рассмотрим способ решения, одной из причин.
2 стартмани
01.11.2021 871 0 markers 0
Восстановление РИБа, ошибки РИБ на управляемых формах, создание начального образа с файлами
Ошибка при вызове метода контекста (ПрочитатьИзменения): Данные принимаются от узла с другим набором расширений, меняющих структуру данных. Необходимо произвести перенос расширений конфигурации в узел. При выгрузки первоначального образа вылетает по не понятным причинам.
1 стартмани
22.10.2021 665 0 user1479207 0
Восстановление 1С РИБ (распределенная база) при проблемах обмена конфигураций и расширений
Работая с 1С РИБами в разных конфигурациях: типовых, переписанных, отраслевых, доработанных, с расширениями и пр. Неоднократно сталкивался с различными проблемами, связанными с обменом в распределенных узлах. Например, некорректно проходит обмен, не принимается обновления конфигурации, после обновления крашится база на расширении или на объекте конфигурации, либо просто перестает запускать в режим предприятия по какой то причине. На самом деле проблемы с распределенной базой возникают довольно часто, в данной статье рассмотрим самые основные, с которыми приходилось сталкиваться. Описанные методы никогда не подводили и всегда работали, что бы с базой ни случилось. Делюсь опытом, кому-то будет спасательным кругом.
1 стартмани
23.09.2021 990 9 ClickUp 4
Соответствия объектов обмена Промо
Обработка позволяет проверять, исправлять ошибки, добавлять и удалять соответствия объектов в обменах данными между конфигурациями на основе «Комплексной автоматизации 1.1» или похожими конфигурациям. Подходит для обменов с использованием регистра сведений «СоответствиеОбъектовДляОбмена».
у меня есть узлы, которые содержат строки, как показано ниже:
это недопустимо из-за &
Я не могу обернуть эти строки в CDATA, поскольку они должны быть такими, какие они есть. Я попытался найти в интернете список символов, которые нельзя поместить в узлы XML, не находясь в Разделы CDATA.
может ли кто-нибудь указать мне в направлении одного или предоставить мне список незаконных символов?
только незаконные символы & , < и > (а также " или ' в атрибутах).
они сбежали, используя сущности XML в этом случае, если вы хотите & на & .
на самом деле, хотя, вы должны использовать инструмент или библиотеку, которая пишет XML для вас и абстрагирует такого рода вещи для вас, так что вам не придется беспокоиться об этом.
список допустимых символов в спецификация XML:
хорошо, давайте разделим вопрос (1) символов, которые не являются допустимыми вообще в любом XML-документе, и (2) символов, которые должны быть экранированы:
ответ, предоставленный @dolmen недопустимые символы в XML по-прежнему действителен, но должен быть обновлен спецификацией XML 1.1.
символы, описанные здесь, - это все символы, которые могут быть вставлены в XML документ.
1.1. В XML 1.0
глобальный список разрешенных символов:
1.2. в XML 1.1
глобальный список разрешенных символов:
эта редакция рекомендации XML расширила разрешенные символы, поэтому разрешены управляющие символы, и учитывает новую редакцию стандарт Unicode, но эти по-прежнему не разрешены:NUL (x00), xFFFE, xFFFF.
однако использование управляющих символов и неопределенного символа Unicode не рекомендуется.
также можно заметить, что все синтаксические анализаторы не всегда учитывают это, и XML-документы с контрольными символами могут быть отклонены.
на < должна начинаться с < entity, так как предполагается, что это начало тега.
на & должна начинаться с & сущность, так как предполагается, что это начало ссылки на сущность
на > следует избежать с > сущности. Это не обязательно - это зависит от контекста, - но настоятельно рекомендуется избегать его.
на ' следует избежать с ' entity -- обязательно в атрибутах, определенных в одинарных кавычках, но настоятельно рекомендуется всегда избегать его.
на " следует избежать с " entity -- обязательно в атрибутах, определенных в двойных кавычках, но настоятельно рекомендуется всегда избегать его.
Читайте также: