загрузка картинки товара программно

1. user1400191 17.06.20 08:31 Сейчас в теме
Есть код, все работает кроме загрузки товара, пишет ошибку При добавлении файла C:\Users\С1\AppData\Local\Temp\v8_3EE0_49.jpg произошла ошибка {ОбщийМодуль.РаботаСФайлами.Модуль(596)}: Ошибка при добавлении присоединенного файла "v8_3EE0_49.jpg":
Не заполнен владелец в файле
"v8_3EE0_49". Пытаюсь заполнить владельца, ничего не получается....
&НаСервере
Процедура СоздатьНоменклатуру()
	chislo = 0;
	
	Для Каждого строка из Объект.Товары Цикл
		
		Если Объект.КлючПоиска = "1" Тогда
			НайденаНоменклатура =  Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",строка.Артикул);
		КонецЕсли;
		
		Если Объект.КлючПоиска = "2" Тогда
			НайденаНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(строка.Наименование);
		КонецЕсли;
		
		//Если Объект.КлючПоиска = "3" Тогда
		//	НайденаНоменклатура = Справочники.Номенклатура.НайтиПоКоду("");
		//КонецЕсли;
		
		Если НайденаНоменклатура.Пустая() Тогда
			НоваяНомеклатура = Справочники.Номенклатура.СоздатьЭлемент();
		Иначе
			Если Объект.ПерезаписатьДубли Тогда
				НоваяНомеклатура = НайденаНоменклатура.ПолучитьОбъект();
			Иначе
				Продолжить;
			КонецЕсли;	
		КонецЕсли;	
		
		НоваяНомеклатура.Наименование = строка.Наименование;
		НоваяНомеклатура.НаименованиеПолное = строка.Наименование;
		НоваяНомеклатура.Артикул = строка.Артикул;
		НоваяНомеклатура.ЕдиницаИзмерения = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(строка.ЕдиницаИзмерения);
		НоваяНомеклатура.ЕдиницаДляОтчетов = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(строка.ЕдиницаИзмерения);
		НоваяНомеклатура.Производитель = НайтиПроизводителя(строка.Производитель);
		НоваяНомеклатура.Родитель = НайтиРодителя(строка.Группа);
		НоваяНомеклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар", Истина);
		ССЫЛКА = строка.Изображение ;
		chislo = chislo + 1; 
		НоваяНомеклатура.Записать();
		сообщить("успешно");
		СтрАдрес = строка.Изображение ;
		ПутьФайла = ПолучитьИмяВременногоФайла("jpg") ;
		КопироватьФайл(СтрАдрес, ПутьФайла );
		
		

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

	КонецЦикла;	
	КонецПроцедуры	

Показать
По теме из базы знаний
Найденные решения
7. Ivanov_OM 38 17.06.20 09:37 Сейчас в теме
(5)У меня вот так работает:
Если Объект.ФайлКартинки.Пустая() Тогда
		ПараметрыФайла = Новый Структура();
		ПараметрыФайла.Вставить("ВладелецФайлов",Объект.Ссылка);
		ПараметрыФайла.Вставить("Автор",ПараметрыСеанса.ТекущийПользователь);
		ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное",ТекущаяДата());
		ПараметрыФайла.Вставить("ИмяБезРасширения",Объект.Наименование);
		ПараметрыФайла.Вставить("РасширениеБезТочки","jpg");
		ПараметрыФайла.Вставить("АдресФайлаВоВременномХранилище",АдресХранилищаИзображения);
		ПараметрыФайла.Вставить("ТекстХранилище","");
		ПрисоединеннаяНоменклатураСсылка = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла,АдресХранилищаИзображения);	
		Объект.ФайлКартинки = ПрисоединеннаяНоменклатураСсылка;
	Иначе
		ИнформацияОФайле = Новый Структура();
		ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище",АдресХранилищаИзображения);
		ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста","");
        ИнформацияОФайле.Вставить("ИмяБезРасширения"              ,Объект.Наименование);
        ИнформацияОФайле.Вставить("ДатаМодификацииУниверсальная"  ,ТекущаяДата());
        ИнформацияОФайле.Вставить("Расширение"                    ,"jpg");
		РаботаСФайлами.ОбновитьФайл(Объект.ФайлКартинки,ИнформацияОФайле);
	КонецЕсли;

Объект - это НоменклатураОбъект
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Kovekh 17.06.20 08:56 Сейчас в теме
(1)Так вы НоваяНоменклатура запишите до попытки-то. У вас ссылка пустая, когда вы передаёте её
ИнформацияОФайле.Вставить("ВладелецФайла", НоваяНомеклатура);

