|
Неизвестные символы � при получении XML из двоичных данных версии объекта | ☑ | ||
---|---|---|---|---|
0
lenkavovka
10.06.20
✎
06:59
|
Всем привет!
Задача - получить первый номер документа из истории версий. Из РегистрСведений.ВерсииОбъектов запросом выбираем нужную версию документа с типом ХранилищеЗначения, далее пытаемся из двоичных данных сделать XML: ЧтениеДанных = Новый ЧтениеДанных(Результат[0].ВерсияОбъекта.Получить().Объект); СтрокаXML = ЧтениеДанных.ПрочитатьСимволы(,КодировкаТекста.UTF8); В строке куча "замещающих" символов, примерно так: � x�xsi(http://www.w3.org/2001/XMLSchema-instance�<&DocumentObject.ЗаказКлиента{��typeHDocumentObject При этом кириллический текст читается, то есть кодировка вероятно всё-таки UTF-8. Другие доступные кодировки текст делают нечитаемым. Подскажите, это какая-то очевидная проблема? |
|||
1
Галахад
гуру
10.06.20
✎
07:45
|
Насколько я помню, в версии лежат двоичные данные и сначала их нужно перобразовать.
|
|||
2
lenkavovka
10.06.20
✎
08:15
|
(1) так ведь ЧтениеДанных.ПрочитатьСимволы и преобразовывает двоичные данные. Только криво.
|
|||
3
Галахад
гуру
10.06.20
✎
08:31
|
(2) Вообще нет. Этот метод просто читает поток.
|
|||
4
lenkavovka
10.06.20
✎
09:12
|
(3) хм.
В Результат[0].ВерсияОбъекта.Получить().Объект значение выглядит как-то так: E0 00 00 01 00 78 CF 02 78 73 69 28 68 74 74 70 3A 2F 2F 77 77 77 2E... Это ведь двоичные данные, верно? Далее. Мы создаём новое ЧтениеДанных, куда кладём это значение, и после ЧтениеДанных.ПрочитатьСимволы он в нас выплёвывает кривой XML в виде строки: � x�xsi(http://www.w3.org/2001/XMLSchema-instance�<&DocumentObject.ЗаказКлиента{��typeHDocumentObject.ЗаказКлиента�<Ref�!e2dcf0bb-9033-11ea-8115-0cc47a14c1ff�<DeletionMark�false�<Date�2020-05-07T08:50:04�<Number� ЕЕ00-001157�<Posted��<................ Если не сложно - киньте, пожалуйста, ссылку про преобразование. |
|||
5
Галахад
гуру
10.06.20
✎
09:52
|
ДвоичныеДанные = Результат[0].ВерсияОбъекта.Получить();
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(); ДвоичныеДанные.Записать(ИмяВременногоФайла); |
|||
6
lenkavovka
10.06.20
✎
10:47
|
(5) в момент ДвоичныеДанные.Записать(ИмяВременногоФайла) вылазит ошибка:
Текст XML содержит недопустимый символ в позиции 21 И показывает вот этот фрагмент: Number� ЕЕ00-001157�<Posted�� Вероятно, проблема в самих данных. Почему-то там есть символы, которые 1С при таком чтении не понимает. Похоже, придётся лезть в механизм отображения истории версий в конфигурации, смотреть, как там получают данные. Пока сделали костыль, поиск нужного места с помощью СтрНайти. В общем проблема решена, работает. Но, конечно, вопрос остался незакрытым. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |