Обратное преобразование XMLСтрока

1. Vitaly1C8 29.11.22 16:15 Сейчас в теме
Добрый день !
Подскажите как выполнить обратное преобразование к XMLСтрока() ?!
// В реквизит базы данных (ТЧ Справочника) были записаны двоичные данные картинки (Атрибут):
Соответствие.Вставить(Атрибут, XMLСтрока(ДвоичныеДанные_Картинки));  // Атрибут записан в реквизит ТЧ Справочника "Значение"

// Теперь мне нужно эту картинку отобразить, пытаюсь преобразовать обратно:
ДвоичныеДанные_Картинки = XMLЗначение(Тип("ДвоичныеДанные"), ВыборкаДетальныеЗаписи.Значение);
// Получаю ошибку : Ошибка преобразования данных XML

В отладчике на строке с ошибкой ВыборкаДетальныеЗаписи.Значение содержит нужные данные в виде нескольких строк с переводом строки (0D, 0A)
По теме из базы знаний
Найденные решения
18. Vitaly1C8 29.11.22 17:24 Сейчас в теме
(1) Спасибо всем за мысли и наводящие вопросы ! Проблема оказалась в отсечении части данных в запросе

ВЫРАЗИТЬ(УчетнаяЗаписьАтрибуты.Значение КАК СТРОКА(1000)) КАК Значение

в то время как .Значение занимало больше 1000 символов
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. lmnlmn 69 29.11.22 16:48 Сейчас в теме
(1)
ВыборкаДетальныеЗаписи.Значение содержит нужные данные в виде нескольких строк с переводом строки (0D, 0A)
А должна быть всякая ахинея из цифр и латиницы заканчивающаяся на "=".
8. Vitaly1C8 29.11.22 16:53 Сейчас в теме
(4) == в конце строки есть !
9. lmnlmn 69 29.11.22 16:54 Сейчас в теме
(8) Переводы строк смущают. Не должно их быть. Да и с "=" я погорячился. Это уже к MIME относится а не к Base64
5. SlavaKron 29.11.22 16:49 Сейчас в теме
(1) Попробуйте Base64Значение вместо XMLЗначение, хотя и так должно работать - вроде как перевод строки не проблема для обратного перевода в двоичные данные.
И текст ошибки бы увидеть.
7. lmnlmn 69 29.11.22 16:50 Сейчас в теме
(5) Base64 переводы строк не допускает.
12. SlavaKron 29.11.22 16:58 Сейчас в теме
(7) Только что проверил, Base64Значение переводы не имеют значение.
6. user5300 1051 29.11.22 16:50 Сейчас в теме
(1) Должно работать...
XMLСтрока = XMLСтрока(БиблиотекаКартинок.Справочник.ПолучитьДвоичныеДанные());
	
ДВ = XMLЗначение(тип("ДвоичныеДанные"),XMLСтрока);

XMLСтрока =
"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA0klEQVQ4jWP­0SchjIAdsnj+RgYGBgYGJLN1IgAVKZzIwMHiRoG8bAwPDdGQDvNbW7POByc4­7Xs8QrNfOwM/9i+HjVzaGtZcqGZIsG+G6g1ucGGAGUM0LDLOP1DC8ePWWQUF­WiuHHz68Mm67VMjx4/AzOX3y6meHB42cMEmLCDAwMxxAm+CTkMfgk5G3+jwR­aJ8/5j48PVc/w//9/7F7g5GDHy0cGFIfBIDXg+4+fePkEDeDn5cHLRwawdLD­NNzEfRWLHgWP4+NvQDZgOxSQDigMRAJiYaiigT9kyAAAAAElFTkSuQmCC"
wild83; Vitaly1C8; +2 Ответить
11. Vitaly1C8 29.11.22 16:56 Сейчас в теме
(6) дело в том, что XMLСтрока в моем случае сохранена в реквизит и имеет тип Строка {0} может из-за этого ?
Получается нужно как то так ?
ДвоичныеДанные_Картинки = XMLЗначение(Тип("ДвоичныеДанные"), XMLСтрока(ВыборкаДетальныеЗаписи.Значение));
13. user5300 1051 29.11.22 16:59 Сейчас в теме
(11) Нет, всё правильно. XMLСтрока - это "строка".
ДвоичныеДанные_Картинки = XMLЗначение(Тип("ДвоичныеДанные"), ВыборкаДетальныеЗаписи.Значение);


ВыборкаДетальныеЗаписи.Значение - Должно быть "строкой".

Реквизит имеет неограниченную длину строки ?
Vitaly1C8; +1 Ответить
15. Vitaly1C8 29.11.22 17:08 Сейчас в теме
(13) да неограниченную , но в запросе
ВЫРАЗИТЬ(УчетнаяЗаписьАтрибуты.Значение КАК СТРОКА(1000)) КАК Значение
так, сейчас проверю, может отсекается ...
16. user5300 1051 29.11.22 17:11 Сейчас в теме
(15) Попробуй получить реквизит через ссылку в переборе: ХМLстрока = РезультатВыборка.Ссылка.Реквизит;
Vitaly1C8; +1 Ответить
17. spacecraft 29.11.22 17:14 Сейчас в теме
(15)
ВЫРАЗИТЬ(УчетнаяЗаписьАтрибуты.Значение КАК СТРОКА(1000)) КАК Значение
так, сейчас проверю, может отсекается ...

Конечно отсекается.
Сколько байт занимает картинка? Да еще переведенная в строку?
Явно больше 1000 символов.
Vitaly1C8; +1 Ответить
19. user1826630 29.11.22 17:30 Сейчас в теме
(15)
ВЫРАЗИТЬ(УчетнаяЗаписьАтрибуты.Значение КАК СТРОКА(1000)) КАК Значение
Ахахахах
10. Sashares 35 29.11.22 16:55 Сейчас в теме
(1)Удали переводы строк - символы.ПС и символы.ВК и попробуй еще раз.
14. spacecraft 29.11.22 17:05 Сейчас в теме
(1)
// В реквизит базы данных (ТЧ Справочника) были записаны двоичные данные картинки (Атрибут):

А зачем строковый реквизит делать для хранения?
Делайте типом ХранилищеЗначения и сохраняйте напрямую двоичные данные.
И лучше вообще в РС перенести.
user1826630; +1 Ответить
18. Vitaly1C8 29.11.22 17:24 Сейчас в теме
(1) Спасибо всем за мысли и наводящие вопросы ! Проблема оказалась в отсечении части данных в запросе

ВЫРАЗИТЬ(УчетнаяЗаписьАтрибуты.Значение КАК СТРОКА(1000)) КАК Значение

в то время как .Значение занимало больше 1000 символов
20. user1826630 29.11.22 17:31 Сейчас в теме
(18) Сам свои ответы не отметил как верные - считай не зачем и жить.
Остальные обойдутся спасибкой.
2. user1826630 29.11.22 16:30 Сейчас в теме
Значит, это ни разу не двоичные данные.
А судя по "ВыборкаДетальныеЗаписи" - это вообще ХранилищеЗначений. (не ДвоичныеДанные)
3. Vitaly1C8 29.11.22 16:35 Сейчас в теме
(2) ВыборкаДетальныеЗаписи.Значение содержит строку XMLСтрока(ДвоичныеДанные_Картинки)

ДвоичныеДанные_Картинки = Новый Картинка(х).ПолучитьДвоичныеДанные();
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот