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

Синхронизация и обмен для 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    136616    730    292    

393

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

15.04.2019    69487    166    141    

112

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    47482    203    64    

164

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

28000 25200 руб.

15.12.2021    21066    138    38    

97

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

03.12.2020    34801    83    58    

81

[ED2] Обмен УПП 1.3, КА 1.1, УТ 10.3 с EnterpriseData (универсальный формат обмена), обработка

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

14580 руб.

18.02.2016    183605    565    508    

509

SALE! 10%

Переход и перенос данных из УПП 1.3 в ERP 2.5, КА 2.5. Переносятся документы (обороты за период), справочная информация и остатки

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

Переход и перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:ERP Управление предприятием 2.5 и 1С:Комплексную автоматизацию 2.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.227.x), ERP 2.5 (2.5.16.x), КА 2.5 (2.5.16.x) .

28000 25200 руб.

24.06.2020    61668    45    27    

75

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

45650 руб.

10.07.2018    68399    41    124    

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

Сообщение обмена:
<ДругоеНазвание>выапвыапвы<style>[]{}</ДругоеНазвание>
StepByStep; +1 Ответить
17. kraynev-navi 649 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 3676 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 1140 28.05.20 13:07 Сейчас в теме
Спасибо, помогло!
Воспользовался первым вариантом.
27. tvssm 19.02.21 10:07 Сейчас в теме
Мне очень понравилась статья. Хороший, понятный код
Оставьте свое сообщение