Загрузка изображения программно в 1с вариант 1
Для этого будем использовать стандартную процедуру общего модуля
РаботаСФайламиСлужебныйКлиент.ДобавитьФайлыРасширениеПредложено
Создаем внешнюю обработку. На форму добавляем реквзит номенклатура (тип справочникСсылка.номенклатура)
Делаем кнопку "добавить фото".
На кнопку вешаем эту процедуру.
&НаКлиенте
Процедура добавить(Команда)
Параметрыф=новый Структура;
Параметрыф.Вставить("фильтр","все картинки");
Параметрыф.Вставить("ПолноеИмяФайла","d:\sisadmin.jpg"); \\ путь до нужной картинки относительно клиента
Параметрыф.Вставить("ВладелецФайла",Объект.номенклатура); \\ номенклатура, владелец картинки
Параметрыф.Вставить("ИдентификаторФормы",новый УникальныйИдентификатор);
Параметрыф.Вставить("ГруппаФайлов",неопределено);
РаботаСФайламиСлужебныйКлиент.ДобавитьФайлыРасширениеПредложено(истина,Параметрыф);
КонецПроцедуры
В других конфигурациях думаю в глобальном модуле есть такая же или похожая процедура.
Загрузка изображения программно в 1с вариант 2
Бывают ситуации когда нужно загрузить картинки в справочник номенклатура с сервера. Процедура, приведенная ниже, работает в УНФ и УТ точно.
//номенклатура - ссылка на спрНоменклатура //путь - путь относительно сервера!!! к картинке &НаСервере Процедура ЗагрузитьКартинкуНаСервере(Номенклатура, Путь) Попытка НачатьТранзакцию(); ФайлИзображения = новый Файл(Путь); Если ФайлИзображения.Существует() Тогда ДвоичныеДанные = Новый ДвоичныеДанные(Путь); АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные); Если ЗначениеЗаполнено(Номенклатура.ФайлКартинки) Тогда ИнформацияОФайле = Новый Структура; ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище",АдресВременногоХранилищаФайла); ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста",""); ИнформацияОФайле.Вставить("ИмяБезРасширения" ,ФайлИзображения.ИмяБезРасширения); ИнформацияОФайле.Вставить("ДатаМодификацииУниверсальная" ,ТекущаяДата()); ИнформацияОФайле.Вставить("Расширение" ,СтрЗаменить(ФайлИзображения.Расширение,".","")); ПрисоединенныеФайлы.ОбновитьПрисоединенныйФайл(Номенклатура.ФайлКартинки,ИнформацияОФайле); ЗафиксироватьТранзакцию(); Сообщить("УСПЕШНО загружено изображение в "+Номенклатура); Иначе ПрисоединенныйФайл = ПрисоединенныеФайлы.ДобавитьФайл(Номенклатура,ФайлИзображения.ИмяБезРасширения,СтрЗаменить(ФайлИзображения.Расширение,".",""),ТекущаяДата(),ТекущаяДата(),АдресВременногоХранилищаФайла,,"Изображение загружено обработкой по данным файла Excel"); Если ЗначениеЗаполнено(ПрисоединенныйФайл) Тогда НоменклатураОбъект = Номенклатура.ПолучитьОбъект(); НоменклатураОбъект.ФайлКартинки = ПрисоединенныйФайл; НоменклатураОбъект.Записать(); ЗафиксироватьТранзакцию(); Сообщить("УСПЕШНО загружено изображение в "+Номенклатура); Иначе Сообщить("Не удалось добавить в базу файл "+Путь); ОтменитьТранзакцию(); КонецЕсли; КонецЕсли; Иначе Сообщить("Файл "+Путь+" не найден"); ОтменитьТранзакцию(); КонецЕсли; Исключение Сообщить("При добавлении файла "+Путь+" произошла ошибка "+ОписаниеОшибки()); ОтменитьТранзакцию(); КонецПопытки; КонецПроцедуры