Добавление картинки товара в РМК. Розница 3.0
Клиент хочет, чтобы в РМК показывалась картинка текущего товара.
В форме списка картинка уже показывается, поэтому нужно просто грамотно перенести в расширение формы РМК.
При создании формы создаю реквизит и элемент для картинки:
&НаСервере Процедура M_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) НовыеРеквизиты = Новый Массив; НовыеРеквизиты.Добавить(Новый РеквизитФормы("дор_АдресКартинки", Новый ОписаниеТипов("Строка"), , "Картинка")); ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты); // ключевая процедура, которая добавляет ревизиты //Картинка Привязка = Элементы.ГруппаСдача; Элемент = ЭтаФорма.Элементы.Добавить("дор_АдресКартинки", Тип("ПолеФормы"), Привязка.Родитель); Элемент.Вид = ВидПоляФормы.ПолеКартинки; Элемент.ПутьКДанным = "дор_АдресКартинки"; Элемент.АвтоМаксимальнаяШирина = ложь; Элемент.АвтоМаксимальнаяВысота = ложь; Элемент.Высота = 10; Элемент.РазмерКартинки = РазмерКартинки.Пропорционально; Элемент.ПоложениеЗаголовка =ПоложениеЗаголовкаЭлементаФормы.Нет; КонецПроцедуры
Функцию получения изображения копирую из процедуры ОбновитьИзображение формы списка номенклатуры, только вывожу не галерею картинок, а одну основную картинку.
&НаСервере Функция дор_ПолучитьИзображение(Номенклатура) Файлы = Новый Массив; РаботаСФайлами.ЗаполнитьПрисоединенныеФайлыКОбъекту(Номенклатура, Файлы); ОснованияКартинка = Номенклатура.ФайлКартинки; Если Не ЗначениеЗаполнено(ОснованияКартинка) Тогда Возврат Неопределено; КонецЕсли; ДвоичныеДанныеКартинки = РаботаСФайламиУНФ.СсылкаНаДвоичныеДанныеФайла(ОснованияКартинка, УникальныйИдентификатор); Возврат ДвоичныеДанныеКартинки; //Строка адреса или Неопределено КонецФункции
Ну и само отображение картинки происходит при активизации строки. Важно отметить, что из активизации строки нельзя вызывать сервер, поэтому используется обработчик ожидания.
&НаКлиенте Процедура M_ТоварыПриАктивизацииСтрокиПосле(Элемент) ПодключитьОбработчикОжидания("дор_ТоварыПриАктивизацииСтрокиПослеОбработчикОжидания", 0.1, Истина); КонецПроцедуры &НаКлиенте Процедура дор_ТоварыПриАктивизацииСтрокиПослеОбработчикОжидания() Экспорт Перем ТекущаяСтрока; ТекущаяСтрока = Элементы.Товары.ТекущаяСтрока; //Если текущей строки нет Если ТекущаяСтрока = Неопределено Тогда ЭтаФорма.дор_АдресКартинки = Неопределено; Возврат; КонецЕсли; ДанныеСтроки = Элементы.Товары.ДанныеСтроки(ТекущаяСтрока); ЭтаФорма.дор_АдресКартинки = дор_ПолучитьИзображение(ДанныеСтроки.Номенклатура); КонецПроцедуры
Выглядит это примерно так:
Конечно, было бы неплохо еще убирать картинку после пробития или отмены чека, но это потом.
Среда: Розница 3.0.3.147 Объем: 1 час
Свежие комментарии