Ошибка преобразования данных XDTO: Текст XML содержит недопустимый символ

28.03.13

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Преобразование строкового значения к допустимому для XML.
Типовое, нетиповое, RegExp.

Скачать исходный код

Наименование Файл Версия Размер
Заменить недопустимые символы XML (epf)
.epf 8,37Kb
240
.epf 8,37Kb 240 Скачать

СПРАВКА:

Аббревиатура XDTO (англ. XML Data Transfer Objects). XDTO является механизмом объектного моделирования данных, описываемых с помощью схемы XML.
1С: Механизм XDTO: http://v8.1c.ru/overview/xdto.htm

Аббревиатура XML (англ. eXtensible Markup Language). Расширяемый язык разметки.
1С: XML-сериализация: http://v8.1c.ru/overview/Term_000000318.htm


ИСТОЧНИК ОШИБОК:

Ситуации, когда возможно появление этой проблемы:
- Обмен в распределенной базе данных.
- Обновление конфигурации 1С.
- Импорт из внешних источников в 1С.

В частности, проблема обнаружилась при разработке обработки:
1С:Системный Администратор (WSH&WMI): //infostart.ru/public/172189/
при считывании данных из реестра Windows.


ПРОБЛЕМА:

{Форма.Управляемая.Форма(1000)}: Ошибка при вызове метода контекста (ПолучитьСписокНаСервере)
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'v':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/uobjects}v
по причине:
Текст XML содержит недопустимый символ в позиции 5 :
?{?{?U


ВАРИАНТЫ РЕШЕНИЯ:

&НаСервере
Перем RegExp;

&НаКлиенте
Процедура Старт(Команда)
    
    АнализируемыйТекст = "§ | §§ "" | a86;a87;♥♦♣♠•`88;`75;`89;a92;b34;b35;a88;`58;`68;U97;R52;¶§`44;V16;↑↓→←W35;↔`50;`60; !
    | ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
    | АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя
    | ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω
    | 0123456789
    | ~`!@#$%^&*(){}[]_-=+\|/*:;.<>?,№ !  
    | ' | © | ® | µ | «» | ¤¢€£¥ | § | ½¼¾ | ¹²³ | °±×÷؃§ µ";
    
    ТекстРезультат = СтартНаСервере(АнализируемыйТекст);
    
    Сообщить(""+АнализируемыйТекст+"
    |"+ТекстРезультат);
    
КонецПроцедуры

&НаСервере
Функция СтартНаСервере(Знач Текст)
    
    RegEXP_Инициализация();
    
    Если RegExp = Неопределено Тогда
        Value = ИсключитьНеЧитаемыеСимволыИзСтроки(Текст);                 // Вариант "НЕТИПОВОЙ 1С".
    Иначе
        Value = ИсключитьНеЧитаемыеСимволыИзСтроки_REGEXP(Текст);    // Вариант "НЕТИПОВОЙ RegExp".
    КонецЕсли;
    //Value = ЗаменитьНедопустимыеСимволыXML(Value);                           // Вариант "ТИПОВОЙ 1С".
    
    Возврат Value;
    
КонецФункции


ВАРИАНТ РЕШЕНИЯ "ТИПОВОЙ 1С":

// Функция (ТИПОВАЯ 1С), оставляющая в строке только допустимые для XML символы и цифры.
//
// Возвращаемое значение:
//    Строка.
//
&НаСервере
Функция ЗаменитьНедопустимыеСимволыXML(Знач Текст, СимволЗамены = " ")
    
    Позиция = НайтиНедопустимыеСимволыXML(Текст);
    Пока Позиция > 0 Цикл
        ТекущийСимвол = Сред(Текст, Позиция, 1);
        Если КодСимвола(ТекущийСимвол) = 21 Тогда    // Параграф.
            Текст = СтрЗаменить(Текст, ТекущийСимвол, Символ(167));
            Позиция = НайтиНедопустимыеСимволыXML(Текст);
            Продолжить;
        КонецЕсли;
        Текст = СтрЗаменить(Текст, ТекущийСимвол, СимволЗамены);
        Позиция = НайтиНедопустимыеСимволыXML(Текст);
    КонецЦикла;
    
    Возврат Текст;
    
КонецФункции

Достоинства:
- Максимально возможное сохранение содержимого исходной строки.
Исключаются только недопустимые для XML символы.
- Самая быстрая функция.
Недостатки:
- В итоговой строке могут присутствовать нечитаемье символы ("аброказаябры").


ВАРИАНТ РЕШЕНИЯ "НЕТИПОВОЙ RegExp":

// Функция (RegExp), инициализация.
//
// Возвращаемое значение:
//    Строка.
//
&НаСервере
Функция RegEXP_Инициализация()

    // Читаемые символы.
    // Латиница = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    // Кирилица = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    // Греческие = "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω";
    // Цифры = "0123456789";
    // СпециальныеСимволы = "~`!@#$%^&*(){}[]_-=+\|/*:;.<>?,№«» ";
    ДвойнаяКавычка = "^""";
    ОдинарнаяКавычка = "^'";
    АпострофОбратный = "^" + Символ(769);    // КодСимвола 769. Обратный для символа на букве "Ё".
    АвторскоеПраво = "^©";                             // КодСимвола 169. "Copyright" - латинская буква C в окружности - авторское право.
    Зарезервировано = "^®";                           // КодСимвола 174. "Registered" - латинская буква R в окружности - товарный знак.
    ТоварныйЗнак = "^™";                               // Верхний  индекс ТМ.
    ШирокоеТире = "^—";                                // КодСимвола 8212.
    ДенежныеСимволы = "^¤^¢^€^£^¥";         // Денежная единица, Цент, Евро, Фунт стерлингов, Иена или юань.
    ДробныеСимволы = "^½^¼^¾";                // Дроби: 1/2, 1/4, 3/4.
    СимволыСтепени = "^¹^²^³";                    // Степени: 1, 2, 3.
    ПрочиеСимволы = "^°^±^×^÷^Ø^ƒ^µ^"+Символ(167);    // Градус, Плюс/Минус, Знак умножения, Знак деления, Диаметр, Знак функции, Микро, Параграф.
    
    ЧитаемыеСимволы = "[";
    ЧитаемыеСимволы = ЧитаемыеСимволы + "^a-z^A-Z^а-я^А-Я^0-9^Ё^ё^Α-Ω^α-ω";    // Латиница + Кирилица + Цифры + Греческие.
    ЧитаемыеСимволы = ЧитаемыеСимволы + "^~^`^!^@^#^\$^%^\^^&^\*^\(^\)^\{^\}^\[^\]^_^\-^=^\+^\\^\|^/^\*^:^;^\.^^\?^,^№^«^»^ ";    // СпециальныеСимволы.
    ЧитаемыеСимволы = ЧитаемыеСимволы + ДвойнаяКавычка + ОдинарнаяКавычка + АпострофОбратный + АвторскоеПраво + Зарезервировано + ТоварныйЗнак;
    ЧитаемыеСимволы = ЧитаемыеСимволы + ШирокоеТире + ДенежныеСимволы + ДробныеСимволы + СимволыСтепени + ПрочиеСимволы;
    ЧитаемыеСимволы = ЧитаемыеСимволы + "]";
    
    ПолучитьCOMОбъектREGEXP(ЧитаемыеСимволы, Ложь, Истина, Ложь);
    
КонецФункции

// СПАСИБО Evg-Lylyk: //infostart.ru/public/64222/
//
&НаСервере
Процедура ПолучитьCOMОбъектREGEXP(Шаблон, ИскатьДоПервогоСовпадения = Истина, МногоСтрок = Истина, ИгнорироватьРегистр = Истина)

    Если RegExp = Неопределено Тогда   // Нужна инициализация.
        Попытка
            RegExp = Новый COMОбъект("VBScript.RegExp");    // Создаем объект для работы с регулярными выражениями.
        Исключение
            RegExp = Неопределено;
            Возврат;
        КонецПопытки;
    КонецЕсли;

    // Заполняем данные.
    RegExp.MultiLine = МногоСтрок;                              // Истина — текст многострочный, Ложь — одна строка.
    RegExp.Global = НЕ ИскатьДоПервогоСовпадения;   // Истина — поиск по всей строке, Ложь — до первого совпадения.
    RegExp.IgnoreCase = ИгнорироватьРегистр;           // Истина — игнорировать регистр строки при поиске.
    RegExp.Pattern = Шаблон;                                     // Шаблон (регулярное выражение).
    
КонецПроцедуры

// Функция (НЕТИПОВАЯ REGEXP), оставляющая в строке только читаемые(допустимые) для XML символы и цифры.
//
// Возвращаемое значение:
//    Строка.
//
&НаСервере
Функция ИсключитьНеЧитаемыеСимволыИзСтроки_REGEXP(Знач АнализируемыйТекст, ЗаменятьСимволы = Истина, СимволЗамены = " ")
    
    Если НЕ RegExp.Test(АнализируемыйТекст) Тогда
        Возврат АнализируемыйТекст;
    КонецЕсли;
    
    // Формирование результирующей строки.
    ИтоговаяСтрока = АнализируемыйТекст;
    
    РезультатАнализаСтроки = RegExp.Execute(АнализируемыйТекст);
    
    Для Каждого Результат ИЗ РезультатАнализаСтроки Цикл
        ТекущийСимвол = Результат.Value;
        Если КодСимвола(ТекущийСимвол) = 21 Тогда    // Параграф.
            ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, ТекущийСимвол, Символ(167));
            Продолжить;
        КонецЕсли;
        Если ЗаменятьСимволы Тогда
            // Замена символа в строке.
            ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, ТекущийСимвол, СимволЗамены);
        Иначе
            // Сокращение строки на символ.
            ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, ТекущийСимвол, "");
        КонецЕсли;
    КонецЦикла;
    
    Возврат ИтоговаяСтрока;
    
