Последовательность такая:
- Нажимаем кнопку подбор
- Формируется отчет с картинками и обработкой расшифровки
- При двойном щелчке мышью возвращаем значение в обработчик выбора
- Отрисовываем изображение на основной форме.
Карточка товара:
По нажатии на кнопку «подобрать изображение» (именно кнопку, а не гипперссылку) выполняется такой код:
&НаКлиенте
Процедура ПодобратьИзображение(Команда)
ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
//ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ВысотаИзображения", 100);
//ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ШиринаИзображения", 100);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыОткрытия.Вставить("ВысотаСтроки", 25);
ПараметрыОткрытия.Вставить("ПользовательскиеНастройки", ПользовательскиеНастройки);
Обработчик = Новый ОписаниеОповещения("ОбработкаВыбораИзображения", ЭтаФорма);
ОткрытьФорму("Отчет.Изображения.Форма.ФормаОтчета", ПараметрыОткрытия, Элементы.Изображение, Новый УникальныйИдентификатор,,,Обработчик);
КонецПроцедуры
Суть его проста. Открываем форму отчета. Интерактивно выбираем "элемент справочника". Заносим выбранное изображение в реквизит и загружаем во временное хранилище картинку. Цепочку выполнения кода смотрите в прилагаемой к статье базе.
Осталось понять, а как выбирается изображение? – для этого в отчете выполняется следующий код:
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Ответ = ПолучитьЗначениеРасшифровки(Расшифровка);
Если ЭтаФорма.ВладелецФормы = Неопределено Тогда
ОткрытьЗначение(Ответ);
Иначе
ЭтаФорма.Закрыть(Ответ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьЗначениеРасшифровки(Расшифровка)
Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
РасшифровкаПоля = Данные.Элементы.Получить(Расшифровка).ПолучитьПоля()[0].Значение;
Возврат РасшифровкаПоля;
КонецФункции
Обработчик выбора (процедура ОбработкаВыбораИзображения) описана в этой же форме товара:
&НаКлиенте
Процедура ОбработкаВыбораИзображения(ОсновнойПараметр, ДопПараметр) Экспорт
Объект.Изображение = ОсновнойПараметр;
ЗаполнитьЗначенияПоУмолчанию();//отрисовка изображения
КонецПроцедуры
Ну а дальше исполнение из отчета возвращается в контекст формы товара, где исполняется обработчик выбора изображения.
Табличный документ позволяет отойти от зависимости строкового реквизита в форме, отвечающего за адрес врем. хранилища. Но это всего лишь один из вариантов реализации.
Детали по выводу картинок в отчете также смотрите в прилагаемой базе (версия совместимости 8.3.10).
Надеюсь, данный способ выбора картинки из коллекции вам пригодится.