Картинка во внешней обработке

1. junikDEV 30.10.24 15:29 Сейчас в теме
Добрый день! Есть внешняя обработка, в ней по кнопке интерактивно выбираю каталог в котором хранятся изображения (png,jpg,jpeg), нужно программно получить все файлы картинок из каталога и вывести эти картинки на форму.
Действия которые уже реализованы: выбор каталога, поиск всех файлов в каталоге, отбор изображений из каталога и помещение их во временное хранилище в виде двоичных данных, потому что во внешней обработке нельзя создать реквизит с типом "ХранилищеЗначений", соответственно остается картинки хранить в виде ДвочиныхДанных, поймал тупик уже в программном создании реквизитов и элементы для отображения картинки. Не понимаю к чему присваивать адрес во временном хранилище, и как отобразить картинку, буду благодарен за помощь. Пока что только учусь, надеюсь на вашу адекватность. Файл внешки прикрепил
Прикрепленные файлы:
РаботаСИзображениями.epf
По теме из базы знаний
Найденные решения
9. spacecraft 30.10.24 17:20 Сейчас в теме
(8) переделал. Только изначально много "скользких" мест. Например, имя файла может не подходить как имя реквизита и элемента.
Прикрепленные файлы:
РаботаСИзображениями.epf
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 30.10.24 16:35 Сейчас в теме
(1) Загружать все изображения из произвольной папки в 1С – сомнительная затея. Нет таких задач, которые оправдывали бы такой подход. Может оказаться накладно по ресурсам оперативной памяти: картинка, созданная через двоичные данные, помещенная во временная хранилище... думаю, там будет х2 расход памяти от реального объема файла.

Но отвечая на ваш вопрос, нужно создать реквизиты формы с типом Строка, а на форме Поле картинки. Строке просто присваиваем адрес временного хранилища.
3. junikDEV 30.10.24 16:37 Сейчас в теме
(2) Тогда лучше не конвертировать в двоичные данные, а сразу файл помещать во временное хранилище?
4. SlavaKron 30.10.24 16:40 Сейчас в теме
(3) Попробуйте. Но всё равно это дичь – выводить все изображения на форму. Я бы просто вывел сводку файлов в виде таблицы: Имя, Размер файла, Размер изображения, формат. И только по щелчку, если нужно посмотреть изображение, открывал бы его отдельно.
5. junikDEV 30.10.24 16:40 Сейчас в теме
(4) Такое задание, ничего не могу с этим поделать
6. SlavaKron 30.10.24 16:43 Сейчас в теме
Как вариант, использовать Поле HTML документа, а в строке прописывать локальный url адрес картинки.
Прикрепленные файлы:
user1671936; +1 Ответить
7. spacecraft 30.10.24 16:58 Сейчас в теме
можно использовать НачатьПомещениеФайловНаСервер. По результату будут адреса во временном хранилище картинок. Их прописать реквизиту формы типа строка, для вывода картинок.
8. junikDEV 30.10.24 17:03 Сейчас в теме
(7) Делаю вот так, но картинка не выводится, поле, название есть, но картинки к сожалению нет
Прикрепленные файлы:
9. spacecraft 30.10.24 17:20 Сейчас в теме
(8) переделал. Только изначально много "скользких" мест. Например, имя файла может не подходить как имя реквизита и элемента.
Прикрепленные файлы:
РаботаСИзображениями.epf
10. junikDEV 30.10.24 17:24 Сейчас в теме
(9) Прикольно, а ПомещениеФайловНаСервер читал что не рекомендуется использовать, так или нет?
11. spacecraft 30.10.24 17:30 Сейчас в теме
(10) там другие методы не рекомендуются:
НачатьПомещениеФайла
НачатьПолучениеФайлов
12. junikDEV 30.10.24 17:30 Сейчас в теме
(11) Ааа, вспомнил, спасибо большое за помощь
13. junikDEV 30.10.24 17:52 Сейчас в теме
(11) Один вопрос, почему название обработки меняется на форме? хахаха
14. spacecraft 30.10.24 18:09 Сейчас в теме
(13) нам от сюда не видно.
возможно из-за привязка имени реквизита к имени файла.
15. junikDEV 30.10.24 18:11 Сейчас в теме
(14) а как это пофиксить можно? Чтобы работодатель не прикопался просто
16. spacecraft 30.10.24 18:25 Сейчас в теме
(15)
&НаСервере
Процедура СозданиеРеквизитовИЭлементовФормы(МассивФайловДляЗагрузки)

	СоответствияРеквизитов = Новый Соответствие;
	НовыеРеквизиты = Новый Массив;
	Для каждого ПомещенныйФайл Из МассивФайловДляЗагрузки Цикл
		ТипРеквизита = Новый ОписаниеТипов("Строка");
		ИмяКолонки = СтрШаблон("Колонка_%1", СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", ""));
		РеквизитСтрока = Новый РеквизитФормы(ИмяКолонки, ТипРеквизита, , ПомещенныйФайл.ИмяФайла);
		НовыеРеквизиты.Добавить(РеквизитСтрока);
		СоответствияРеквизитов[РеквизитСтрока.Имя] = ПомещенныйФайл.Адрес;
	КонецЦикла;
	
	ИзменитьРеквизиты(НовыеРеквизиты);
	
	Для Каждого НовыйРеквизит Из НовыеРеквизиты Цикл
		НовыйЭлемент = Элементы.Добавить(НовыйРеквизит.Имя, Тип("ПолеФормы"));
		НовыйЭлемент.Вид = ВидПоляФормы.ПолеКартинки;
		НовыйЭлемент.ПутьКДанным = НовыйРеквизит.Имя;
		
		ЭтотОбъект[НовыйРеквизит.Имя] = СоответствияРеквизитов[НовыйРеквизит.Имя];
	КонецЦикла;
	
КонецПроцедуры
Показать

Но там еще много что переделывать. Повторная загрузка не проработана совсем.
Оставьте свое сообщение

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