Имя: Пароль:
1C
 
Загрузка картинки в спр номенклатура
0 sdaf
 
02.04.09
17:16
пытаюсь загрузить картинки к товару из инета:

Сервер=СтрЗаменить(Картинко,"http://www.","");
Соединение=Новый HTTPСоединение("ХХХ.ru");
ИмяФайла=Прав(Сервер,стрДлина(Сервер)-17);
ИмяВременногоФайла=ПолучитьИмяВременногоФайла(".jpg");
Соединение.Получить(ИмяФайла,ИмяВременногоФайла);
СоздатьКаталог(КаталогПрограммы()+"Pic");
ИтогоИмяФайлы=КаталогПрограммы() +"Pic\"+Сч+".jpg";
ПереместитьФайл(ИмяВременногоФайла,ИтогоИмяФайлы);
ДопХар = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
ДопХар.ВидДанных=Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
ДопХар.ИмяФайла=Строка(Сч)+".jpg";
ДопХар.Хранилище = Новый ХранилищеЗначения(ИтогоИмяФайлы, Новый СжатиеДанных);
ДопХар.Объект = ТекущийЭлеменд;
ДопХар.Записать();
НовЭл.ОсновноеИзображение=ДопХар.Ссылка;

картинка копируется куда надо,в нужном каталоге она есть, в хранилище доп инф появляется элемент, с привязкой к нужному элементу номенклатуры, но в карточке товара картинки нет, и если нажать просмотр из ХранилищеДополнительнойИнформации то пишет "неверный тип данных: строка". Подскажите что я делаю не так...
1 ТелепатБот
 
гуру
02.04.09
17:16
2 sdaf
 
02.04.09
17:34
нашел ошибочку - забыл записать НовЭл...но при попытке записать пишет вот что
{Форма.Форма(240)}: Ошибка при вызове метода контекста (Записать): Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)!
3 sdaf
 
02.04.09
17:52
так, новЭл я записал, но при открытии из ХранилищеДополнительнойИнформации то все равно пишет "неверный тип данных: строка", а при открытии элемента спр номенклатура пишет "Ошибка при установке значения атрибута контекста (Картинка). Несоответствие типов"...час от часу
4 sdaf
 
02.04.09
18:14
а если вместо
ДопХар.Хранилище = Новый ХранилищеЗначения(ИтогоИмяФайлы, Новый СжатиеДанных);

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

тогда в элемент заходит внтурь, но пишет тоже самое...
5 sdaf
 
03.04.09
10:14
это что мне так никто и не скажет ничего?
6 SMakcik
 
03.04.09
10:17
а нафиг ты имя файла указываешь? если у тебя источник Хранилище
7 SMakcik
 
03.04.09
10:24
это раз.
не знаю не пробывал как ты, но похоже надо сначала создать картинку а потом упаковать.

и напоследок и самое главное:
а кто в елемент справочника будет основное изображение записывать?
хотя за 500$ запишу
8 sdaf
 
03.04.09
10:36
>>а нафиг ты имя файла указываешь? если у тебя источник Хранилище
не очень понял, я же новый объект создаю
ДопХар.Хранилище = Новый ХранилищеЗначения(ИтогоИмяФайлы, Новый СжатиеДанных);

по пути ИтогоИмяФайлы есть картинка...

>>а кто в елемент справочника будет основное изображение записывать?
в элемент я записал, все нормально:
Хранилище = Новый ХранилищеЗначения(ИтогоИмяФайлы, Новый СжатиеДанных);
ДопХар.Хранилище = Хранилище.Получить();
ДопХар.Объект = ТекущийЭлеменд;
ДопХар.Записать();
СотрСсылка = Справочники.Номенклатура.НайтиПоКоду(ТекущийЭлеменд.Код);
ТоварС=СотрСсылка.ПолучитьОбъект();
ТоварС.ОсновноеИзображение=Хранилище.Получить();
ТоварС.Записать();
9 sdaf
 
03.04.09
10:45
может вот тут
ДопХар.Хранилище = Новый ХранилищеЗначения(ИтогоИмяФайлы, Новый СжатиеДанных);
в ИтогоИмяФайлы вместо пути нужно новый объект картинка создавать?
10 SMakcik
 
03.04.09
10:47
(8)
ну ты даешь, какого ... ты текст сжимаешь и записываешь

так надо Новый ХранилищеЗначения(Новый ДвоичныеДанные(....), ...);
или
Новый ХранилищеЗначения(Новый Картинка(....),);
11 SMakcik
 
03.04.09
10:51
+(10) а лучше
ДопХар = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
ДопХар.ВидДанных=Перечисления.ВидыДополнительнойИнформацииОбъектов.Файл;
ДопХар.ИмяФайла=Строка(Сч)+".jpg";
ДопХар.Объект = ТекущийЭлеменд;
ДопХар.Записать();

Но только надо переписать отображение немного.
Если ОсновноеИзображение.Получить().ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Файл Тогда
ПолеИзображения = Новый Картинка(ПолучиИмяФайла,);
Иначе
ПолеИзображения = ОсновноеИзображение.Получить();
КонецЕсли;
12 SMakcik
 
03.04.09
10:51
В (11) не надо хранить весь геморой в базе и она дуться не будет.
13 sdaf
 
03.04.09
11:24
(12) спасибо тебе добрый человек! Действительно с текстом тупанул, я в 8ке чайник ваще, сделал вот так:

Сервер=СтрЗаменить(Картинко,"http://www.","");
Соединение=Новый HTTPСоединение("detki-konfetki.ru");
ИмяФайла=Прав(Сервер,стрДлина(Сервер)-17);
ИмяВременногоФайла=ПолучитьИмяВременногоФайла(".jpg");
Соединение.Получить(ИмяФайла,ИмяВременногоФайла);
СоздатьКаталог(КаталогПрограммы()+"Pic");
ИтогоИмяФайлы=КаталогПрограммы() +"Pic\"+Сч+".jpg";
ПереместитьФайл(ИмяВременногоФайла,ИтогоИмяФайлы);
ДопХар = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
ДопХар.ВидДанных=Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
ДопХар.ИмяФайла=Строка(Сч)+".jpg";
Хранилище = Новый ХранилищеЗначения(Новый Картинка(ИтогоИмяФайлы, истина), Новый СжатиеДанных);
ДопХар.Хранилище = Хранилище.Получить();
ДопХар.Объект = ТекущийЭлеменд;
ДопХар.Записать();
СотрСсылка = Справочники.Номенклатура.НайтиПоКоду(ТекущийЭлеменд.Код);
ТоварС=СотрСсылка.ПолучитьОбъект();
ТоварС.ОсновноеИзображение=ДопХар.Ссылка;
ТоварС.ОсновноеИзображение=Хранилище.Получить();
ТоварС.Записать();

в все равно хрен! нету в хранилище картинки....может через Перечисления.ВидыДополнительнойИнформацииОбъектов.Файл попробывать...
14 sdaf
 
03.04.09
11:46
вообщем я её победил, вместо

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

написал

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

и все заработало, спасибо SMakcik!