КонецФункции


Достоинства:
- Остаются только визуализируемые, понятно читаемые допустимые для XML символы.
- Сопоставима по скорости с функцией ЗаменитьНедопустимыеСимволыXML (~ 0.5%).
Недостатки:
- Отдельные, возможно, необходимые символы могут исключаться.
(необходимо дополнить переменную ЧитаемыеСимволы).


ВАРИАНТ РЕШЕНИЯ "НЕТИПОВОЙ 1С":

// Функция (НЕТИПОВАЯ 1С), оставляющая в строке только читаемые(допустимые) для XML символы и цифры.
//
// Возвращаемое значение:
//    Строка.
//
&НаСервере
Функция ИсключитьНеЧитаемыеСимволыИзСтроки(Знач АнализируемыйТекст, ЗаменятьСимволы = Истина, СимволЗамены = " ")

    // Читаемые символы.
    Латиница = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    Кирилица = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    Греческие = "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω";
    Цифры = "0123456789";
    СпециальныеСимволы = "~`!@#$%^&*(){}[]_-=+\|/*:;.<>?,№«» ";
    ДвойнаяКавычка = """";
    ОдинарнаяКавычка = "'";
    АпострофОбратный = "L9;";           // КодСимвола 769. Обратный для символа на букве "Ё".
    АвторскоеПраво = "©";             // КодСимвола 169. "Copyright" - латинская буква C в окружности - авторское право.
    Зарезервировано = "®";           // КодСимвола 174. "Registered" - латинская буква R в окружности - товарный знак.
    ТоварныйЗнак = "™";               // Верхний  индекс ТМ.
    ШирокоеТире = "—";                // КодСимвола 8212.
    ДенежныеСимволы = "¤¢€£¥";  // Денежная единица, Цент, Евро, Фунт стерлингов, Иена или юань.
    ДробныеСимволы = "½¼¾";    // Дроби: 1/2, 1/4, 3/4.
    СимволыСтепени = "¹²³";         // Степени: 1, 2, 3
    ПрочиеСимволы = "°±×÷؃µ"+Символ(167);    // Градус, Плюс/Минус, Знак умножения, Знак деления, Диаметр, Знак функции, Микро, Параграф.
    
    ЧитаемыеСимволы = Латиница + Кирилица + Греческие + Цифры + СпециальныеСимволы + ШирокоеТире
    + ДвойнаяКавычка + ОдинарнаяКавычка + АпострофОбратный + АвторскоеПраво + Зарезервировано + ТоварныйЗнак
    + ДенежныеСимволы + ДробныеСимволы + СимволыСтепени + ПрочиеСимволы;
    
    // Формирование результирующей строки.
    ИтоговаяСтрока = "";
    Для НомерСимвола = 1 ПО СтрДлина(АнализируемыйТекст) Цикл
        ТекущийСимвол = Сред(АнализируемыйТекст, НомерСимвола, 1);
        // Заменяемые символы. Системный набор значений: "Символы":
        Если ТекущийСимвол = Символы.ВК ИЛИ ТекущийСимвол = Символы.ВТаб ИЛИ ТекущийСимвол = Символы.НПП
            ИЛИ ТекущийСимвол = Символы.ПС ИЛИ ТекущийСимвол = Символы.ПФ ИЛИ ТекущийСимвол = Символы.Таб Тогда
            ТекущийСимвол = СимволЗамены;
        КонецЕсли;
        Если КодСимвола(ТекущийСимвол) = 21 Тогда    // Параграф.
            ТекущийСимвол = Символ(167);
        КонецЕсли;
        Если Найти(ЧитаемыеСимволы, ТекущийСимвол) > 0 Тогда
            ИтоговаяСтрока = ИтоговаяСтрока + ТекущийСимвол;
        Иначе
            Если ЗаменятьСимволы Тогда
                ИтоговаяСтрока = ИтоговаяСтрока + СимволЗамены;
            Иначе
                // Сокращение строки на символ.
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    Возврат ИтоговаяСтрока;
    
КонецФункции

Достоинства:
- Остаются только визуализируемые, понятно читаемые допустимые для XML символы.
Недостатки:
- Отдельные, возможно, необходимые символы могут исключаться.
(необходимо дополнить переменную ЧитаемыеСимволы).
- Медленнее предыдущих на 30 %.

В целях недопущения искажений текста в ссылках на скачивание находится обработка с текстом функций.

МА! С уважением к сообществу МА!


См. также

SALE! 15%

[ED3] Обмен для 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    135462    729    291    

391

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

28000 руб.

15.12.2021    20541    136    38    

93

SALE! 10%

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

38500 34650 руб.

15.04.2019    68760    179    139    

111

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

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

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

28000 руб.

23.07.2020    46691    199    64    

162

SALE! 10%

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

48278 43450 руб.

03.12.2020    34373    81    58    

78

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9295    9    8    

11

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 09.04.2024, версия 9.9 - 9.10)

14400 руб.

20.11.2015    151283    366    376    

502

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки

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

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос в продаже с 2015г., и мы постоянно работаем над его развитием. Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    190662    270    238    

269
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. StepByStep 3670 27.03.13 10:53 Сейчас в теме
(1) CagoBHuK,
На мой взгляд - воспользоваться типовым вариантом предложенным в статье.
4. CagoBHuK 32 27.03.13 12:46 Сейчас в теме
(2) Видимо, Вы не работали с большими объемами данных. При файлах более 100 мегабайт Ваша обработка встанет колом.
5. StepByStep 3670 27.03.13 13:04 Сейчас в теме
(4) CagoBHuK,
Да. Если база большая и "шерстить" все - это медленно, но верно.
Издержки посимвольного обхода.
6. CagoBHuK 32 27.03.13 13:05 Сейчас в теме
(5) А с каких пор регулярные выражения - это неверно?
7. StepByStep 3670 27.03.13 13:08 Сейчас в теме
(6) CagoBHuK,
Регулярные выражения не рассматривал, надо попробовать.
8. StepByStep 3670 27.03.13 14:56 Сейчас в теме
(6) CagoBHuK,
СПАСИБО. ТОЖЕ ВЕРНО!
9. CagoBHuK 32 27.03.13 15:00 Сейчас в теме
(8) Не за что. Приятно, когда люди прислушиваются к твоим словам.
10. StepByStep 3670 28.03.13 09:55 Сейчас в теме
(9) CagoBHuK,
Еще раз спасибо. Добавил функцию на RegExp.
3. Yashazz 4722 27.03.13 12:34 Сейчас в теме
(1) Соглашусь. Для больших объёмов регулярные выражения быстрее будут, чем посимвольный обход.
11. ITEkb 08.04.13 14:53 Сейчас в теме
У меня такие ошибки выпадали после импорта из 1С 7.7
Как правило, в процессе работы вываливались конкретные справочники и элементы, в которых ошибка.
И вываливалось при поиске или отборах. Если тупо колесиком до нужного пункта докрутить, то не вываливалось.
Открывал карточку, видел в поле среди букв какой-нибудь спецсимвол. Ручками исправлял, и удалял файл индексации.
После этого вопрос решался.
Тестирования и прочие стандартные методы нивкакую ошибки не находили.
StepByStep; +1 Ответить
13. StepByStep 3670 09.04.13 20:04 Сейчас в теме
(11) OrsoBear,
СПАСИБО.
Да, в семерке при экспорте-импорте из ТиС в Бухгалтерию неоднократно встречалась проблема с недопустимыми символами XML. И тоже ручками исправлял.
На 8-ке решил, что надо по-другому ...
12. ArikiteSun 08.04.13 15:28 Сейчас в теме
Спабсибо! Полезная информация!
14. kiruha 388 01.08.13 10:08 Сейчас в теме
Вопрос - для вебсервисов, если передаются наименования - нужно ли их проверять на недопустимые символы ?
И как со знаками "<", ">" ?
15. StepByStep 3670 02.08.13 10:07 Сейчас в теме
(14) kiruha,

По опыту работы с 1С 7.7, а теперь и 1С 8.Х, я пришел к такому выводу:
Все, что приходит из внешнего источника данных в рабочую базу обязательно должно проходить проверку.

В данном случае речь идет о чистке строковых значений для реквизитов 1С.

Символы "<" (меньше) или ">" (больше) - в строковом реквизите это вполне допустимый символ, если это не запрещено в конкретной конфигурации.
16. kiruha 388 02.08.13 12:26 Сейчас в теме
Спасибо большое - буду проверять.
Знак ">" в xml знак тэга. Я так понял - не влияет при экспорте ?
18. kraynev-navi 648 18.12.13 17:08 Сейчас в теме
(16) kiruha, вроде как нормально конвертирует, ошибок нет
Данные реквизита:
выапвыапвы<st yle>[]{}

Сообщение обмена:
<ДругоеНазвание>выапвыапвы<style>[]{}</ДругоеНазвание>
StepByStep; +1 Ответить
17. kraynev-navi 648 18.12.13 17:04 Сейчас в теме
"Если звезды зажигают, значит это кому-нибудь нужно"
А что если недопустимые символы очень даже нужны? А мы их просто берем и удаляем...

Столкнулись с ситуацией при обмене. Строковый реквизит стандартным средством СоздатьЗаписьСообщения выдает ошибку из-за символов с кодом 01. В базе таковых 2000+ записей. Можно, конечно, все это просмотреть и принять решение по каждому. Но дальше же снова будут появляться такие документы. Нет уверенности, что удаление будет показано всем.

Проблемы можно было бы избежать, кодируй 1С значение банальным base64. Но нет, версия 8.2 лепит как есть.
Кто и как ходил путем "неудаления"?
19. nadinvital 19.05.14 08:28 Сейчас в теме
Спасибо,очень полезная штука, а главное актуальная
20. dima_kystym 27.09.14 14:56 Сейчас в теме
что то у меня не запускается эта обработка, под тонким вот такое сообщаение и все., а под толстым вообще не открывается. что может быть. Управление торговлей, редакция 11.1 (11.1.2.6)
§ | §§ " | ☺☻♥♦♣♠•◘○◙♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщ­ъыьэюя
ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω
0123456789
~`!@#$%^&*(){}[]_-=+\|/*:;.<>?,№ !
' | © | ® | µ | «» | ¤¢€£¥ | § | ½¼¾ | ¹²³ | °±×÷؃§ µ
§ | §§ " | § ! ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщ­ъыьэюя ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω 0123456789 ~`!@#$%^&*(){}[]_-=+\|/*:;.<>?,№ ! ' | © | ® | µ | «» | ¤¢€£¥ | § | ½¼¾ | ¹²³ | °±×÷؃§ µ
21. StepByStep 3670 25.11.14 23:29 Сейчас в теме
(20) dima_kystym,
Пример практического использования можно увидеть здесь: http://infostart.ru/public/120961/
22. a_E 27.11.14 16:07 Сейчас в теме
Спасибо за код помогло.
23. igo1 267 21.08.15 12:30 Сейчас в теме
24. kote 536 02.06.18 20:33 Сейчас в теме
25. SlaSla 29 17.12.18 08:25 Сейчас в теме
Подскажите по 7.7 есть аналогичный вариант?
26. adhocprog 1139 28.05.20 13:07 Сейчас в теме
Спасибо, помогло!
Воспользовался первым вариантом.
27. tvssm 19.02.21 10:07 Сейчас в теме
Мне очень понравилась статья. Хороший, понятный код
Оставьте свое сообщение