Один из вариантов подбора изображения из коллекции

Программирование - Практика программирования

1С. товар картинка изображение коллекция список

2
Вопрос о выборе изображения (товара или др.) не из одного элемента, а из множества недостаточно освещен. Предлагаю вам вариант решения подбора через событие «обработка расшифровки» отчета.

Последовательность такая:

  1. Нажимаем кнопку подбор
  2. Формируется отчет с картинками и обработкой расшифровки
  3. При двойном щелчке мышью возвращаем значение в обработчик выбора
  4. Отрисовываем изображение на основной форме.

Карточка товара:

По нажатии на кнопку «подобрать изображение» (именно кнопку, а не гипперссылку) выполняется такой код:

&НаКлиенте
Процедура ПодобратьИзображение(Команда)
	ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
	//ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ВысотаИзображения", 100);
	//ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ШиринаИзображения", 100);
	
	ПараметрыОткрытия = Новый Структура;
	ПараметрыОткрытия.Вставить("СформироватьПриОткрытии", Истина);
	ПараметрыОткрытия.Вставить("ВысотаСтроки", 25);
	ПараметрыОткрытия.Вставить("ПользовательскиеНастройки", ПользовательскиеНастройки);
	
	Обработчик = Новый ОписаниеОповещения("ОбработкаВыбораИзображения", ЭтаФорма);
	ОткрытьФорму("Отчет.Изображения.Форма.ФормаОтчета", ПараметрыОткрытия, Элементы.Изображение, Новый УникальныйИдентификатор,,,Обработчик);
КонецПроцедуры

Суть его проста. Открываем форму отчета. Интерактивно выбираем "элемент справочника". Заносим выбранное изображение в реквизит и загружаем во временное хранилище картинку. Цепочку выполнения кода смотрите в прилагаемой к статье базе.

Осталось понять, а как выбирается изображение? – для этого в отчете выполняется следующий код:

&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	Ответ = ПолучитьЗначениеРасшифровки(Расшифровка);
	Если ЭтаФорма.ВладелецФормы = Неопределено Тогда
		ОткрытьЗначение(Ответ);
	Иначе
		ЭтаФорма.Закрыть(Ответ);
	КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ПолучитьЗначениеРасшифровки(Расшифровка)
	Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
	РасшифровкаПоля = Данные.Элементы.Получить(Расшифровка).ПолучитьПоля()[0].Значение;
	Возврат РасшифровкаПоля;
КонецФункции

Обработчик выбора (процедура ОбработкаВыбораИзображения) описана в этой же форме товара:

&НаКлиенте
Процедура ОбработкаВыбораИзображения(ОсновнойПараметр, ДопПараметр) Экспорт 
	Объект.Изображение = ОсновнойПараметр;
	ЗаполнитьЗначенияПоУмолчанию();//отрисовка изображения
КонецПроцедуры

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

Табличный документ позволяет отойти от зависимости строкового реквизита в форме, отвечающего за адрес врем. хранилища. Но это всего лишь один из вариантов реализации.

Детали по выводу картинок в отчете также смотрите в прилагаемой базе (версия совместимости 8.3.10).

Надеюсь, данный способ выбора картинки из коллекции вам пригодится.

2

Скачать файлы

Наименование Файл Версия Размер
Один из вариантов подбора изображения из коллекции:
.dt 757,42Kb
09.11.18
0
.dt 757,42Kb Скачать

См. также

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение