Имя: Пароль:
1C
1С v8
Выгрузка файлов в XML
0 seraf
 
15.05.12
17:31
Подмогите примером как в XML выгрузить кроме реквизитов справочника номенклатуры еще и файлы картинок
Если можно кусочком кода
1 SuperMario
 
15.05.12
17:33
файлы картинок???
в xml???
Ничего не путаешь?
2 Нуф-Нуф
 
15.05.12
17:34
(1) а че? получешь цвета побитно и в хмл...
3 Нуф-Нуф
 
15.05.12
17:34
файлы картинок хранятся в отдельно справочнике
4 Defender aka LINN
 
15.05.12
17:35
(1) А что тебя смущает?
5 SuperMario
 
15.05.12
17:35
(2) Креативно!
6 Нуф-Нуф
 
15.05.12
17:35
выгружай его
7 seraf
 
15.05.12
17:35
ну понятно что не файлы картинок а наверное ссылки в хмл файле на картинке выгруженные в папку по соседству.. я примера не нашел
8 SuperMario
 
15.05.12
17:35
(4) сама идея.
9 Нуф-Нуф
 
15.05.12
17:36
картинки в виде двоичных данных отлично храняться в хмл
10 seraf
 
15.05.12
17:36
как мне через xml перебросить номенклатуру и сопутствующие ей изображения
11 Нуф-Нуф
 
15.05.12
17:37
(10) см (3)
12 Нуф-Нуф
 
15.05.12
17:38
ХранилищеДополнительнойИнформации
13 seraf
 
15.05.12
17:38
(11) да в отдельном справочнике хранятся
так как двоичные данные выгружать, тогда файл хмл должен быть объемным
14 seraf
 
15.05.12
17:40
я просто думал будет тег со ссылкой на файл, который в папочку выгрузиться
15 Нуф-Нуф
 
15.05.12
17:42
(14) нет
16 seraf
 
15.05.12
17:43
(15) ясно спасибо думаю разберусь
17 seraf
 
16.05.12
10:27
привет, чет так и не допер

делаю такой код
                               Попытка
                                   ДД = ВыборкаТЧ.Изображение.Получить().ПолучитьДвоичныеДанные();
                               Исключение
                                   ДД = "";
                               КонецПопытки;
                               
                               ТипXML = XMLТипЗнч(ДД);
                               Файл.ЗаписатьНачалоЭлемента(ТипXML.ИмяТипа, ТипXML.URIПространстваИмен);
                               Файл.ЗаписатьТекст(СокрЛП(Строка(ДД)));
                               Файл.ЗаписатьКонецЭлемента();


в итоге в строку попадают преобразованные в строку двоичные данные, но обрезаны до определенной длины
типа

<d6p1:base64Binary xmlns:d6p1="http://www.w3.org/2001/XMLSchema">FF D8 FF...</d6p1:base64Binary>

что неправильно делаю?
18 andrewks
 
16.05.12
10:36
жесть...
19 andrewks
 
16.05.12
10:39
Base64Строка()
Base64Значение()
20 seraf
 
16.05.12
10:40
(18) ну не выгружал я ничего в хмл не умею еще
21 seraf
 
16.05.12
10:40
мог бы через другие обмены сделать но хочется в этом разобраться)
22 seraf
 
16.05.12
10:42
(19) спасибо)
23 Serginio1
 
16.05.12
12:34
Можно и через объекты XDTO
ддФайлЭксель = Новый ДвоичныеДанные(ИмяФайла);
                               
                ТипДвоичныеДанные    = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "base64Binary");

                ДвоичныеДанные      = ФабрикаXDTO.Создать(ТипДвоичныеДанные,ддФайлЭксель);
                ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ДвоичныеДанные      );
24 seraf
 
18.05.12
16:23
заканчиваю свои мучения с переносом картинок, но всё же нужна помощь)

получаю из xml двоичные данные файла, предварительно приведенные в строку через Base64Строка

ДД = Base64Значение(СтрокаXML.base64Binary);
Карт = Новый Картинка(ДД);
ХЗ = Новый ХранилищеЗначения(Карт);
Файл = Справочники.Файлы.СоздатьЭлемент();
Файл.ХранимыйФайл = ХЗ;
Файл.Записать();

в итоге в хранилище файла изображения нет, выгружается что-то почти пустой вместо моей картинки
что еще не так?
25 seraf
 
18.05.12
16:24
(24) почти пустой файл выгружается на выходе
26 seraf
 
18.05.12
16:25
Файл.ХранимыйФайл тип ХранилищеЗначений
27 seraf
 
18.05.12
16:36
размер файла правильно определяется, я наверное в конце неправильно в хранилище значений помещаю
28 andrewks
 
18.05.12
16:37
ДД = Base64Значение(СтрокаXML.base64Binary);
ХЗ = Новый ХранилищеЗначения(ДД);
Файл = Справочники.Файлы.СоздатьЭлемент();
Файл.ХранимыйФайл = ХЗ;
Файл.Записать();
29 Fragster
 
гуру
18.05.12
16:40
XDTO рулит
30 seraf
 
18.05.12
16:46
(29) разбираться надо

ДД = Base64Значение(СтрокаXML.base64Binary);

вот что-то тут не так, закодированная строка огромная а двоичных данных кот наплакал на выходе
31 seraf
 
18.05.12
16:56
Base64Значение(<Строка>)
Параметры:

<Строка> (обязательный)

Тип: Строка.
Строка, закодированная по алгоритму base64.
Возвращаемое значение:

Тип: ДвоичныеДанные.

Описание:

Получает из строки закодированной по алгоритму base64 двоичные данные.

Не понимаю, из закодированной строки получает двоичных данных на пару байтов.

Правильно ведь, передают туда строку из хмл, предварительно помещенную так

ДД = ВыборкаТЧ.Изображение.Получить().ПолучитьДвоичныеДанные();
ДДСтрока = Base64Строка(ДД)
ТипXML = XMLТипЗнч(ДД);
ФайлXML.ЗаписатьАтрибут(ТипXML.ИмяТипа, ТипXML.URIПространстваИмен, ДДСтрока);
32 seraf
 
18.05.12
17:46
ниче не понимаю

если в самой выгрузке играться с двоичными данными то Base64Значение возвращает длинный код двоичных данных из закодированной Base64Строка строки

та же длинная строка обрабатываясь уже при закрузке возвращает несколько байтов
33 seraf
 
18.05.12
18:06
ураа поборол

неизвестно откуда пробелы влезли в закодированую строку, Стрзаменить все решил

всем спасибо
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.