Картинка в справочнике 1С8.2

Новая тема
"Пишу конфу для учета сотовых в СЦ,столкнулся с проблемой вывода картинки изделия на форме справочника воспользовался синтаксис помошником и взял код

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл с фотографией";
Диалог.ПолноеИмяФайла = """";
Диалог.ПредварительныйПросмотр = Истина;
Диалог.Фильтр =
"Все картинки (*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf)|*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf|"
+ "Формат bmp (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|"
+ "Формат JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|"
+ "Формат TIFF (*.tif)|*.tif|"
+ "Формат GIF (*.gif)|*.gif|"
+ "Формат PNG (*.png)|*.png|"
+ "Формат icon (*.ico)|*.ico|"
+ "Формат метафайл (*.wmf;*.emf)|*.wmf;*.emf|"; // картинки

Если Диалог.Выбрать() Тогда
   ВыбранноеФото = Новый Картинка(Диалог.ПолноеИмяФайла,Ложь);
   ЭлементыФормы.ПолеИзображения.Картинка = ВыбранноеФото;
Иначе
   Отказ = Истина;
   Возврат;
КонецЕсли;

Картинка отображается но после записи не сохраняется,может кто подскажет что делать?"
Не знаю как в 8.2, а в 8.1 было 2 варианта:
1. Двинуть картинку в папку на сервер и дать её уникальное имя. Путь сохранить в справочнике и выводить использую эти данные.
2. Через ПолучитьДвоичныеДанные и ХранилищеЗначения сохранить в реквизит справочника. Для вывода использовать обратную процедуру :)
А если этих картинок будет много то как быть?Возможен такой вариант как в семерке,сейчас точно не помню как пишется но что-то вроде так(каталогИБ\*.jpeg\+код+)!
Вопрос не ясен.
Картинку вы уже выбрали. Проблема была в том, что она не сохраняется. Как сохранить - я написал. А что вы пытались сказать - не ясно.
Допустим,я выбираю из справочника  уже сохраненную модель телефона а в ПолеКартинка появится не та картинка что я сохранил, как конфа будет выбирать именно эту картинку? ведь при сохранении справочника сохраняется  код,наименование и родитель!
> Допустим,я выбираю из справочника  уже сохраненную модель телефона а в ПолеКартинка появится не та картинка что я сохранил, как конфа будет выбирать именно эту картинку?
По пути из реквизита или из реквизита восстановив из Хранилища
> ведь при сохранении справочника сохраняется  код,наименование и родитель!
А реквизиты по вашему не сохраняются???
"ерем  РаботаСФайлами;
 Процедура ОсновноеИзображениеНажатие(Элемент)
 // Вставить содержимое обработчика.
 Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл с фотографией";
Диалог.ПолноеИмяФайла = """";
Диалог.ПредварительныйПросмотр = Истина;
Диалог.Фильтр =
"Все картинки (*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf)|*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf|"
+ "Формат bmp (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|"
+ "Формат JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|"
+ "Формат TIFF (*.tif)|*.tif|"
+ "Формат GIF (*.gif)|*.gif|"
+ "Формат PNG (*.png)|*.png|"
+ "Формат icon (*.ico)|*.ico|"
+ "Формат метафайл (*.wmf;*.emf)|*.wmf;*.emf|"; // картинки

Если Диалог.Выбрать() Тогда
   ВыбранноеФото = Новый Картинка(Диалог.ПолноеИмяФайла,Ложь);
   ЭлементыФормы.ОсновноеИзображение.Картинка = ВыбранноеФото;
Иначе
   Отказ = Истина;
   Возврат;
КонецЕсли;



Хранилище = Новый ХранилищеЗначения(ОсновноеИзображение);

// сохранение значения типа ХранилищеЗначения в базе данных
НовНоменклатура = Справочники.Модель.СоздатьЭлемент();
НовНоменклатура.Наименование = "Диван """"Маргарита""""";
// реквизит Изображение имеет тип ХранилищеЗначения
НовНоменклатура.ОсновноеИзображение = ОсновноеИзображение;
НовНоменклатура.Записать();
// выгрузка значения типа ДвоичныеДанные из хранилища значений в файл
ИмяФайла = "C:\Мои документы\Картинка2.bmp";
НовНоменклатура.ОсновноеИзображение.Получить().Записать(ИмяФайла);

КонецПроцедуры


Как из всего это вызвать картинку в поле изображения я не знаю или делаю что-то не то подскажите уже задолбало"
"{Справочник.Модель.Форма.ФормаЭлемента(29)}: Значение не является значением объектного типа (Изображение)
Картинка = РегистрСведенийМенеджерЗаписи.Изображение.Получить();
Как это понять?"
"Выбор картинки оставляем как есть, а вот дальше:
>
> Хранилище = Новый ХранилищеЗначения(ОсновноеИзображение);
Интересный вопрос, а что такое у вас "ОсновноеИзображение"? На форме лежит ПолеКартинка, данных у неё нет, и где определяется "ОсновноеИзображение" не ясно. Я написал так:
Хранилище = Новый ХранилищеЗначения(ЭлементыФормы.ОсновноеИзображение.Картинка.ПолучитьДвоичныеДанные());
>
> // сохранение значения типа ХранилищеЗначения в базе данных
> НовНоменклатура = Справочники.Модель.СоздатьЭлемент();
> НовНоменклатура.Наименование = "Диван """"Маргарита""""";
> // реквизит Изображение имеет тип ХранилищеЗначения
Это оставим, а дальше - не верно:
> НовНоменклатура.ОсновноеИзображение = ОсновноеИзображение;
Должно бы быть так:
НовНоменклатура.ОсновноеИзображение = Хранилище;
> НовНоменклатура.Записать();

Зачем следующее - мне не понятно.
> // выгрузка значения типа ДвоичныеДанные из хранилища значений в файл
> ИмяФайла = "C:\Мои документы\Картинка2.bmp";
> НовНоменклатура.ОсновноеИзображение.Получить().Записать(ИмяФайла);
>

> КонецПроцедуры

Итак - Сохранение сделано. Теперь восстановление: (предположим на форме лежит ПолеКартинки1):

Процедура ПоказатьКартинку (пНоменклатура)
      Если ТипЗнч(пНоменклатура.ОсновноеИзображение) = Тип("ХранилищеЗначения") Тогда
ЭлементыФормы.ПолеКартинки1.Картинка = Новый Картинка (пНоменклатура.ОсновноеИзображение.Получить());
КонецЕсли;
КонецПроцедуры

Все. При этом картинка храниться в базе.

з.ы. Все это на 8.1, учитывая следующее сообщение, возможно что-то надо переделать под 8.2 (может нет у него типа Картинка, а теперь тип Изображение и тогда надо смотреть его свойства, конструкторы, методы)"
"Не знаю что такой тип Изображение - это уже видимо свойства 8.2.
В случае с 8.1 ругань про картинку. А у картинки есть конструктор:

Картинка = Новый Картинка(РегистрСведенийМенеджерЗаписи.Изображение.Получить());"
Читают тему
(гостей: 1)

Быстрый переход