Программная загрузка картинки номенклатуры

1. pkv11 18 22.05.12 14:32 Сейчас в теме
Уважаемые форумчане помогите решить проблему.
Не пойму как загрузить картинку в карточку номенклатуры. Конфигурация УТ11.
На просторах сети ничего подобного найти не удалось(.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. 32325 22.05.12 14:37 Сейчас в теме
(1) pkv11, Заходишь в карточку номенклатуры, справа есть окошко(внутри написано:добавить изображение), кликаешь на него и добавляешь картинку, а над окошком есть кнопки управления изображением
4. pkv11 18 22.05.12 14:45 Сейчас в теме
(2) 32325, спасибо конечно :)
но интересует программная загрузка картинок.

(3) ediks, по поиску искал - не нашел, а если есть у Вас данная книга, то был бы рад тому коду.
6. ediks 335 22.05.12 15:34 Сейчас в теме
(4) Книга у меня в бумажном виде :)
Работающие примеры загрузки картинок из инета можно посмотреть в (5) или скачать мою конфигурацию Конфигурация "Статистика на Инфостарте". Управляемые формы.Там много загрузок картинок :)
7. pkv11 18 22.05.12 15:37 Сейчас в теме
(6) ediks, (5) aristar, благодарю!
Буду пробовать.
3. ediks 335 22.05.12 14:39 Сейчас в теме
(1) В книге "Разработка управляемого интерфейса" есть глава посвященная работе с картинками. В том числе и загрузка. По-моему, была и публикация здесь на эту тему.
13. Поручик 4674 23.05.12 11:05 Сейчас в теме
(1) Плохо искал
Загрузка изображения из буфера обмена или файла для номенклатуры (Управление торговлей 11, УНФ 1.2/1.3/1.4, Розница 2)
http://infostart.ru/public/81133/
14. pkv11 18 23.05.12 11:53 Сейчас в теме
(13) Поручик, подскажи, пожалуйста, основной код.
15. Поручик 4674 23.05.12 11:57 Сейчас в теме
(14) Код зависит от версии УТ 11, так как в разных релизах разный подход, набор общих модулей и процедур.
16. pkv11 18 23.05.12 12:01 Сейчас в теме
(15) Поручик, пробую для УТ11.0.8.8
17. Поручик 4674 23.05.12 13:00 Сейчас в теме
(16) Обработчик кнопки Записать, и дальше смотрим процедуры.
8. pkv11 18 23.05.12 10:37 Сейчас в теме
(5) aristar, (5) aristar,
в отладчике доходит до момента:
ДопХар = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();

Посмотрел в конфигураторе - действительно нет такого справочника...
9. aristar 41 23.05.12 10:43 Сейчас в теме
(8) я так подозреваю, что это справочник для хранения дополнительных характеристик ПВХ.
10. pkv11 18 23.05.12 10:58 Сейчас в теме
(9) aristar, тогда как всё-таки картинку загрузить?
11. aristar 41 23.05.12 11:01 Сейчас в теме
12. Поручик 4674 23.05.12 11:05 Сейчас в теме
(11) Порожняк гонишь, по ссылке для УТ 10.3.
18. pkv11 18 23.05.12 16:52 Сейчас в теме
Сделал вот так:
	КартинкаСсылка = Справочники.НоменклатураПрисоединенныеФайлы.ПустаяСсылка();
	Если Не ТоварКартинка = Неопределено или не ТоварКартинка = "" Тогда
		Если КартинкаСсылка.Пустая() Тогда
			КартинкаСсылка = Справочники.НоменклатураПрисоединенныеФайлы.НайтиПоНаименованию(НоменклатураОбъект.Код);
		КонецЕсли;
		Если КартинкаСсылка.Пустая() Тогда
			КартинкаОбъект = Справочники.НоменклатураПрисоединенныеФайлы.СоздатьЭлемент();
			КартинкаОбъект.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;			
			КартинкаОбъект.Наименование = НоменклатураОбъект.Код;
			КартинкаОбъект.ВладелецФайла = НоменклатураОбъект.Ссылка;
			
			Соединение=Новый HTTPСоединение("адрес_сайта");
			ИмяВременногоФайла=ПолучитьИмяВременногоФайла(".jpg");
			Соединение.Получить("/" + ТоварКартинка,ИмяВременногоФайла);
			КартинкаОбъект.ФайлХранилище = Новый Картинка(ИмяВременногоФайла, истина);

			КартинкаОбъект.Расширение = "jpg";
			
			КартинкаСохранить = РегистрыСведений.ПрисоединенныеФайлы.СоздатьНаборЗаписей();
			КартинкаСохранить.Отбор.ПрисоединенныйФайл.Установить();
			НовыйФайл = КартинкаСохранить.Добавить();
			НовыйФайл.ПрисоединенныйФайл = КартинкаОбъект.Наименование;
			НовыйФайл.ХранимыйФайл = КартинкаОбъект.ФайлХранилище;
			КартинкаСохранить.Записать();
			
			КартинкаОбъект.Записать();
			КартинкаСсылка = КартинкаОбъект.Ссылка; 
		КонецЕсли;
		НоменклатураОбъект.ФайлКартинки = КартинкаСсылка;
	Иначе
		НоменклатураОбъект.ФайлКартинки = Справочники.НоменклатураПрисоединенныеФайлы.ПустаяСсылка();
	КонецЕсли;
Показать


В картинку что-то добавляется, но не картинка.
Нашел в регистре сведений "ПрисоединенныеФайлы", пробую добавить туда данные, но выдает ошибку:
{Форма.Форма.Форма(246)}: Ошибка при вызове метода контекста (Записать)
			КартинкаСохранить.Записать();
по причине:
Запись не верна! Значение поля "Присоединенный файл" не может быть пустым!: ПрисоединенныеФайлы:  (Регистр сведений: Присоединенные файлы)

Что в поле "присоединенный файл" нужно задать?
19. necropunk 9 23.05.12 17:01 Сейчас в теме
Собственно, сам файл, если не ошибаюсь, разве нет? Писал сам такую штуку, вроде все работает...
20. pkv11 18 24.05.12 09:58 Сейчас в теме
Удалось всё-таки победить эти картинки. Вот что получилось:
	КартинкаСсылка = Справочники.НоменклатураПрисоединенныеФайлы.ПустаяСсылка();
	Если Не ТоварКартинка = Неопределено или не ТоварКартинка = "" Тогда
		Если КартинкаСсылка.Пустая() Тогда
			//КартинкаСсылка = Справочники.НоменклатураПрисоединенныеФайлы.НайтиПоНаименованию(НоменклатураОбъект.Код);
		КонецЕсли;
		Если КартинкаСсылка.Пустая() Тогда
			КартинкаОбъект = Справочники.НоменклатураПрисоединенныеФайлы.СоздатьЭлемент();
			КартинкаОбъект.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;			
			КартинкаОбъект.Наименование = НоменклатураОбъект.Код;
			КартинкаОбъект.ВладелецФайла = НоменклатураОбъект.Ссылка;
			Соединение=Новый HTTPСоединение("сайт.ру");
			ИмяВременногоФайла=ПолучитьИмяВременногоФайла(".jpg");
			Соединение.Получить("/" + ТоварКартинка,ИмяВременногоФайла);
			К1 = Новый Картинка(ИмяВременногоФайла, истина);
			КартинкаОбъект.ФайлХранилище = Новый ХранилищеЗначения(К1.ПолучитьДвоичныеДанные());

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

После этого, естественно, нужно записать Номенклатуру.
adhocprog; mak1; likeacdc; mutoc@mail.ru; zyama; fomlana; d_kulbitski; alexd73; SunShinne; Lo1jke; +10 Ответить
34. Lo1jke 20.01.14 13:30 Сейчас в теме
(20)Спасибо огромное, код рабочий. Использовал.
41. mak1 03.04.20 17:18 Сейчас в теме
(20) Спасибо вас, ваш код очень помог!!!
21. пользователь 25.05.12 15:33
Сообщение было скрыто модератором.
...
22. s_uu 22 03.07.13 15:47 Сейчас в теме
А у меня выходит такая ошибка:
"{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(498)}: Поле объекта недоступно для записи (ФайлКартинки)
НоменклатураОбъект.ФайлКартинки = КартинкаСсылка;"

Я скопировала себе ваш код)))

Я что-то не так делаю??
24. pkv11 18 03.07.13 16:10 Сейчас в теме
(22) s_uu, Т.к. Вы подробностей не указали, то могу предположить, что скорее всего вы пробуете запускать код в новом релизе, обработка писалась год назад еще под 11.0..
28. Bukaska 140 03.07.13 17:04 Сейчас в теме
(22) s_uu, ну так странно как то сидеть в объекте справочника, а обращаться как буд-то где-то далеко от него.. Просто в самом справочнике обращение было было бы чуть иначе..
30. s_uu 22 03.07.13 17:20 Сейчас в теме
(28)Ну я не такая умная как вы, Bukaska )))
31. Bukaska 140 03.07.13 17:28 Сейчас в теме
(30) s_uu, да я пока ещё не умная, я только учусь))) У меня сертификата спеца пока нет)
23. s_uu 22 03.07.13 16:07 Сейчас в теме
Вы супер! Все получилось!!!
25. pkv11 18 03.07.13 16:11 Сейчас в теме
26. s_uu 22 03.07.13 16:48 Сейчас в теме
Было то, что я использовала код в модуле основной формы объекта справочника Номенклатура. Код заработал после того, как я его вынесла во внешнюю обработку!
27. pkv11 18 03.07.13 16:59 Сейчас в теме
(26) s_uu, тогда рад, что хоть кому-то пригодилось :)
29. maksimkonkov 03.07.13 17:19 Сейчас в теме
тоже находил похожую разработку в другой теме. сделано было чуть попроще. работало все тоже прекрасно. разработка только была под 10,3. там было типа того, как писал aristar...
33. pkv11 18 03.07.13 22:02 Сейчас в теме
(29) maksimkonkov, к сведению - 10.3 и 11 конфигурации разные.. 98% обработок, написанных под одну конфу, не будет работать на другой. Поэтому назвать "похожая" обработка в корне неправильно. Если у вас есть более удачный способ решения данного вопроса, то прошу им поделиться со всеми.
(32) s_uu, (31) Bukaska, давайте не будем удаляться от темы. Спасибо.
32. s_uu 22 03.07.13 17:33 Сейчас в теме
С вашим интеллектом у вас все еще впереди, поверьте )))
35. feel063 13 02.02.14 01:03 Сейчас в теме
Спасибо огромное! Гружу картинки из xml в виде двоичных данных. Искал как эти картинки должны храниться и записываться в справочник НоменклатураПрисоединенныеФайлы..а тут готовое решение.
SunShinne; +1 Ответить
36. Velliar 03.02.14 10:32 Сейчас в теме
а кто нибудь пытался передалать прайс лист в УПП, что бы так же выдавал картинки из номеклатуры?
37. pkv11 18 03.02.14 12:08 Сейчас в теме
(36) Velliar, как Ваш вопрос относится к этой теме?
38. bce-kpyto 28.05.14 17:38 Сейчас в теме
код работает, но если сделать ТипХраненияФайл ов не ВИнформационной Базе, а ВТомахНаДиске то не получается.
создаются только записи в справочник и в регистр, а сами картинки никуда не грузятся.
39. pkv11 18 29.05.14 08:06 Сейчас в теме
(38) bce-kpyto, так таким образом по идее и не должна картинка никуда грузиться, теоретически создается ссылка на картинку и если по этой ссылке картинка есть, то картинка и покажется. Данным способом не пользовался.
40. shard 279 23.02.16 23:19 Сейчас в теме
Может кому пригодится, актуальный вариант для КА 2.0, пакетное присоединение файлов к номенклатуре
&НаКлиенте
Процедура ЗагрузитьИзображения()
	МассивКартинок=НайтиФайлы(ПутьКкартинкам,"*.JPG");
	ПомещаемыеФайлы=новый Массив;
	для каждого ф из МассивКартинок цикл
		ПомещаемыеФайлы.Добавить(новый ОписаниеПередаваемогоФайла(ф.полноеимя));
	КонецЦикла;
	ПомещенныеФайлы=новый Массив;
	ПоместитьФайлы(ПомещаемыеФайлы,ПомещенныеФайлы,,Ложь);
	для сч=0 по ПомещенныеФайлы.Количество()-1 цикл
		массивДанных.Добавить(новый Структура("ИмяБезРасширения,Расширение,АдресФайлаВоВременномХранилище",
					сокрлп(МассивКартинок[сч].ИмяБезРасширения),
					сокрлп(МассивКартинок[сч].Расширение),
					ПомещенныеФайлы[сч].Хранение
				));
	КонецЦикла;
	ЗагрузитьИзображенияСервер(массивДанных);
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьИзображенияСервер(МД)
	пустАвтор=Справочники.Пользователи.ПустаяСсылка();
	для каждого элем из МД цикл
		спр=Справочники.Номенклатура.НайтиПоКоду(элем.ИмяБезРасширения);//или какой-либо иной способ сопоставления
		если спр.Пустая() тогда продолжить КонецЕсли;
		ПараметрыФайла=новый Структура("ВладелецФайлов,ИмяБезРасширения,РасширениеБезТочки,Автор,ВремяИзмененияУниверсальное",спр,элем.ИмяБезРасширения,элем.Расширение,пустАвтор,"");
		ПрисоединеннаяКартинка=ПрисоединенныеФайлы.ДобавитьПрисоединенныйФайл(ПараметрыФайла,элем.АдресФайлаВоВременномХранилище);
	КонецЦикла;
КонецПроцедуры		
Показать
Лев; byun; asid; jeff; neo-ti; fomlana; d_kulbitski; sunflower40; Ann1900; Virsy; +10 Ответить
42. user1058740 11.09.20 11:57 Сейчас в теме
Брошу свои 5 копеек в тему, может кому пригодиться для УТ 11.
&НаКлиенте
Процедура ЗагрузитьКартинки(Команда)
	
	Если Не ЗначениеЗаполнено(ПутьКПапкеКартинок) Тогда
		
		Возврат;
		
	КонецЕсли; 
	
	ФайлыВПапке = НайтиФайлы(ПутьКПапкеКартинок + "\","*.jpg",Истина);
	Для каждого мФайл Из ФайлыВПапке Цикл

		АдресВХ = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(мФайл.ПолноеИмя),Новый УникальныйИдентификатор);
		
		ПоместитьКартинкуНаСервере(мФайл.ИмяБезРасширения,мФайл.Расширение,мФайл.ПолучитьУниверсальноеВремяИзменения(),АдресВХ);		
		
	КонецЦикла;
	
	
КонецПроцедуры

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

Показать
bakassa; dammit666; Slavdew; allegrosoft; BAMPER; LetsTryAgain; REDSn; Лев; buba; Самоделкин; +10 Ответить
Оставьте свое сообщение

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