Есть код, все работает кроме загрузки товара, пишет ошибку При добавлении файла C:\Users\С1\AppData\Local\Temp\v8_3EE0_49.jpg произошла ошибка {ОбщийМодуль.РаботаСФайлами.Модуль(596)}: Ошибка при добавлении присоединенного файла "v8_3EE0_49.jpg":
Не заполнен владелец в файле
"v8_3EE0_49". Пытаюсь заполнить владельца, ничего не получается....
Не заполнен владелец в файле
"v8_3EE0_49". Пытаюсь заполнить владельца, ничего не получается....
&НаСервере
Процедура СоздатьНоменклатуру()
chislo = 0;
Для Каждого строка из Объект.Товары Цикл
Если Объект.КлючПоиска = "1" Тогда
НайденаНоменклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",строка.Артикул);
КонецЕсли;
Если Объект.КлючПоиска = "2" Тогда
НайденаНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(строка.Наименование);
КонецЕсли;
//Если Объект.КлючПоиска = "3" Тогда
// НайденаНоменклатура = Справочники.Номенклатура.НайтиПоКоду("");
//КонецЕсли;
Если НайденаНоменклатура.Пустая() Тогда
НоваяНомеклатура = Справочники.Номенклатура.СоздатьЭлемент();
Иначе
Если Объект.ПерезаписатьДубли Тогда
НоваяНомеклатура = НайденаНоменклатура.ПолучитьОбъект();
Иначе
Продолжить;
КонецЕсли;
КонецЕсли;
НоваяНомеклатура.Наименование = строка.Наименование;
НоваяНомеклатура.НаименованиеПолное = строка.Наименование;
НоваяНомеклатура.Артикул = строка.Артикул;
НоваяНомеклатура.ЕдиницаИзмерения = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(строка.ЕдиницаИзмерения);
НоваяНомеклатура.ЕдиницаДляОтчетов = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоНаименованию(строка.ЕдиницаИзмерения);
НоваяНомеклатура.Производитель = НайтиПроизводителя(строка.Производитель);
НоваяНомеклатура.Родитель = НайтиРодителя(строка.Группа);
НоваяНомеклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товар", Истина);
ССЫЛКА = строка.Изображение ;
chislo = chislo + 1;
НоваяНомеклатура.Записать();
сообщить("успешно");
СтрАдрес = строка.Изображение ;
ПутьФайла = ПолучитьИмяВременногоФайла("jpg") ;
КопироватьФайл(СтрАдрес, ПутьФайла );
//// вот тут начинаю работать с картинкой
Попытка
НачатьТранзакцию();
ФайлИзображения = новый Файл(ПутьФайла);
Если ФайлИзображения.Существует() Тогда
ДвоичныеДанные = Новый ДвоичныеДанные(ПутьФайла);
АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
Если ЗначениеЗаполнено(НоваяНомеклатура.ФайлКартинки) Тогда
ИнформацияОФайле = Новый Структура;
ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище",АдресВременногоХранилищаФайла);
ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста","");
ИнформацияОФайле.Вставить("ИмяБезРасширения" ,ФайлИзображения.ИмяБезРасширения);
ИнформацияОФайле.Вставить("ДатаМодификацииУниверсальная" ,ТекущаяДата());
ИнформацияОФайле.Вставить("Расширение" ,СтрЗаменить(ФайлИзображения.Расширение,".",""));
ИнформацияОФайле.Вставить("ВладелецФайла", НоваяНомеклатура);
ПрисоединенныеФайлы.ОбновитьПрисоединенныйФайл(НоваяНомеклатура.ФайлКартинки,ИнформацияОФайле);
ЗафиксироватьТранзакцию();
Сообщить("УСПЕШНО загружено изображение в "+НоваяНомеклатура);
Иначе
ПрисоединенныйФайл = ПрисоединенныеФайлы.ДобавитьФайл(НоваяНомеклатура,ФайлИзображения.ИмяБезРасширения,СтрЗаменить(ФайлИзображения.Расширение,".",""),ТекущаяДата(),ТекущаяДата(),АдресВременногоХранилищаФайла,"Изображение загружено обработкой по данным файла Excel");
Если ЗначениеЗаполнено(ПрисоединенныйФайл) Тогда
НоменклатураОбъект = НоваяНомеклатура.ПолучитьОбъект();
НоменклатураОбъект.ФайлКартинки = ПрисоединенныйФайл;
НоменклатураОбъект.Записать();
ЗафиксироватьТранзакцию();
Сообщить("УСПЕШНО загружено изображение в "+НоваяНомеклатура);
Иначе
Сообщить("Не удалось добавить в базу файл "+ПутьФайла);
ОтменитьТранзакцию();
КонецЕсли;
КонецЕсли;
Иначе
Сообщить("Файл "+ПутьФайла+" не найден");
ОтменитьТранзакцию();
КонецЕсли;
Исключение
Сообщить("При добавлении файла "+ПутьФайла+" произошла ошибка "+ОписаниеОшибки());
ОтменитьТранзакцию();
КонецПопытки;
КонецЦикла;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки
- И снова "Как сжать картинки для экспорта в EXCEL?" или Умная картинка 8.2
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2
- Загрузка номенклатуры из Битрикс
- Отображение картинки товара в табличной части документа
Найденные решения
(5)У меня вот так работает:
Если Объект.ФайлКартинки.Пустая() Тогда
ПараметрыФайла = Новый Структура();
ПараметрыФайла.Вставить("ВладелецФайлов",Объект.Ссылка);
ПараметрыФайла.Вставить("Автор",ПараметрыСеанса.ТекущийПользователь);
ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное",ТекущаяДата());
ПараметрыФайла.Вставить("ИмяБезРасширения",Объект.Наименование);
ПараметрыФайла.Вставить("РасширениеБезТочки","jpg");
ПараметрыФайла.Вставить("АдресФайлаВоВременномХранилище",АдресХранилищаИзображения);
ПараметрыФайла.Вставить("ТекстХранилище","");
ПрисоединеннаяНоменклатураСсылка = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла,АдресХранилищаИзображения);
Объект.ФайлКартинки = ПрисоединеннаяНоменклатураСсылка;
Иначе
ИнформацияОФайле = Новый Структура();
ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище",АдресХранилищаИзображения);
ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста","");
ИнформацияОФайле.Вставить("ИмяБезРасширения" ,Объект.Наименование);
ИнформацияОФайле.Вставить("ДатаМодификацииУниверсальная" ,ТекущаяДата());
ИнформацияОФайле.Вставить("Расширение" ,"jpg");
РаботаСФайлами.ОбновитьФайл(Объект.ФайлКартинки,ИнформацияОФайле);
КонецЕсли;
Объект - это НоменклатураОбъект
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)У меня вот так работает:
Если Объект.ФайлКартинки.Пустая() Тогда
ПараметрыФайла = Новый Структура();
ПараметрыФайла.Вставить("ВладелецФайлов",Объект.Ссылка);
ПараметрыФайла.Вставить("Автор",ПараметрыСеанса.ТекущийПользователь);
ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное",ТекущаяДата());
ПараметрыФайла.Вставить("ИмяБезРасширения",Объект.Наименование);
ПараметрыФайла.Вставить("РасширениеБезТочки","jpg");
ПараметрыФайла.Вставить("АдресФайлаВоВременномХранилище",АдресХранилищаИзображения);
ПараметрыФайла.Вставить("ТекстХранилище","");
ПрисоединеннаяНоменклатураСсылка = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла,АдресХранилищаИзображения);
Объект.ФайлКартинки = ПрисоединеннаяНоменклатураСсылка;
Иначе
ИнформацияОФайле = Новый Структура();
ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище",АдресХранилищаИзображения);
ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста","");
ИнформацияОФайле.Вставить("ИмяБезРасширения" ,Объект.Наименование);
ИнформацияОФайле.Вставить("ДатаМодификацииУниверсальная" ,ТекущаяДата());
ИнформацияОФайле.Вставить("Расширение" ,"jpg");
РаботаСФайлами.ОбновитьФайл(Объект.ФайлКартинки,ИнформацияОФайле);
КонецЕсли;
Объект - это НоменклатураОбъект
Показать
(7)
Вот сделал так в итоге, ошибка
{ОбщийМодуль.РаботаСФайлами.Модуль(541)}: Значение не является значением объектного типа (Размер)
ПрисоединенныйФайл.Размер = ДвоичныеДанные.Размер();
Вот так выглядит код
Вот сделал так в итоге, ошибка
{ОбщийМодуль.РаботаСФайлами.Модуль(541)}: Значение не является значением объектного типа (Размер)
ПрисоединенныйФайл.Размер = ДвоичныеДанные.Размер();
Вот так выглядит код
ПутьФайла = ПолучитьИмяВременногоФайла("jpg") ;
КопироватьФайл(СтрАдрес, ПутьФайла );
АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ПутьФайла);
///
Если НоваяНомеклатура.ФайлКартинки.Пустая() Тогда
ПараметрыФайла = Новый Структура();
ПараметрыФайла.Вставить("ВладелецФайлов",НоваяНомеклатура.Ссылка);
ПараметрыФайла.Вставить("Автор",ПараметрыСеанса.ТекущийПользователь);
ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное",ТекущаяДата());
ПараметрыФайла.Вставить("ИмяБезРасширения",НоваяНомеклатура.Наименование);
ПараметрыФайла.Вставить("РасширениеБезТочки","jpg");
ПараметрыФайла.Вставить("АдресФайлаВоВременномХранилище",АдресВременногоХранилищаФайла);
ПараметрыФайла.Вставить("ТекстХранилище","");
ПрисоединеннаяНоменклатураСсылка = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла,АдресВременногоХранилищаФайла);
НоваяНомеклатура.ФайлКартинки = ПрисоединеннаяНоменклатураСсылка;
Иначе
ИнформацияОФайле = Новый Структура();
ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище",АдресВременногоХранилищаФайла);
ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста","");
ИнформацияОФайле.Вставить("ИмяБезРасширения" ,НоваяНомеклатура.Наименование);
ИнформацияОФайле.Вставить("ДатаМодификацииУниверсальная" ,ТекущаяДата());
ИнформацияОФайле.Вставить("Расширение" ,"jpg");
РаботаСФайлами.ОбновитьФайл(НоваяНомеклатура.ФайлКартинки,ИнформацияОФайле);
КонецЕсли;
Показать
(9)Так я сам дурак, вот правильный и рабочий код, спасибо !!
ФайлИзображения = новый Файл(ПутьФайла);
Если ФайлИзображения.Существует() Тогда
ДвоичныеДанные = Новый ДвоичныеДанные(ПутьФайла);
АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
КОНЕЦЕСЛИ;
Если НоваяНомеклатура.ФайлКартинки.Пустая() Тогда
ПараметрыФайла = Новый Структура();
ПараметрыФайла.Вставить("ВладелецФайлов",НоваяНомеклатура.Ссылка);
ПараметрыФайла.Вставить("Автор",ПараметрыСеанса.ТекущийПользователь);
ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное",ТекущаяДата());
ПараметрыФайла.Вставить("ИмяБезРасширения",НоваяНомеклатура.Наименование);
ПараметрыФайла.Вставить("РасширениеБезТочки","jpg");
ПараметрыФайла.Вставить("АдресФайлаВоВременномХранилище",АдресВременногоХранилищаФайла);
ПараметрыФайла.Вставить("ТекстХранилище","");
ПрисоединеннаяНоменклатураСсылка = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла,АдресВременногоХранилищаФайла);
НоваяНомеклатура.ФайлКартинки = ПрисоединеннаяНоменклатураСсылка;
Иначе
ИнформацияОФайле = Новый Структура();
ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище",АдресВременногоХранилищаФайла);
ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста","");
ИнформацияОФайле.Вставить("ИмяБезРасширения" ,НоваяНомеклатура.Наименование);
ИнформацияОФайле.Вставить("ДатаМодификацииУниверсальная" ,ТекущаяДата());
ИнформацияОФайле.Вставить("Расширение" ,"jpg");
РаботаСФайлами.ОбновитьФайл(НоваяНомеклатура.ФайлКартинки,ИнформацияОФайле);
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот