Как можно программно загрузить картинку из хранилища значений?

1. evgalex 71 11.03.12 09:38 Сейчас в теме
Добрый день.
Задача: есть внешняя печатная форма для неважно какого документа. Любого. Надо при печати данной формы вставлять в нее картинку,ранее сохраненную пользователем в базу.
Картинку пользователь ранее сохраняет в справочник "Хранилище Дополнительной Информации" и меняет по мере необходимости. То есть, он создает запись этого справочника, загружает картинку - но данная запись не содержит Объект. То есть картинка ни к чему не привязана, болтается сама по себе.
Теперь можно ли программно, зная,что эта картинка занесена в справочник Хранилище информации в,допустим,первой по счету записи, вставить ее в макет печатной формы? Тоесть как добыть ее адрес и вытащить ее из хранилища в нужный момент.
В интернете все перелопатила,но там везде примеры с динамическим созданием нового элемента и присваиванием ему изображения, а у меня изображение уже в справочнике. Только надо его достать, и сделать все это силами одного модуля печатной формы...
Вот так ((
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. DoctorRoza 15.08.12 10:12 Сейчас в теме
(1) evgalex, скажите, пожалуйста, Вы разобрались с выводом картинки? У меня сейчас подобная ситуация, программно создаю на форме страницу с декорацией и хочу на ней вывести картинку. Картинка храниться в справочнике. Вот думаю, как это реализовать, подскажите, как Вы решили свою задачу?
2. xico 70 11.03.12 09:56 Сейчас в теме
Из хранилища можно загрузить данные во временный файл/двоичные данные, а оттуда уже можно загрузить уже в картинку.
3. evgalex 71 11.03.12 10:34 Сейчас в теме
спасибо. я в этом направлении и копаю сейчас.
4. losara1983 6 11.03.12 11:01 Сейчас в теме
ИмяФайла = КаталогВременныхФайлов() + Объект.Наименование;
Объект.Ссылка.Хранилище.Получить().Записать(ИмяФайла);
Картинка = Новый Картинка(ИмяФайла);
letzteKraft; SmArtist; rayastar; Gasilin; CeHbKA; kotyas; +6 Ответить
5. evgalex 71 11.03.12 15:01 Сейчас в теме
6. 1С_Мастер 61 12.03.12 13:05 Сейчас в теме
ИмяФайла = КаталогВременныхФайлов() + Объект.Наименование;
Объект.Ссылка.Хранилище.Получить().Записать(ИмяФайла);
Картинка = Новый Картинка(ИмяФайла);


Более правильным будет использовать метод ПолучитьИмяВременногоФайла()
8. Maldiv 10.10.12 13:35 Сейчас в теме
//Как-то так
Путь = КаталогВременныхФайлов()+ИмяКартинки;
Картинка = Справочник.Хранилище.Получить();
Картинка.Записать(Путь);
9. ejka 57 17.10.12 15:04 Сейчас в теме
Спасибо! Мне тоже весьма помогло! :)
10. kvk98 11 11.11.13 17:05 Сейчас в теме
УТ 10.3 Справочник "Номенклатура", удаляю все картинки у всех элементов:
///////// ///
процедура УдалитьКартинку()

выборка=справочники.Номенклатура.Выбрать();
Пока выборка.Следующий() Цикл

Номенклатура = выборка.Ссылка;
ИзображениеНом = выборка.Ссылка.ОсновноеИзображение;///это объект Спр-к ХранилищеДопИнформации
ИзображениеНом1 = ИзображениеНом.ссылка.получитьОБъект();
ИзображениеНом1.Удалить();

сообщить(" удалена картинка "+номенклатура);

КонецЦикла;

КонецПРоцедуры
11. mrmasson 57 11.11.13 20:53 Сейчас в теме
Зачем ее сохранять?
Если обычная форма, то я делал так (в табличном документе при печати)

  КартинкаДв = Номенклатура.ОсновноеИзображение.Хранилище.Получить(); 
    Если ТипЗнч(КартинкаДв) = ТИп("ДвоичныеДанные") Тогда
        Картинка = Новый Картинка(КартинкаДв);
    Иначе
        Картинка = КартинкаДв;
    КонецЕсли;   													
    Если НЕ  Картинка = Неопределено Тогда	
        Рисунок ТабличныйДокумент.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);                 
        Попытка
            Рисунок.Картинка = Картинка;   					
        Исключение
        КонецПопытки;							
    КонецЕсли;
Показать
user1300191; user1120382; Socradt; myoker; +4 Ответить
12. ogursoft 15.07.14 10:02 Сейчас в теме
А никто не подскажет как получить текст файла картинки? Хочу записать его в xml, чтобы вся инфа была в xml.
13. ogursoft 15.01.15 11:20 Сейчас в теме
Если кому надо, то вот кусок кода как в base64 вывести без внешних файлов (очень удобно для импорта любой программой)

ВыбранноеИзображение = Новый Картинка(ИмяВременногоФайла, Ложь);
			ЭлементыФормы.ПолеКартинки1.Картинка = ВыбранноеИзображение;
			ЭлементыФормы.ПолеКартинки1.Масштабировать = Истина;
			ЭлементыФормы.Надпись1.Значение = Строка(Выборка.ФизЛицо);
			ЗаписьXML.ЗаписатьАтрибут("img", Base64Строка(Картинка.ПолучитьДвоичныеДанные()));

akR00b; Prometeus2011; Светлый ум; Swetlana; +4 Ответить
14. Светлый ум 406 19.09.16 21:43 Сейчас в теме
(13) ogursoft, зачет - воспользовался для выгрузки в XML
15. Светлый ум 406 19.09.16 21:55 Сейчас в теме
Как то пригодилось для кнопки "Сделать основным изображением Номенклатуры":

НомерКартинки=0;
    ИзображениеНоменклатуры = Номенклатура.ОсновноеИзображение.Хранилище.Получить();
    
    ПутьКФайлу = ""+ КаталогВременныхФайлов() + "NomImWS"+НомерКартинки+"."+Строка(ИзображениеНоменклатуры.Формат());
    ИзображениеНоменклатуры.Записать(ПутьКФайлу);
    
    Файл = Новый Файл(ПутьКФайлу);
    Если Файл.Существует() Тогда
        Сообщить("ОК", СтатусСообщения.Обычное); 
        ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлу);
        НомерКартинки=1;
        ИзображениеНоменклатуры = Новый Картинка(ДвоичныеДанные);
        ПутьКФайлу = ""+ КаталогВременныхФайлов() + "NomImWS"+НомерКартинки+"."+Строка(ИзображениеНоменклатуры.Формат());
        Попытка
            ИзображениеНоменклатуры.Записать(ПутьКФайлу);
            Сообщить(ПутьКФайлу, СтатусСообщения.Обычное); 
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
    Иначе
        Сообщить("Не ОК", СтатусСообщения.Обычное); 
    КонецЕсли;
Показать


т.е.
1. Сохранил на диск картинку из спр. номенклатуры
2. Преобразовал её в двоичные данные
3. Сохранил эти двоичные данные как картинку с другим именем
Mechanik21; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот