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



По теме из базы знаний
Найденные решения
До конца не понял что нужно, но я думаю процедурка поможет
Процедура ЗагрузитьИзображениеНаСервере(Номенклатура)
Путь = "c:\1CDBases\NewPic\Pic\"+СокрЛП(Номенклатура.Код)+".jpg";
Попытка
НачатьТранзакцию();
ФайлИзображения = новый Файл(Путь);
Если ФайлИзображения.Существует() Тогда
ДвоичныеДанные = Новый ДвоичныеДанные(Путь);
АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
Если ЗначениеЗаполнено(Номенклатура.ФайлКартинки) Тогда
ИнформацияОФайле = Новый Структура;
ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище",АдресВременногоХранилищаФайла);
ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста","");
ИнформацияОФайле.Вставить("ИмяБезРасширения" ,ФайлИзображения.ИмяБезРасширения);
ИнформацияОФайле.Вставить("ДатаМодификацииУниверсальная" ,ТекущаяДата());
ИнформацияОФайле.Вставить("Расширение" ,СтрЗаменить(ФайлИзображения.Расширение,".",""));
ПрисоединенныеФайлы.ОбновитьПрисоединенныйФайл(Номенклатура.ФайлКартинки,ИнформацияОФайле);
ЗафиксироватьТранзакцию();
Сообщить("УСПЕШНО загружено изображение в "+Номенклатура);
Иначе
ПрисоединенныйФайл = ПрисоединенныеФайлы.ДобавитьФайл(Номенклатура,ФайлИзображения.ИмяБезРасширения,СтрЗаменить(ФайлИзображения.Расширение,".",""),ТекущаяДата(),ТекущаяДата(),АдресВременногоХранилищаФайла,,"Изображение загружено обработкой по данным файла Excel");
Если ЗначениеЗаполнено(ПрисоединенныйФайл) Тогда
НоменклатураОбъект = Номенклатура.ПолучитьОбъект();
НоменклатураОбъект.ФайлКартинки = ПрисоединенныйФайл;
НоменклатураОбъект.Записать();
ЗафиксироватьТранзакцию();
Сообщить("УСПЕШНО загружено изображение в "+Номенклатура);
Иначе
Сообщить("Не удалось добавить в базу файл "+Путь);
ОтменитьТранзакцию();
КонецЕсли;
КонецЕсли;
Иначе
Сообщить("Файл "+Путь+" не найден");
ОтменитьТранзакцию();
КонецЕсли;
Исключение
Сообщить("При добавлении файла "+Путь+" произошла ошибка "+ОписаниеОшибки());
ОтменитьТранзакцию();
КонецПопытки;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
До конца не понял что нужно, но я думаю процедурка поможет
Процедура ЗагрузитьИзображениеНаСервере(Номенклатура)
Путь = "c:\1CDBases\NewPic\Pic\"+СокрЛП(Номенклатура.Код)+".jpg";
Попытка
НачатьТранзакцию();
ФайлИзображения = новый Файл(Путь);
Если ФайлИзображения.Существует() Тогда
ДвоичныеДанные = Новый ДвоичныеДанные(Путь);
АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
Если ЗначениеЗаполнено(Номенклатура.ФайлКартинки) Тогда
ИнформацияОФайле = Новый Структура;
ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище",АдресВременногоХранилищаФайла);
ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста","");
ИнформацияОФайле.Вставить("ИмяБезРасширения" ,ФайлИзображения.ИмяБезРасширения);
ИнформацияОФайле.Вставить("ДатаМодификацииУниверсальная" ,ТекущаяДата());
ИнформацияОФайле.Вставить("Расширение" ,СтрЗаменить(ФайлИзображения.Расширение,".",""));
ПрисоединенныеФайлы.ОбновитьПрисоединенныйФайл(Номенклатура.ФайлКартинки,ИнформацияОФайле);
ЗафиксироватьТранзакцию();
Сообщить("УСПЕШНО загружено изображение в "+Номенклатура);
Иначе
ПрисоединенныйФайл = ПрисоединенныеФайлы.ДобавитьФайл(Номенклатура,ФайлИзображения.ИмяБезРасширения,СтрЗаменить(ФайлИзображения.Расширение,".",""),ТекущаяДата(),ТекущаяДата(),АдресВременногоХранилищаФайла,,"Изображение загружено обработкой по данным файла Excel");
Если ЗначениеЗаполнено(ПрисоединенныйФайл) Тогда
НоменклатураОбъект = Номенклатура.ПолучитьОбъект();
НоменклатураОбъект.ФайлКартинки = ПрисоединенныйФайл;
НоменклатураОбъект.Записать();
ЗафиксироватьТранзакцию();
Сообщить("УСПЕШНО загружено изображение в "+Номенклатура);
Иначе
Сообщить("Не удалось добавить в базу файл "+Путь);
ОтменитьТранзакцию();
КонецЕсли;
КонецЕсли;
Иначе
Сообщить("Файл "+Путь+" не найден");
ОтменитьТранзакцию();
КонецЕсли;
Исключение
Сообщить("При добавлении файла "+Путь+" произошла ошибка "+ОписаниеОшибки());
ОтменитьТранзакцию();
КонецПопытки;
КонецПроцедуры
Показать
Не могли бы вы помочь начал разбираться что такое 1С Розница 2_3_1_30 и как им пользоваться, пытаюсь добавить картинки по ссылкам из файла через обработку стандартную, все добавляться но возникла проблема. Картинка загружается в Номенклатур столько раз сколько запускалась обработка. подскажите как сделать сравнение и если есть уже такая картинка то ее не загружать
НаименованиеНоменклатуры = СокрЛП(ТекстыЯчеек[2]);
ПутьРисунка = СокрЛП(ТекстыЯчеек[35]);
ФайлИзображения = новый Файл(ПутьРисунка);
ДвоичныеДанные = Новый ДвоичныеДанные(ПутьРисунка);
АдресВременногоХранилищаФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа = ЛОЖЬ
| И Номенклатура.Наименование = &Наименование";
Запрос = Новый Запрос(Текст);
Запрос.УстановитьПараметр("Наименование", НаименованиеНоменклатуры);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() тогда
ПрисоединенныйФайл = ПрисоединенныеФайлы.ДобавитьФайл(Выборка.Ссылка,ФайлИзображения.ИмяБезРасширения,СтрЗаменить(ФайлИзображения.Расширение,".",""),ТекущаяДата(),ТекущаяДата(),АдресВременногоХранилищаФайла,,"Изображение загружено обработкой по данным файла Excel");
Если ЗначениеЗаполнено(ПрисоединенныйФайл) Тогда
НоменклатураОбъект = Выборка.Ссылка.ПолучитьОбъект();
НоменклатураОбъект.ФайлКартинки = ПрисоединенныйФайл;
НоменклатураОбъект.Записать();
Сообщить("УСПЕШНО загружено изображение в "+Выборка.Ссылка);
КонецЕсли;
КонецЕсли;
Показать
Если кому-то вдруг понадобится, рабочий код для обмена с УТ 11.5.11.96 (объекта в базе еще может не быть):
ИмяФайла = ПараметрыОбъекта.Получить("ИмяФайла");
Если ЗначениеЗаполнено(ИмяФайла) Тогда
Файл = Новый Файл(ИмяФайла);
Если Файл.Существует() Тогда
ПрисоединенныйФайлНайден = Ложь;
Если Не Объект.Ссылка.Пустая() Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НоменклатураПрисоединенныеФайлы.Ссылка КАК Ссылка
|ИЗ
| Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураПрисоединенныеФайлы
|ГДЕ
| НоменклатураПрисоединенныеФайлы.ВладелецФайла = &Номенклатура
| И НоменклатураПрисоединенныеФайлы.Наименование = &ИмяБезРасширения
| И НЕ НоменклатураПрисоединенныеФайлы.ПометкаУдаления";
Запрос.УстановитьПараметр("Номенклатура", Объект.Ссылка);
Запрос.УстановитьПараметр("ИмяБезРасширения", Файл.ИмяБезРасширения);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ПрисоединенныйФайлНайден = Истина;
ПрисоединенныйФайл = Выборка.Ссылка;
Если ПрисоединенныйФайл.ДатаМодификацииУниверсальная <> Файл.ПолучитьУниверсальноеВремяИзменения() Тогда
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
ИнформацияОФайле = Новый Структура;
ИнформацияОФайле.Вставить("АдресФайлаВоВременномХранилище", ПоместитьВоВременноеХранилище(ДвоичныеДанные));
ИнформацияОФайле.Вставить("АдресВременногоХранилищаТекста", "");
РаботаСФайлами.ОбновитьФайл(ПрисоединенныйФайл, ИнформацияОФайле);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Не ПрисоединенныйФайлНайден Тогда
СсылкаНаОбъект = Объект.Ссылка;;
Если СсылкаНаОбъект.Пустая() Тогда
СсылкаНаОбъект = Объект.ПолучитьСсылкуНового();
Если СсылкаНаОбъект.Пустая() Тогда
СсылкаНаОбъект = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Объект.Ссылка).ПолучитьСсылку();
Объект.УстановитьСсылкуНового(СсылкаНаОбъект);
КонецЕсли;
КонецЕсли;
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.ВладелецФайлов = СсылкаНаОбъект;
ПараметрыФайла.ВремяИзмененияУниверсальное = Файл.ПолучитьУниверсальноеВремяИзменения();
ПараметрыФайла.ИмяБезРасширения = Файл.ИмяБезРасширения;
ПараметрыФайла.РасширениеБезТочки = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(Файл.Расширение);
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
АдресФайлаВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
ПрисоединенныйФайл = РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресФайлаВоВременномХранилище, "");
Объект.ФайлКартинки = ПрисоединенныйФайл;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот