Добавить изображение в карточку номенклатуры программно

1. elenakutsenko 02.08.19 13:40 Сейчас в теме
Не могли бы Вы, пожалуйста, помочь.
Как добавить программно изображение в карточку номенклатуры?
При нажатие кнопки Команда1 во внешней обработке (в табличной части выбирается номенклатура и подставляется ссылка вручную) для номенклатуры в карточку подставлялось бы изображение по ссылке, как на 3-й картинке.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
2. rboy 02.08.19 14:18 Сейчас в теме
До конца не понял что нужно, но я думаю процедурка поможет


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

КонецПроцедуры
Показать
solutioncp24; evn-zorin; Razlagutt; tsatsur; aleksandr2572; elenakutsenko; +6 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. rboy 02.08.19 14:18 Сейчас в теме
До конца не понял что нужно, но я думаю процедурка поможет


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

КонецПроцедуры
Показать
solutioncp24; evn-zorin; Razlagutt; tsatsur; aleksandr2572; elenakutsenko; +6 Ответить
4. elenakutsenko 06.08.19 13:12 Сейчас в теме
(2)Спасибо Вам большое за Вашу помощь. Ваш код сработал так, как нужно. Спасибо!
3. rboy 02.08.19 14:19 Сейчас в теме
Это для УТ11
aleksandr2572; elenakutsenko; +2 Ответить
6. Max777 1 18.04.22 13:16 Сейчас в теме
(2)Добрый день!
Мы сейчас решаем почти аналогичную задачу, могли бы нам помочь с ней, за оплату через инфостарт.
Напишите, пожалуйста, в личные сообщения.
5. aleksandr2572 04.12.19 05:21 Сейчас в теме
Не могли бы вы помочь начал разбираться что такое 1С Розница 2_3_1_30 и как им пользоваться, пытаюсь добавить картинки по ссылкам из файла через обработку стандартную, все добавляться но возникла проблема. Картинка загружается в Номенклатур столько раз сколько запускалась обработка. подскажите как сделать сравнение и если есть уже такая картинка то ее не загружать

 НаименованиеНоменклатуры = СокрЛП(ТекстыЯчеек[2]);
 ПутьРисунка = СокрЛП(ТекстыЯчеек[35]);
 
 ФайлИзображения = новый Файл(ПутьРисунка);
 ДвоичныеДанные = Новый ДвоичныеДанные(ПутьРисунка);
 АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
 
 Текст = 
 "ВЫБРАТЬ
 |    Номенклатура.Ссылка КАК Ссылка,
 |    Номенклатура.Наименование КАК Наименование,
 |    Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
 |    Номенклатура.ЭтоГруппа КАК ЭтоГруппа
 |ИЗ
 |    Справочник.Номенклатура КАК Номенклатура
 |ГДЕ
 |    Номенклатура.ЭтоГруппа = ЛОЖЬ
 |    И Номенклатура.Наименование = &Наименование";
  Запрос = Новый Запрос(Текст);
  Запрос.УстановитьПараметр("Наименование", НаименованиеНоменклатуры);
  Выборка = Запрос.Выполнить().Выбрать();
  Если Выборка.Следующий() тогда
    ПрисоединенныйФайл = ПрисоединенныеФайлы.ДобавитьФайл(Выборка.Ссылка,ФайлИзображения.ИмяБезРасширения,СтрЗаменить(ФайлИзображения.Расширение,".",""),ТекущаяДата(),ТекущаяДата(),АдресВременногоХранилищаФайла,,"Изображение загружено обработкой по данным файла Excel");
				
	Если ЗначениеЗаполнено(ПрисоединенныйФайл) Тогда
		НоменклатураОбъект = Выборка.Ссылка.ПолучитьОбъект();
		НоменклатураОбъект.ФайлКартинки = ПрисоединенныйФайл;
		НоменклатураОбъект.Записать();
		Сообщить("УСПЕШНО загружено изображение в "+Выборка.Ссылка);
	КонецЕсли;
КонецЕсли;
Показать
7. nekit_rdx 215 04.08.23 14:39 Сейчас в теме
Если кому-то вдруг понадобится, рабочий код для обмена с УТ 11.5.11.96 (объекта в базе еще может не быть):

ИмяФайла = ПараметрыОбъекта.Получить("ИмяФайла");

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

	КонецЕсли;
	
КонецЕсли;
Показать
8. Miket78 23 02.12.23 12:57 Сейчас в теме
(7) Спасибо, пригодилось. Код рабочий для 11.5
simuljakr; +1 Ответить
Оставьте свое сообщение

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