Имя: Пароль:
1C
1С v8
Как записать строку ХМЛ в Хранилище значение?
,
0 totparen
 
04.03.17
21:08
Подскажите как обойти лишние движения с файлом.
Хочу в хранилище значений записать данные файла ХМЛ.

ФайлХранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(Файл.ПолноеИмя),СтепеньСжатия);

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

Может как-то можно ЧтениеXML сразу записать в Хранилище?
1 Лефмихалыч
 
04.03.17
21:41
зачем ЧтениеXML сохранять в хранилище? Какой в этом смысл? Почему не подходит хранить собственно файл xml?
2 бомболюк
 
04.03.17
21:44
или строку xml
3 totparen
 
04.03.17
22:34
(1) я так и сохраняю, файл в хранилищеЗначений. Только когда у меня есть стрка ХМЛ, мне приходится её специально записывать во временный файл, потом этот файл записывать в хранилище значений, а потом удалять. Мне кажется можно как-то исключить из этой цепочки временный файл.
4 Defender aka LINN
 
04.03.17
22:53
ХранилищеЗначения (ValueStorage)
На основании значения
Синтаксис:

Новый ХранилищеЗначения(<Значение>, <АлгоритмСжатияДанных>)
Параметры:

<Значение> (обязательный)

Тип: Произвольный.
Значение, которое должно быть помещено в хранилище.

Тип: Произвольный. Произвольный. Произвольный. Произвольный. Произвольный. Произвольный.
5 Defender aka LINN
 
04.03.17
22:54
+(4) Хотя одиныснеги, как правило, тупые.
6 totparen
 
04.03.17
23:02
(5) Однако, как самокритично.
7 Defender aka LINN
 
04.03.17
23:13
(6) Это ты в зеркало сказал, видимо?
8 Lexey_
 
04.03.17
23:21
(3)а зачем Х3? Почему не сохранять в объект строкового типа?
9 Мимохожий Однако
 
05.03.17
07:46
(3) Пиши значение напрямую без временных файлов.
(5) +1
10 totparen
 
05.03.17
07:50
(8)

Существует справочник ФАЙЛЫ, у него реквизиты "Данные". Файл может быть и типа XML, и типа BMP, и что угодно. Нужно сохранить возможность, что бы можно было сохранить любой элемент справочника на диск, не анализируя при этом какой тип данных находится в хранилище.
11 totparen
 
05.03.17
07:53
Короче пришел к выводу, что без временного файла не обойтись. Так как в хранилище значений пишется ДвоичныеДанные, а его конструктор предполагается только на основе файла.
12 Мимохожий Однако
 
05.03.17
08:04
На основании значения
Синтаксис:

Новый ХранилищеЗначения(<Значение>, <АлгоритмСжатияДанных>)
Параметры:

<Значение> (обязательный)

Тип: Произвольный.
Значение, которое должно быть помещено в хранилище
...
Я к тому, что значение может быть строковым.
13 4St
 
05.03.17
19:13
(0) Если сможешь предварительно закодировать строку с XML в base64, то можешь воспользоваться Base64Значение(). Еще посмотри, как ДвоичныеДанные сериализуется через ЗначениеВСтрокуВнутр или через СериализаторXDTO.XMLСтрока() - возможно, в обратную сторону тоже получится.

P.S. Кажется, мы снова в одном направлении работаем.
14 Вуглускр1991
 
05.03.17
19:35
Если вместо XML делать фастинфосет, то его представление как двоичные данные доступно без сохранения в файл.
15 totparen
 
05.03.17
20:18
(14) не знаком с этим. Есть пример?
16 Zhuravlik
 
05.03.17
20:37
(2) +1
(3) не понял про "Только когда у меня есть стрка ХМЛ, мне приходится её специально записывать во временный файл" - а зачем ее записывать? Цель какая?