![]() |
![]() |
![]() |
|
Текст xml содержит недопустимый символ в позиции... | ☑ | ||
---|---|---|---|---|
0
Shalun
naïve
06.09.25
✎
12:41
|
Всем привет! Для КА 2.5 пишу расширение, для автоматического чтения из файла кодов маркировки честного знака и добавления их в табличный документ формы конфы "ЗагрузкаКодовМаркировкиИзФайла". Саму процедуру чтения выполняю на сервере, а обработка кнопки выбора файла, разумеется на клиенте. И вот в момент перехода с сервера на клиент, выдается сообщение "Текст xml содержит недопустимый символ в позиции 24". Я в курсе, что нечитаемые символы типа GS не передаются с сервера на клиент, и рекомендуют преобразовывать в двоичные данные а затем обратно. Но у меня процедура на сервере, не функция. По этому ничего не передаю, и преобразовывать нечего.
Кто подскажет, как обойти данный косяк? Удалять нечитаемые символы не вариант, программа не распознает код! |
|||
1
youalex
06.09.25
✎
13:17
|
>По этому ничего не передаю
Данные формы передаются. сделай так, чтобы не передавались, или не храни данную строку в данных формы , попробуй экранировать, ms sql экранирует например char(29) как "" (без кавычек) |
|||
2
ejikbeznojek
06.09.25
✎
13:50
|
Закодируй в base64
|
|||
3
ejikbeznojek
06.09.25
✎
14:08
|
Перед переходом с клиента на сервер, сделай какую-нибудь конвертацию
А там где программа распознаёт код, выполни обратную. У нас вот так например пишут, а потом если надо восстанавливают Ну а вообще если ругается, значит что-то всё-таки передаёшь. Если у тебя на клиенте выбирается только имя файла и ничего больше, то по идее такой ошибки быть не должно)) Функция ПреобразоватьКод_GS1(Знач СтрШК) Экспорт Возврат Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(СтрШК)); //Возврат Лев(СтрШК, 31) + СтрЗаменить(Сред(СтрШК, 32), Символ(29), "<GS>"); КонецФункции // () Функция ВосстановитьКод_GS1(Знач СтрШК) Экспорт Возврат ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(СтрШК)) КонецФункции |
|||
4
Shalun
naïve
06.09.25
✎
15:09
|
Ребята, спасибо за подсказки!
(1)Я ПОНИМАЮ ЧТО ДАННЫЕ ФОРМЫ ПЕРЕДАЮТСЯ. Но как сделать что бы они не передавались? И я не совсем понял на счет хранения. (2) Что мне перекодировать? Я на сервере читаю файл и сразу записываю данные в ТабличныйДокумент, который является реквизитом формы. На этом этапе все проходит нормально. Или мне на сервере прочитать файл, создать таблицу значений с перекуодируемыми значениями в base64 или двоичные данные, записать ее в хранилище, перейти на клиента, прочитать из хранилища, раскодировать строки и тогда уже записать в табличный документ формы? Чет слишком мудрено получается, я думал может попроще решения есть. |
|||
5
ejikbeznojek
06.09.25
✎
16:18
|
(4) Ну да а что в этом такого. Этож обработка, тут можно любую дичь писать))
|
|||
6
Shalun
naïve
06.09.25
✎
20:06
|
(5) Если я правильно понял, преобразование двоичных данных обратно в строку проходит через файл. Таких закодированных данных в файле может быть несколько десятков тысяч. Весьма сомнительный метод.
Есть другие варианты преобразования ДД в строку? |
|||
7
TTimur
07.09.25
✎
12:34
|
(6) ДД = ПолучитьДвоичныеДанныеИзСтроки(ШК;
ШКСтрокаBase64 = Base64Строка(ДД); |
|||
8
Shalun
naïve
07.09.25
✎
13:08
|
(7) Я про обычную строку. Но уже разобрался, спасибо. просто двоичные данные в строковом формате передавались.
|
|||
9
Габион
11.09.25
✎
14:55
|
(8) Подскажите, пожалуйста, а как в итоге сделали?
Такая же проблема после обновления... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |