Имя: Пароль:
1C
1С v8
УТ 11 Внешний отчет. Вставить Картинку Номенклатуры в Макет.
, ,
0 Mr_Mihail
 
13.11.12
12:20
Здравствуйте, подскажите как можно в макет вставить картинку привязанную к номенклатуре? Пробовал вот таким методом:

Картинка = Результат.Номенклатура.ФайлКартинки.ФайлХранилище.Получить();
ОбластьМакета.Рисунки.D1.Картинка = Картинка;

Несоответствие типов. Наверно я не правильно получаю картинку
1 Mr_Mihail
 
13.11.12
12:44
ап
2 experiment
 
13.11.12
13:07
Недавно данную задачу пытался решить, никак не получилось. На Инфостарте есть пара подобных отчетов, но там куча ошибок.
3 Cube
 
13.11.12
13:09
А как ты картинку получаешь-то?
4 Cube
 
13.11.12
13:09
СКД?
5 Mr_Mihail
 
13.11.12
13:11
(3)(4) Первая строка моего кода. не СКД
6 Cube
 
13.11.12
13:14
(5) Ну и?

СП:

РисунокТабличногоДокумента (SpreadsheetDocumentDrawing)
Картинка (Picture)
Использование:

Чтение и запись.
Описание:

Тип: Картинка.
Содержит картинку рисунка.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

Применимо только для рисунков типа Картинка.
Если картинка задается программно, может быть установлена картина вида Пустая или ИзБиблиотеки.



У тебя тут
Картинка = Результат.Номенклатура.ФайлКартинки.ФайлХранилище.Получить();
тип картинка? Что-то сомневаюсь...
7 Cube
 
13.11.12
13:17
Пробуй так:

Картинка = Новый Картинка(Результат.Номенклатура.ФайлКартинки.ФайлХранилище.Получить());
ОбластьМакета.Рисунки.D1.Картинка = Картинка;
8 Mr_Mihail
 
13.11.12
13:17
(6) в этом и вопрос. я не знаю как правильно.

Картинка = Результат.Номенклатура.ФайлКартинки.ФайлХранилище.Получить();

данная строка это только предположение. я прошу подсказать как будет правильно.
9 Cube
 
13.11.12
13:18
(8) Не знаешь, как открыть СП и прочитать, как создать объект типа "Картинка"? У, лентяй...
10 Mr_Mihail
 
13.11.12
13:26
(9) как создать объект картинка я знаю) я не знаю как её вытащить из базы ут 11.

(7) так конечно программа ругаться на не соответствие типов не будет,но картинка из номенклатуры всё равно не цепляется.
Результат.Номенклатура.ФайлКартинки.ФайлХранилище.Получить() - вместо этого должно быть что-то другое
11 Cube
 
13.11.12
13:32
(10) "вместо этого должно быть что-то другое" - телепатов ждешь? Попробуй картинку из номенклатуры в файл сохранить, когда научишься - приходи.
12 experiment
 
13.11.12
13:36
(10) Так не получиться сделать, только через СКД.
13 Mr_Mihail
 
13.11.12
13:43
(11) почему телепатов? разве я что-то недоговариваю? по моему это стандартная операция получения картинки из базы данных. пробовал сохранить файл, получается файл - 0 байт. значение картинки пустое.
14 Cube
 
13.11.12
13:43
(12) Вот это новости... Сам придумал?
15 Mr_Mihail
 
13.11.12
13:44
(12) блин(( скд не вариант.
16 Cube
 
13.11.12
13:44
(13) Вывод - картинку ты получить не можешь. Значит надо научиться получать картинки, а потом уже пытаться их вставлять в макет. Верно?
17 experiment
 
13.11.12
13:46
(14) Нет. Сам пробовал сделать, потом читал форумы, все говорят, что нельзя так сделать. потом только нашел пример как через СКД сделать.
18 experiment
 
13.11.12
13:46
(14)+ И ты сам не можешь сказать как это можно сделать.
19 Mr_Mihail
 
13.11.12
13:46
(16) что значит надо научиться? я об этом и прошу с верхушки ветки подсказать как вытащить картинку из базы
20 Mr_Mihail
 
13.11.12
13:48
(17) можешь ссылочку на пример скинуть? буду очень признателен
21 experiment
 
13.11.12
13:51
(20) Вот ссылка: http://files.mail.ru/YX8DAQ
22 Mr_Mihail
 
13.11.12
13:56
(21) experiment, большое спасибо.
23 Cube
 
13.11.12
13:57
(18) Руки надо выпрямлять! Вот пример, который получает картинку номенклатуры с типом "Картинка" и сохраняет её в файл: http://files.mail.ru/3XMNR8

Код обработки:


&НаКлиенте
Процедура СохранитьКартинку(Команда)
   
   СохранитьКартинкуНаСервере();
   
КонецПроцедуры //СохранитьКартинку()

&НаСервере
Процедура СохранитьКартинкуНаСервере(ПутьДоФайла = "C:\111.jpg")
   
   Картинка = ПолучитьИзВременногоХранилища(ПрисоединенныеФайлы.ПолучитьДанныеФайла(Номенклатура.ФайлКартинки).СсылкаНаДвоичныеДанныеФайла);
   Картинка.Записать(ПутьДоФайла);
   
КонецПроцедуры //СохранитьКартинкуНаСервере()
24 Cube
 
13.11.12
13:57
+(23) Сделано на УТ11.
25 Cube
 
13.11.12
13:57
Затрачено 10 минут.
26 experiment
 
13.11.12
13:59
(23) Тут требуется не сохранить картинку в файл, а вывести ее в отчет. А как сохранить картинку в файл и так понятно.
27 experiment
 
13.11.12
14:03
(26)+ Читай условия задачи правильно, если что не понятно спрашивай, а не стремись делать все за 10 минут.
28 Mr_Mihail
 
13.11.12
14:09
(23) такой вариант увы не подходит(
29 Mr_Mihail
 
13.11.12
14:28
Реализовал таким образом.

Попытка
   ОбластьМакета.Рисунки.D1.Картинка = Новый Картинка(ПолучитьИзВременногоХранилища(ПрисоединенныеФайлы.ПолучитьДанныеФайла(Результат.Номенклатура.ФайлКартинки).СсылкаНаДвоичныеДанныеФайла));
Исключение
КонецПопытки;

Всем спасибо за помощь
30 Cube
 
13.11.12
15:21
(26) (27) Тебе надо опыта поднабраться, чтобы меня носом тыкать в то, в чем ты, пока, не разбираешься. Если б ты был чуть внимательнее, то понял бы, что в (23) решение проблемы (0). Ведь проблема была в том, что ТС не может получить картинку из номенклатуры. Но ты на столько неопытен, что таже после того, как я пожевал, не смог в рот положить и проглотить. Не стоит быть таким самоуверенным...

(28) Ну, а ты хотел, чтобы я за тебя всю работу сделал? Чуть-чуть и самому поработать надо, угу?)) Вот, в (29) смог же применить, значит не все потеряно))
31 experiment
 
13.11.12
15:39
(30) 1. Такой же пример можно легко найти в самой УТ11, в Форме справочника номенклатуры.
2. Зачем мне есть то, что ты уже пожевал. Фууу...
3. Если бы я с тобой не начал спорить ты бы так и не подсказал ТС, как нужно сделать.
4. (28) и (29) один и тот же человек.
32 Mr_Mihail
 
14.11.12
10:15
(30) Полностью с Вами согласен. К правильному решению нужно подойти самому, а то так и в голове ничего не отложиться. Спасибо что помогли с этим вопросом.