Имя: Пароль:
1C
 
Текст 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) Если я правильно понял, преобразование двоичных данных обратно в строку проходит через файл. Таких закодированных данных в файле может быть несколько десятков тысяч. Весьма сомнительный метод.
Есть другие варианты преобразования ДД в строку?
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн