Как записать картинку в хранилище 1С:Предприятие?
Как записать картинку в хранилище 1С:Предприятие?
Процедура ЗаписатьКартинкуВХранилище(СпрНоменклатура,НайденныйОбъект="") ИмяФайла="D:\123451.jpg"; Хранилище= Новый ХранилищеЗначения (Новый Картинка(ИмяФайла)); Если ТипЗнч(НайденныйОбъект)=Тип("СправочникСсылка.ХранилищеДополнительнойИнформации") Тогда спрХранилище=НайденныйОбъект.ПолучитьОбъект(); Иначе спрХранилище=Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент(); КонецЕсли; спрХранилище.Объект =СпрНоменклатура; спрХранилище.ВидДанных=Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение; спрХранилище.Наименование="Изображение"; спрХранилище.Хранилище=Хранилище; Попытка спрХранилище.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры Функция ПроверкаЕстьЛиКартинка(Объект,НайденныйОбъект) ЕстьКартинка=Ложь; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 | ХранилищеДополнительнойИнформации.Ссылка |ИЗ | Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации |ГДЕ | ХранилищеДополнительнойИнформации.Объект = &Объект | И ХранилищеДополнительнойИнформации.ВидДанных = &ВидДанных"; Запрос.УстановитьПараметр("Объект", Объект); Запрос.УстановитьПараметр("ВидДанных", Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл // Вставить обработку выборки ВыборкаДетальныеЗаписи НайденныйОбъект=ВыборкаДетальныеЗаписи.Ссылка; КонецЦикла; ЕстьКартинка = НЕ Запрос.Выполнить().Пустой(); Возврат ЕстьКартинка; КонецФункции Процедура ВыполнитьЛи() Перем НайденныйОбъект; СпрНоменклатура=Справочники.Номенклатура.НайтиПоКоду("00000025775"); Если СпрНоменклатура=Справочники.Номенклатура.ПустаяСсылка() Тогда Возврат; Иначе //спрХранилище=Справочники.ХранилищеДополнительнойИнформации; ЕстьКартинка = ПроверкаЕстьЛиКартинка(СпрНоменклатура,НайденныйОбъект); Если ЕстьКартинка Тогда Если Вопрос("Картинка существует, заменить?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда ЗаписатьКартинкуВХранилище(СпрНоменклатура,НайденныйОбъект); Иначе Возврат; КонецЕсли; Иначе ЗаписатьКартинкуВХранилище(СпрНоменклатура); КонецЕсли; КонецЕсли; КонецПроцедуры Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. ВыполнитьЛи(); КонецПроцедуры Процедура ПросмотрКартинки() Перем НайденныйОбъект; СпрНоменклатура=Справочники.Номенклатура.НайтиПоКоду("00000025775"); Если СпрНоменклатура=Справочники.Номенклатура.ПустаяСсылка() Тогда Возврат; Иначе ЕстьКартинка = ПроверкаЕстьЛиКартинка(СпрНоменклатура,НайденныйОбъект); Если ЕстьКартинка Тогда ЭлементыФормы.ПросмотрКартинки.Картинка=НайденныйОбъект.Хранилище.Получить(); КонецЕсли; КонецЕсли; КонецПроцедуры Процедура ОсновныеДействияФормыПросмотрКартинки(Кнопка) // Вставить содержимое обработчика. ПросмотрКартинки(); КонецПроцедуры
Может вам будет интересно: Какие бывают регистры сведений 1С:Предприятие 8.2?
Может вам будет интересно: Как отметить флажок в табличной части 1С:Предприятие 8.0, 8.1, 8.2, 8.3, таблицы значений?
Может вам будет интересно: Как создать новую базу 1С:Предприятие 8.2?