profile="http://gmpg.org/xfn/11"> Как записать картинку в хранилище 1С:Предприятие? | Разработчику о работе с 1С:Предприятие, Pascal, Паскаль

Как записать картинку в хранилище 1С:Предприятие?

Как записать картинку в хранилище 1С:Предприятие?

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

Функция  ПроверкаЕстьЛиКартинка(Объект,НайденныйОбъект)
	ЕстьКартинка=Ложь;
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
	|	ХранилищеДополнительнойИнформации.Ссылка
	|ИЗ
	|	Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
	|ГДЕ
	|	ХранилищеДополнительнойИнформации.Объект = &Объект
	|	И ХранилищеДополнительнойИнформации.ВидДанных = &ВидДанных";

	Запрос.УстановитьПараметр("Объект", Объект);
	Запрос.УстановитьПараметр("ВидДанных", Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение);

	Результат = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = Результат.Выбрать();

	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		// Вставить обработку выборки ВыборкаДетальныеЗаписи
		НайденныйОбъект=ВыборкаДетальныеЗаписи.Ссылка;
	КонецЦикла;

	ЕстьКартинка = НЕ Запрос.Выполнить().Пустой();

	Возврат ЕстьКартинка;
КонецФункции

Процедура ВыполнитьЛи()
	Перем НайденныйОбъект;
	СпрНоменклатура=Справочники.Номенклатура.НайтиПоКоду("00000025775");
	Если СпрНоменклатура=Справочники.Номенклатура.ПустаяСсылка() Тогда
		Возврат;
	Иначе
		//спрХранилище=Справочники.ХранилищеДополнительнойИнформации;
		ЕстьКартинка = ПроверкаЕстьЛиКартинка(СпрНоменклатура,НайденныйОбъект);
		Если ЕстьКартинка Тогда
			Если Вопрос("Картинка существует, заменить?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда
				ЗаписатьКартинкуВХранилище(СпрНоменклатура,НайденныйОбъект);
			Иначе
				Возврат;
			КонецЕсли;
		Иначе
			ЗаписатьКартинкуВХранилище(СпрНоменклатура);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

Процедура КнопкаВыполнитьНажатие(Кнопка)
	// Вставить содержимое обработчика.
	ВыполнитьЛи();
КонецПроцедуры

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

Процедура ОсновныеДействияФормыПросмотрКартинки(Кнопка)
	// Вставить содержимое обработчика.
	ПросмотрКартинки();
КонецПроцедуры

Может вам будет интересно: Какие бывают регистры сведений 1С:Предприятие 8.2?
Может вам будет интересно: Как отметить флажок в табличной части 1С:Предприятие 8.0, 8.1, 8.2, 8.3, таблицы значений?
Может вам будет интересно: Как создать новую базу 1С:Предприятие 8.2?

Комментарии запрещены.