Имя: Пароль:
1C
1С v8
Как записать картинку в XML
0 zoro-z
 
29.01.14
14:08
Задача перегружать картинки из одной базы в другую с помощью XML, Как записать картинку в XML.
1 Asmody
 
29.01.14
14:09
закодировать в base64
2 Serginio1
 
29.01.14
14:09
base64 Сериализация Двоичных данных.
3 Рэйв
 
29.01.14
14:10
(0)А через папку на диске никак чтоли?
4 zoro-z
 
29.01.14
14:13
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    Номенклатура.Ссылка,
|    Номенклатура.КодСинхронизации КАК КодСинхронизации,
|    Номенклатура.ОсновноеИзображение КАК ОсновноеИзображение,
|    Номенклатура.ОсновноеИзображение.Хранилище КАК Хранилище
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|    Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка)";

Запрос.УстановитьПараметр("Ссылка", Номенклатура);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ЗаписьXML.ЗаписатьНачалоЭлемента("КодСинхронизации");
    ЗаписьXML.ЗаписатьТекст(Строка(ВыборкаДетальныеЗаписи.КодСинхронизации));
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    КартинкаИгрушки = ВыборкаДетальныеЗаписи.Хранилище.Получить();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("picture");
    ЗаписьXML.ЗаписатьАтрибут("binary", Base64Строка(КартинкаИгрушки);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
КонецЦикла;




___________________

Пишет
{Форма.Форма.Форма(354)}: Ошибка при вызове метода контекста (Base64Строка)
                ЗаписьXML.ЗаписатьАтрибут("binary", Base64Строка(КартинкаИгрушки));
по причине:
Несоответствие типов (параметр номер '1')
5 Wobland
 
29.01.14
14:15
(4) спорим, у тебя там не ДД
6 zoro-z
 
29.01.14
14:17
(5) что такое ДД?
7 Asmody
 
29.01.14
14:18
(4) прям надо в атрибут пихать?
8 Wobland
 
29.01.14
14:18
(6) ожидаемый тип у первого параметра
9 Широкий
 
29.01.14
14:18
В ХранилищеЗначений запихни
10 Asmody
 
29.01.14
14:19
(9) он из него достает
11 zoro-z
 
29.01.14
14:23
(7) Я этот код из книжки взял, куда пихать не знаю, по тому и спрашиваю.

(8) Понял, как картинку сделать ДД?

(9) Т.е. в XML надо записывать ХранилищеЗначений.
12 zoro-z
 
29.01.14
14:25
Хранилище тоже не принимает пишет - не правильный параметр 1.
13 Asmody
 
29.01.14
14:27
(11) посмотри в СП конструктор объекта ДвоичныеДанные, там есть пример
14 zoro-z
 
29.01.14
14:28
Вот как я получаю картинку.

Функция НайтиКартинку(Ссылка)

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ХранилищеДополнительнойИнформации.Хранилище
    |ИЗ
    |    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
    |ГДЕ
    |    ХранилищеДополнительнойИнформации.Объект = &Объект
    |    И НЕ ХранилищеДополнительнойИнформации.ПометкаУдаления";
    
    Запрос.УстановитьПараметр("Объект", Ссылка);
    
    Результат = Запрос.Выполнить();
    
    //Результат2 = Запрос.Выполнить().Выгрузить();
    //Результат2.ВыбратьСтроку();
    
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    Если не Запрос.Выполнить().Пустой() Тогда
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            
            КартинкаИгрушки = ВыборкаДетальныеЗаписи.Хранилище.Получить();
            Сообщить("11111  " + ТипЗнч(КартинкаИгрушки));
        КонецЦикла;
    Иначе
        Сообщить("Не картинки!!!  ");
    КонецЕсли;

    Возврат КартинкаИгрушки;    

КонецФункции // НайтиКартинку()
15 zoro-z
 
29.01.14
14:30
ЗаписьXML.ЗаписатьНачалоЭлемента("КодСинхронизации");
        ЗаписьXML.ЗаписатьТекст(Строка(ВыборкаДетальныеЗаписи.КодСинхронизации));
        ЗаписьXML.ЗаписатьКонецЭлемента();
        
        КартинкаИгрушки = НайтиКартинку(ВыборкаДетальныеЗаписи.Ссылка);
        ДвоичныеДанные = Новый ДвоичныеДанные(КартинкаИгрушки);
        
        ЗаписьXML.ЗаписатьНачалоЭлемента("picture");
        ЗаписьXML.ЗаписатьАтрибут("binary", Base64Строка(ДвоичныеДанные));
        ЗаписьXML.ЗаписатьКонецЭлемента();




{Форма.Форма.Форма(348)}: Ошибка при вызове конструктора (ДвоичныеДанные)
            ДвоичныеДанные = Новый ДвоичныеДанные(КартинкаИгрушки);
по причине:
Файл не обнаружен 'Картинка'
16 DS
 
29.01.14
14:32
Сохрани картинку во врем. файл и создай ДД по СП.
Программист всегда исправляет последнюю ошибку.