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

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

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

ПРОБЛЕМА:

{Форма.Управляемая.Форма(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: http://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 %.

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

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

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

ПРОБЛЕМА:

{Форма.Управляемая.Форма(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: http://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 %.

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

Просмотров 12.5к. Опубликовано 24 октября, 2018 Обновлено 24 октября, 2018

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

На самом деле ошибка преобразования XDTO является не какой-то определенной ошибкой, а является большим семейством ошибок возникающих при работе одного из базовых механизмов платформы 1С. Этот механизм обеспечивает передачу данных между различными подсистемами платформы, при этом данные из внутреннего представления одной подсистемы преобразуются в текстовый формат XML, передаются в другую подсистему, и там  опять преобразуются во внутреннее представление. Ошибка преобразования XDTO говорит, что прямом или обратном преобразовании обнаружено какое-то несоответствие, из-за которого оно не может быть выполнено.

Частные причины ошибки

Существует очень много частных причин ошибки преобразования XDTO.  Сведения  доступные под кнопкой Подробно могут помочь в понимании частной причины, но далеко не всегда.

Прежде чем приступить к диагностике причины ошибки XDTO, следует выполнить стандартные профилактические операции над ИБ: очистить кэш, проверить состояния файла, выполнить тестирование ИБ.

Взаимодействие Клиента и Сервера

При запуске 1С в режиме Тонкий клиент взаимодействие клиента с ИБ происходит с использование преобразования XDTO, и если оно приводит к ошибке, то в тех случаях, когда это возможно, следует воспользоваться режим Толстый клиент.

Сырые и Неоригинальные решения

Если ошибка преобразования XDTO возникает в неоригинальной конфигурации или неоригинальной обработке, то возможно, причина в неоригинальном коде, который не был должным образом оттестирован. Это возможно и в оригинальных решения от 1С после установки сырых обновлений.

В этом случае необходимо отказаться от использования неоригинального или сырого решения и вернуться к предыдущему состоянию кода из архива.

Chameleon1980

12.12.22 — 09:36

Приветствую Всех.

Вот такая хрень постоянно при отладке вылазит (практически в любом месте):

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.

по причине:

Ошибка преобразования данных XDTO:

Значение: QEGDgoLBgsBVgEONHQQCTkuGumb7YE4YqpXfY5HdPZxoTYSvEptS02+agsGaCDIwLjA0LjIygYGhIK0AKIHhy1WhILWXKw1KpTfjS7mKQ4Q0sSh0gSA=    Тип: {http://www.w3.org/2001/XMLSchema}base64Binary

Отладка HTTP

1С:Предприятие 8.3 (8.3.22.1709)

Управление холдингом, редакция 3.2 (3.2.2.22)

Клиент-сервер

Кто-нибудь сталкивался? и как победить?

asady

1 — 12.12.22 — 09:43

(0) вангую — возникает на форме объекта.

Chameleon1980

2 — 12.12.22 — 09:51

ну, например, в ПриСозданииНаСервере

Chameleon1980

3 — 12.12.22 — 09:51

и потом отдалка просто отваливается
просто ничего нет в предметах отладки

Chameleon1980

4 — 12.12.22 — 09:52

(1) тут же вообще чисто серверная
тоько сервер-сервер

Chameleon1980

5 — 12.12.22 — 10:09

беда… блин

DayDreamer

6 — 12.12.22 — 10:12

переходите на 8.3.20.2184
21 и 22 платформа содержат различные баги, даже в последних релизах

Kassern

7 — 12.12.22 — 10:12

(4) «Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.» — «тоько сервер-сервер» неувязочка получается)

Kassern

8 — 12.12.22 — 10:14

(0) если сервис ваш, то попробуйте строкой передавать, а в base64 уже на приемнике конвертировать

Chameleon1980

9 — 12.12.22 — 10:19

1. нет никакой передачи.

2. еще раз повторю — возникает, например в процедуре ПриСозданииНаСервере, а она где ?? правильно — на сервере.

какие клиенты тут?

более придерживаюсь - (6)

жду еще читателей - может кто знает секрет

Chameleon1980

10 — 12.12.22 — 10:21

https://dropmefiles.com/fPuQ3

вот на этой строке падает

и отладка напрочь отваливается после этого

https://dropmefiles.com/fPuQ3

Chameleon1980

11 — 12.12.22 — 10:22

(10) тут клиентом не пахнет

Kassern

12 — 12.12.22 — 10:54

(11) а без отладки код отрабатывает?

Chameleon1980

13 — 12.12.22 — 11:08

(12) ага. без отладки все гладко.

Kassern

14 — 12.12.22 — 11:09

(13) А если через TCP/IP отладку запустить?

  

Chameleon1980

15 — 12.12.22 — 11:15

(14) пока не пробовали. я предлагал, но пока откатились до

1С:Предприятие 8.3 (8.3.20.2180)

эта ошибка ушла

Спасибо огромное всем, кто оказался рядом в трудную минуту и пытался помочь. :)

С наступающим всем новым годом !!!

1С 8 Ошибка «Ошибка преобразования данных XDTO:» при открытии базы в режиме 1С: Предприятие

Описание ошибки:
База была выгружена из ирхива .dt. База файловая, конфигурация 1С: Бухгалтерия предприятия, редакция 3.0. При работе в конфигураторе и при запуска конфигуратора ошибок не возникает. Ошибка проявляет себя только при попытке запуска в режиме 1С: Предприятие. Даже не выводится форма для авторизации пользователя, как возникает ошибка. Релиз платформы 1С: Предприятие — 8.3.12.89.

Найденные решения:

Нажатие на изображении увеличит его
1С 8, как устранить, убрать, исправить ошибку, при запуске базы, Ошибка преобразования данных XDTO, НачалоСвойства: errorProcessingSettings, messageTemplates, category

Полный текст ошибки:

Ошибка преобразования данных XDTO:

НачалоСвойства: errorProcessingSettings Форма: Элемент Тип: {http://v8.1c.ru/8.2/managed-application/core}ErrorProcessingSettings

по причине:

Ошибка преобразования данных XDTO:

НачалоСвойства: messageTemplates Форма: Элемент Тип: {http://v8.1c.ru/8.2/managed-application/core}ErrorMessagesTexts

по причине:

Ошибка преобразования данных XDTO:

НачалоСвойства: category Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/core}ErrorCategory

Ошибка в некотором роде редкая, но не настолько, чтобы остаться неизвестной. Короткое обсуждение на форуме dev.mista.ru, содержащее ссылку на описание в каталоге ошибок (потребуется авторизация для сайта ИТС) продукта технологической платформы позволило точно определить проблему — неподходящий релиз платформы. Как указано — использовался релиз платформы 8.3.18.1289.



Нажатие на изображении увеличит его
ошибка при запуске базы 1С 8, Ошибка преобразования данных XDTO, форма, элемент тип: http://v8.1c.ru/8.2/managed-application/core

Таким образом оказалось, что необходимо установить более высокую минорную версию релиза 8.3.18 — 8.3.18.13.63 или позднее. Так же ошибка может возникать для более ранних релизов версий 8.3.17 (до 17.2127), 8.3.19 (до релиза 19.1150), а так же для 8.3.20 (ранее релиза 20.1363).

Обновление релиза платформы 1С:предприятие на релиз 8.3.18.1563 на рабочем месте, где возникла ошибка, исправило ситуацию и база была запущена в ошибок.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

04-10-2021

Журавлев А.С.
(Сайт azhur-c.ru)

Одним из самых популярных форматов данных, используемых практически в любой компании, является XML (расширяемый язык разметки). Разработчики 1С создали специальный объект XDTO для удобства своих клиентов и простого взаимодействия с файлами XML, поэтому программисту 1С важно работать с этими объектами платформы, так как обмен данными через XML встречается постоянно.

Этот функционал создавался как удобный инструмент обмена данными между конфигурациями и другими приложениями. Также этот механизм используют для работы с web-сервисами и для обработки произвольных данных. Большое преимущество XDTO перед другими способами – в нем есть возможность обращаться к файлу XML, как к объекту 1С. То есть все реквизиты можно будет получить, описывая структуру через точку, не задумываясь о скобках, тегах и атрибутах.

Взаимодействие с файлами XML происходит по заранее установленным правилам, описанным в объекте структуры конфигурации – XDTO – пакеты в 1С 8.3. Суть этих элементов структуры в том, что они представляют собой схемы, по которым будут распознаваться данные из XML-файлов. В типовых конфигурациях уже присутствуют подобные объекты, но при работе с конкретными файлами понадобятся другие схемы.

Существует два способа добавить XDTO-пакет в конфигурацию:

  • Собственноручно создать. Этот вариант подойдет при самостоятельной работе с XML определенного формата. Зная, какие данные будут подаваться на вход для импорта с использованием XDTO, можно заранее создать в конфигурации нужный объект. Этот вариант хорош, если обмен данными налажен и никаких изменений не планируется;

    Рис.1 XDTO пакеты

    Рис.1 XDTO пакеты
  • Импорт присланной схемы. Когда нам присылают данные, их схема может оказаться какой угодно, особенно, если раньше мы не работали с источником. Сильно упростит ситуацию, если вместе с XML нам пришлют и файл формата xsd. В нем содержится выгрузка XDTO-пакета, который может разобрать конкретные XML. Нам останется лишь импортировать его.

Чтобы загрузить данные из присланной нам схемы, необходимо в режиме конфигуратор открыть раздел «Общие» и «XDTO-пакеты». Через контекстное меню выбрать пункт «Импорт XML-схемы…», выбрать файл и подтвердить пространство имен, взятое из файла. После этого необходимо обновить конфигурацию, и предварительные настройки сделаны.

Но на самом деле в последнем случае нам необязательно создавать XDTO-пакеты в конфигурации 1С 8.3. Существует возможность только использовать XSD-схему, присланную нам из отдельного файла, не внося изменения в структуру базы 1С. Для этого нужно воспользоваться кодом, объясняющим платформе 1С, какой тип объекта с какими параметрами будет загружаться.

Это происходит следующими командами:


ФайлXSD = Новый Массив();
ФайлXSD.Добавить("D:1strust.xsd");
ФабрикаXDTOИзФайла = СоздатьФабрикуXDTO(ФайлXSD);
Номенклатура = ФабрикаXDTOИзФайла.Тип("http://www.1c.ru/products", "Номенклатура");

Экспорт и импорт файла

После того как мы разобрались с принципами использования пакетов XDTO, нужно посмотреть на механику работы с файлами XML. Лучше всего это будет видно на простом примере, чтобы понять основы. Добавим новый элемент в раздел XDTO-пакетов и настроим его следующим образом:

  1. Заполняем URI-пространство имен в свойствах XDTO пакета. Среди разработчиков 1С принято заполнять этот реквизит адресом страницы, заполненной описанием тех данных, с которыми происходит работа. Это помогает в работе, но не всегда возможно. В иных случаях заполняют произвольным текстом;
  2. Задаем тип объекта и его свойства, используя контекстное меню. Задаем имя этих параметров и для свойств определяем тип, выбирая его из предложенных платформой.

Рис.2 Параметры пакета

Рис.2 Параметры пакета

Следующим этапом будет написание процедуры для создания файла XML по описанной выше схеме. Код достаточно прост, поскольку создан XDTO-пакет, а у элемента всего 2 свойства – «Наименование» и «Артикул». Обращаться к конкретной схеме позволяет объект платформы «ФабрикаXDTO». Сама процедура состоит из:

  1. Определение схемы будущей XML;
    
    ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура");
    

  2. Заполнение свойств номенклатуры;
    
    Номенклатура = ФабрикаXDTO.Создать(ТипФабрики);
    Номенклатура.Наименование = "Тест XML";
    Номенклатура.Артикул = "2";
    

  3. Создание нового XML файла.
    
    ИмяФайла = "D:1struct1.xml";
    МойXML = Новый ЗаписьXML;
    ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);
    МойXML.ОткрытьФайл(ИмяФайла, ПараметрыЗаписиXML);
    МойXML.ЗаписатьОбъявлениеXML();
    ФабрикаXDTO.ЗаписатьXML(МойXML, номенклатура);
    МойXML.Закрыть();
    

Чтение XML-файлов с помощью конкретной фабрики XDTO по уже созданному в конфигурации пакету ничуть не сложнее. Алгоритм похож по структуре и отличается только операциями взаимодействия с XML-файлами. В данном случае нам нужно воспользоваться объектом платформы «ЧтениеXML» и прочитать содержимое в переменную. На выходе у нее будет тип «ОбъектXDTO», и вы сможете обращаться ко всем ее свойствам через точку.


ТипФабрики = ФабрикаXDTO.Тип("http://www.primerXML.ru/Nomen","Номенклатура");
 
ИмяФайла = "D:1struct1.xml";
МойXML = Новый ЧтениеXML;
МойXML.ОткрытьФайл(ИмяФайла);
номенклатура = ФабрикаXDTO.ПрочитатьXML(МойXML, ТипФабрики);
МойXML.Закрыть();

Теперь попробуем прочитать файл, схемы которого нет в нашей конфигурации. Для этого экспортируем XDTO-пакет в файл формата xsd и удалим схему из конфигурации. После этого нам придется объяснить платформе, откуда ей брать схему читаемой XML-кодом, продемонстрированным ранее. Однако в простейших случаях 1С самостоятельно может распознать все свойства.

Рис.3 Экспорт XDTO-пакета

Рис.3 Экспорт XDTO-пакета

Лучше все-таки не рассчитывать на понятливость платформы 1С, а использовать точную схему XML. Многие специалисты используют сторонний софт для их создания, но для этого необходим достаточно большой опыт и уровень подготовки. Работа с пакетами XDTO требует внимания и соблюдения точного соответствия файлов заданной схеме, чтобы минимизировать возможные ошибки.

Исправление ошибок

Одной из достаточно распространенных ошибок, связанных с работой с XDTO-пакетами, является «Ошибка преобразования данных XDTO». Ее суть заключается в том, что платформа не может разобрать данный ей XML-файл по заданной схеме. При получении подобной ошибки при импорте данных, необходимо проверить формат файлов – возможно, присутствуют незакрытые теги.

Зачастую проблема с ошибками преобразования данных возникает и по другим причинам:

  • Ошибки в обновлении платформы или конфигурации;
  • Обмен между базами разных версий;
  • Недочеты в алгоритме приема данных;
  • Проблемы с временной памятью конкретного компьютера.

Чтобы исправить эту ошибку, сначала почистите кэш или удалите, а также заново добавьте информационную базу в список баз. Затем внимательно проверьте файл XML – вдруг случайно сделали ошибку в его тексте, проверьте соответствие структуры пакету XDTO. Если ошибка появилась после обновления, сделайте тестирование и исправление ИБ, сохранив перед этим резервную копию базы. Если проблема не уйдет, вернитесь на предыдущую версию и подождите, пока разработчики 1С не разберутся с этой проблемой.

Рис.4 Ошибка преобразования данных

Рис.4 Ошибка преобразования данных

Еще одна проблема, часто мучающая программистов 1С, работающих с XDTO, – ошибка проверки данных. Если при импорте вы видите подобный текст, то с высокой долей вероятности источник проблемы в несоответствии файла нужной схеме. Но проблема может быть не на вашей стороне, а в базе, из которой выгружали XML. Чтобы исправить эту оплошность, придется внимательно изучить всю последовательность действий и найти, после чего файл перестал соответствовать ожиданиям.

Рис.5 Ошибка проверки данных

Рис.5 Ошибка проверки данных

Более сложная для анализа проблема, если при обмене информацией 1С выдает ошибку о несоответствии типов XDTO. В этом случае придется проверять все данные, находить ошибки и их причины. В некоторых случаях ошибки могут быть в коде, иногда – в данных информационной базы. Чтобы это понять, необходимо иметь доступ к базам причастным к обмену и четко понимать всю суть происходящего экспорта и импорта.

Рис.6 Несоответствие типов XDTO

Рис.6 Несоответствие типов XDTO

На первый взгляд работа с XDTO достаточно сложна, поэтому на первое время рекомендуется добавлять XDTO-пакеты в 1С для большего порядка и учета. Конечно, все нюансы изучить сразу невозможно, но в процессе работы вы будете продолжать учиться. Но с уверенной теоретической базой намного удобнее начинать разбираться в этом вопросе.

   Demon73

03.08.20 — 14:22

Столкнулись тут с проблемой при подключении сканера 2d и использовании его для «Честного знака». При сканировании выдаётся такое вот окошко с сообщением

Текст XML содержит недопустимый символ в позиции 31 :

010290000044725721agM%ssr<KkWNd91003A92wCLW0MHStmVDBEr6UQCj/ArKhJeMauq8N8AnGScx9l+WsENooD3GAXDhxkEe1X2Lia3GHG8nzmgJsswgYB0gog==;;

{ОбщийМодуль.ШтрихкодированиеИСКлиент.Модуль(87)}:    РезультатОбработкиШтрихкода = ШтрихкодированиеИСВызовСервера.ОбработатьШтрихкод(

{ОбщийМодуль.СобытияФормИСКлиент.Модуль(435)}:        ШтрихкодированиеИСКлиент.ОбработатьДанныеШтрихкода(

{Обработка.ПроверкаИПодборПродукцииИСМП.Форма.ПроверкаИПодбор.Форма(168)}:        Данные, ПараметрыСканированияКодовМаркировки());

по причине:

Ошибка при вызове серверного метода.

по причине:

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.

по причине:

Ошибка преобразования данных XDTO:

Запись значения свойства ‘ret’:

    форма: Элемент

    имя: {http://v8.1c.ru/8.2/managed-application/modules}ret

по причине:

Ошибка преобразования данных XDTO:

Запись значения свойства ‘Value’:

    форма: Элемент

    имя: {http://v8.1c.ru/8.1/data/core}Value

по причине:

Ошибка при записи XDTO

по причине:

Текст XML содержит недопустимый символ в позиции 31 :

010290000044725721agM%ssr<KkWNd91003A92wCLW0MHStmV

Правда иногда он всё же сканирует нормально, а потом снова не может сканировать те же коды. Может кто-нибудь сталкивался?

https://sun9-52.userapi.com/c858524/v858524379/1eef11/gWFRD6NMw8s.jpg

   johnnik

1 — 03.08.20 — 14:27

Переключите сканер в режим COM-порта и обновите 1С до актуального релиза (не помешает)

   lodger

2 — 03.08.20 — 14:44

(0) 1с, со своими прирученными писателями драйверов для сканеров, не были готовы к спец.символам.

свежие костыли в свежих релизах есть. но в сущности, вам полный код с 31го знака и не нужон — можно его просто «потерять» по пути.

   Demon73

3 — 03.08.20 — 14:58

(1) Сканер работает в режиме COM-порта.

1С:Управление торговлей обновлена до последнего на данный момент релиза 11.4.12.81.

   Garykom

4 — 03.08.20 — 15:10

Найди проблеммные ШК, выясни что там за символы «в позиции 31» и проверь что в сканере стоит по заменам «непечатных».

Мануал от сканера найти с кучей настроечных ШК

   hhhh

5 — 03.08.20 — 15:12

(3) посмотрите отладчиком, какой конкретно символ ей не нравится, потом принимайте решение.

   Garykom

6 — 03.08.20 — 15:12

(4)+ Заменять символы можно аппаратно сканером или настройками драйвера, глянь их из 1C.

И да какой драйвер используется в 1С ? Я очень надеюсь что типовой 1С а не изврат от атол

   Demon73

7 — 03.08.20 — 16:24

(6) Можно подробнее про замену символов аппаратно сканером? Драйвер типовой от 1С.

   Garykom

8 — 03.08.20 — 17:28

(7) «Мануал от сканера найти с кучей настроечных ШК»

   Bad_Aleks

9 — 04.08.20 — 06:56

(0) У тебя в конце кода видишь точки с запятой? Скорее всего CSV-файл с кодами перед распечаткой открывали в Excel, после этого там такие символы появляются…

У нас на такие же коды ругается.

Пробуй заново распечатать. Из CSV файла почистить в конце строк эти символы (;;).

   Demon73

10 — 04.08.20 — 07:02

Переместился домой. С той же базой, но дома всё работает. Странно. Настройки те же.

   PDV64_

11 — 04.08.20 — 08:56

Добрый день.

У меня точно такая же проблема.

Розница 2.2., подчиненный узел РИБ.

Проанализировал код программы, неверный символ 29 (Символы(29)) — пустой символ.

Исключать недопустимые символы исправляя типовой код — не вариант.

У кого-нибудь возникли по этой проблеме мысли. Если на другом компе работает, может дело в настройках системы или, скажем в разрядности?

   Garykom

12 — 04.08.20 — 09:06

Мысль что драйвер 1С старый стоит, который пустые (по факту служебные) символы не выкидывает

   Garykom

13 — 04.08.20 — 09:08

   PDV64_

14 — 04.08.20 — 10:47

(12) (13) Жонглирование драйверами ничего не дало, может какой с Интернета качнуть?

Только какой?

У меня стоит драйвер по технологии 1С — Рарус. при этом драйвер не выбирается, если выбрать драйве стандарта 1С Совместимо — сканер не видится ни в сом ни в NativApi.

   Bad_Aleks

15 — 04.08.20 — 11:16

(14) Марка то точно корректна? Проверь через приложение  «Честный знак».

   trad

16 — 04.08.20 — 11:17

Символ(29) — это GS (group separator) в databar.

Передать этот символ в составе строки между клиентом и сервером не получается.

Я оборачиваю строку штрихкода в двоичные данные при передаче с клиента на сервер.

ПолучитьДвоичныеДанныеИзСтроки/ПолучитьСтрокуИзДвоичныхДанных

   trad

17 — 04.08.20 — 11:19

другой вариант:

разобрать ШК по GS еще на клиенте и передавать на сервер кусками

   Garykom

18 — 04.08.20 — 11:55

(16) Все там передается просто надо обернуть XMLСтрока

   Demon73

19 — 04.08.20 — 12:04

Самое интересное, что у меня сегодня всё работает даже на складе, хотя я ничего не делал, драйвера не менял, конфу не правил. Я уж половину склада отсканировал. Вчера пытался добраться, где ошибка возникает в конфигураторе, но контора закрылась и всех выгнали. Помню, что вроде строка со сканера не проходит проверку с имеющимися шаблонами кодов по длине.

   trad

20 — 04.08.20 — 12:16

(18) ну или так обернуть

факт, что строка не передается, поэтому не надо писать «Все там передается»

   Гений 1С

21 — 18.10.20 — 13:44

вот мне тоже интересно, код марки у меня сканером считывается 01…., а надо (01)….

Я конечно, напишу расширение, но как это делается вообще по-нормальному?

  

DrZombi

22 — 18.10.20 — 14:59

(10) Дома база локальная? Попробуй серверную развернуть :)

  • Ошибка преобразования данных xdto текст false
  • Ошибка преобразования данных xdto при обновлении
  • Ошибка преобразования данных xdto началосвойства ret форма элемент
  • Ошибка преобразования данных xdto началосвойства error processing settings форма элемент
  • Ошибка преобразования данных xdto началосвойства category форма элемент тип