Ошибка преобразования данных 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 22572 руб.

12.06.2017    134967    721    291    

388

SALE! 20%

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

34650 27720 руб.

15.04.2019    68430    179    138    

111

SALE! 20%

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

43450 34760 руб.

03.12.2020    34176    80    58    

78

SALE! 10%

Перенос данных из УТ 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 25200 руб.

23.07.2020    46315    196    64    

158

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

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

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

60000 руб.

05.10.2022    9217    9    8    

10

SALE! 10%

Перенос данных из УПП 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 25200 руб.

15.12.2021    20260    132    38    

90

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

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

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 45650 руб.

10.07.2018    67455    41    122    

46

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

13200 руб.

20.11.2015    150740    365    375    

501
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. StepByStep 3667 27.03.13 10:53 Сейчас в теме
(1) CagoBHuK,
На мой взгляд - воспользоваться типовым вариантом предложенным в статье.
4. CagoBHuK 32 27.03.13 12:46 Сейчас в теме
(2) Видимо, Вы не работали с большими объемами данных. При файлах более 100 мегабайт Ваша обработка встанет колом.
5. StepByStep 3667 27.03.13 13:04 Сейчас в теме
(4) CagoBHuK,
Да. Если база большая и "шерстить" все - это медленно, но верно.
Издержки посимвольного обхода.
6. CagoBHuK 32 27.03.13 13:05 Сейчас в теме
(5) А с каких пор регулярные выражения - это неверно?
7. StepByStep 3667 27.03.13 13:08 Сейчас в теме
(6) CagoBHuK,
Регулярные выражения не рассматривал, надо попробовать.
8. StepByStep 3667 27.03.13 14:56 Сейчас в теме
(6) CagoBHuK,
СПАСИБО. ТОЖЕ ВЕРНО!
9. CagoBHuK 32 27.03.13 15:00 Сейчас в теме
(8) Не за что. Приятно, когда люди прислушиваются к твоим словам.
10. StepByStep 3667 28.03.13 09:55 Сейчас в теме
(9) CagoBHuK,
Еще раз спасибо. Добавил функцию на RegExp.
3. Yashazz 4709 27.03.13 12:34 Сейчас в теме
(1) Соглашусь. Для больших объёмов регулярные выражения быстрее будут, чем посимвольный обход.
11. ITEkb 08.04.13 14:53 Сейчас в теме
У меня такие ошибки выпадали после импорта из 1С 7.7
Как правило, в процессе работы вываливались конкретные справочники и элементы, в которых ошибка.
И вываливалось при поиске или отборах. Если тупо колесиком до нужного пункта докрутить, то не вываливалось.
Открывал карточку, видел в поле среди букв какой-нибудь спецсимвол. Ручками исправлял, и удалял файл индексации.
После этого вопрос решался.
Тестирования и прочие стандартные методы нивкакую ошибки не находили.
StepByStep; +1 Ответить
13. StepByStep 3667 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 3667 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 647 18.12.13 17:08 Сейчас в теме
(16) kiruha, вроде как нормально конвертирует, ошибок нет
Данные реквизита:
выапвыапвы<st yle>[]{}

Сообщение обмена:
<ДругоеНазвание>выапвыапвы<style>[]{}</ДругоеНазвание>
StepByStep; +1 Ответить
17. kraynev-navi 647 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 3667 25.11.14 23:29 Сейчас в теме
(20) dima_kystym,
Пример практического использования можно увидеть здесь: http://infostart.ru/public/120961/
22. a_E 27.11.14 16:07 Сейчас в теме
Спасибо за код помогло.
23. igo1 266 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 Сейчас в теме
Мне очень понравилась статья. Хороший, понятный код
Оставьте свое сообщение