Закомментили же специально)
4. user1400191 17.06.20 09:20 Сейчас в теме
(2) И так и так не работает, комментил чтобы в дургом месте вставить и забыл коментарий удалить. Все равно не работает(
3. user1058740 17.06.20 09:17 Сейчас в теме
У вас переменная НоваяНомеклатура это СправочникОбъект, к тому же до записи еще и не имеет значения Ссылка. Вам нужно сначала создать запись объекта, а затем передавать в поле владелец его ссылку.
5. user1400191 17.06.20 09:30 Сейчас в теме
То есть надо делать та?
ИнформацияОФайле.Вставить("ВладелецФайла", ссылка.НоваяНомеклатура);
А перед этим должно быть
НоваяНомеклатура.Записать();
Правильно понимаю? Я просто новичок.
6. Ivanov_OM 38 17.06.20 09:34 Сейчас в теме
(5)ИнформацияОФайле.Вставить("ВладелецФайла", НоваяНомеклатура.Ссылка);
7. Ivanov_OM 38 17.06.20 09:37 Сейчас в теме
(5)У меня вот так работает:
Если Объект.ФайлКартинки.Пустая() Тогда
		ПараметрыФайла = Новый Структура();
		ПараметрыФайла.Вставить("ВладелецФайлов",Объект.Ссылка);
		ПараметрыФайла.Вставить("Автор",ПараметрыСеанса.ТекущийПользователь);
		ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное",ТекущаяДата());
		ПараметрыФайла.Вставить("ИмяБезРасширения",Объект.Наименование);
		ПараметрыФайла.Вставить("РасширениеБезТочки","jpg");
		ПараметрыФайла.Вставить("АдресФайлаВоВременномХранилище",АдресХранилищаИзображения);
		ПараметрыФайла.Вставить("ТекстХранилище","");
		ПрисоединеннаяНоменклатураСсылка = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла,АдресХранилищаИзображения);	
		Объект.ФайлКартинки = ПрисоединеннаяНоменклатураСсылка;
	Иначе
		ИнформацияОФайле = Новый Структура();
		ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище",АдресХранилищаИзображения);
		ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста","");
        ИнформацияОФайле.Вставить("ИмяБезРасширения"              ,Объект.Наименование);
        ИнформацияОФайле.Вставить("ДатаМодификацииУниверсальная"  ,ТекущаяДата());
        ИнформацияОФайле.Вставить("Расширение"                    ,"jpg");
		РаботаСФайлами.ОбновитьФайл(Объект.ФайлКартинки,ИнформацияОФайле);
	КонецЕсли;

Объект - это НоменклатураОбъект
Показать
9. user1400191 17.06.20 10:07 Сейчас в теме
(7)
Вот сделал так в итоге, ошибка
{ОбщийМодуль.РаботаСФайлами.Модуль(541)}: Значение не является значением объектного типа (Размер)
ПрисоединенныйФайл.Размер = ДвоичныеДанные.Размер();
Вот так выглядит код
ПутьФайла = ПолучитьИмяВременногоФайла("jpg") ;
		КопироватьФайл(СтрАдрес, ПутьФайла );
		АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ПутьФайла);
		
		
		///
		
		
Если НоваяНомеклатура.ФайлКартинки.Пустая() Тогда          
ПараметрыФайла = Новый Структура();
ПараметрыФайла.Вставить("ВладелецФайлов",НоваяНомеклатура.Ссылка);
ПараметрыФайла.Вставить("Автор",ПараметрыСеанса.ТекущийПользователь);
ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное",ТекущаяДата());
ПараметрыФайла.Вставить("ИмяБезРасширения",НоваяНомеклатура.Наименование);
ПараметрыФайла.Вставить("РасширениеБезТочки","jpg");
ПараметрыФайла.Вставить("АдресФайлаВоВременномХранилище",АдресВременногоХранилищаФайла);
ПараметрыФайла.Вставить("ТекстХранилище","");
ПрисоединеннаяНоменклатураСсылка = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла,АдресВременногоХранилищаФайла);
НоваяНомеклатура.ФайлКартинки = ПрисоединеннаяНоменклатураСсылка;
Иначе
ИнформацияОФайле = Новый Структура();
ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище",АдресВременногоХранилищаФайла);
ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста","");
ИнформацияОФайле.Вставить("ИмяБезРасширения" ,НоваяНомеклатура.Наименование);
ИнформацияОФайле.Вставить("ДатаМодификацииУниверсальная" ,ТекущаяДата());
ИнформацияОФайле.Вставить("Расширение" ,"jpg");
РаботаСФайлами.ОбновитьФайл(НоваяНомеклатура.ФайлКартинки,ИнформацияОФайле);
КонецЕсли;
Показать
10. user1400191 17.06.20 10:12 Сейчас в теме
(9)Так я сам дурак, вот правильный и рабочий код, спасибо !!
ФайлИзображения = новый Файл(ПутьФайла);
		Если ФайлИзображения.Существует() Тогда
			ДвоичныеДанные = Новый ДвоичныеДанные(ПутьФайла);
			АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
			КОНЕЦЕСЛИ;

		
		
Если НоваяНомеклатура.ФайлКартинки.Пустая() Тогда          
ПараметрыФайла = Новый Структура();
ПараметрыФайла.Вставить("ВладелецФайлов",НоваяНомеклатура.Ссылка);
ПараметрыФайла.Вставить("Автор",ПараметрыСеанса.ТекущийПользователь);
ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное",ТекущаяДата());
ПараметрыФайла.Вставить("ИмяБезРасширения",НоваяНомеклатура.Наименование);
ПараметрыФайла.Вставить("РасширениеБезТочки","jpg");
ПараметрыФайла.Вставить("АдресФайлаВоВременномХранилище",АдресВременногоХранилищаФайла);
ПараметрыФайла.Вставить("ТекстХранилище","");
ПрисоединеннаяНоменклатураСсылка = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла,АдресВременногоХранилищаФайла);
НоваяНомеклатура.ФайлКартинки = ПрисоединеннаяНоменклатураСсылка;
Иначе
ИнформацияОФайле = Новый Структура();
ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище",АдресВременногоХранилищаФайла);
ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста","");
ИнформацияОФайле.Вставить("ИмяБезРасширения" ,НоваяНомеклатура.Наименование);
ИнформацияОФайле.Вставить("ДатаМодификацииУниверсальная" ,ТекущаяДата());
ИнформацияОФайле.Вставить("Расширение" ,"jpg");
РаботаСФайлами.ОбновитьФайл(НоваяНомеклатура.ФайлКартинки,ИнформацияОФайле);
КонецЕсли;
Показать
8. пользователь 17.06.20 09:42
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

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