Как в форме списка показать изображение товара?
Зачастую возникает задача в форме списка показать картинку, соответствующую выделенному элементу списка. Например, изображение товара, загруженное пользователем.
Чтобы вывести картинку в поле формы типа Картинка , нужно получить навигационную ссылку на реквизит объекта, хранящий данные картинки, методом глобального контекста ПолучитьНавигационнуюСсылку() , и записать ее в строковой реквизит формы, связанный с полем картинки в форме.
В форме списка это можно сделать в обработчике события ПриАктивизацииСтроки у таблицы, отображающей данные динамического списка справочника. Но в случае большого списка, постоянное отображение картинки в событии ПриАктивизацииСтроки может быть неэффективно, особенно при интенсивной прокрутке списка. Поэтому лучше показывать картинку нажатием на отдельную кнопку или включением соответствующего флажка в форме списка.
Рассмотрим пример. Допустим, существует справочник Номенклатура , с реквизитом ДанныеФайлаКартинки (типа ХранилищеЗначения ), содержащим данные картинки.
Создадим форму списка справочника Номенклатура .
Добавим в форму реквизит АдресКартинки (типа Строка ), в котором будет храниться навигационная ссылка на реквизит справочника ДанныеФайлаКартинки .
Перетащим реквизит АдресКартинки в дерево элементов формы.
Установим свойства элемента: Имя — Картинка , Вид — Поле картинки , ПоложениеЗаголовка — Нет и Видимость — Нет .
Таким образом, мы создали в форме поле картинки, связанное с реквизитом АдресКартинки .
Затем добавим в форму еще один реквизит ОтображатьКартинки типа Булево .
Перетащим его в дерево элементов формы и поместим над полем картинки. Вид поля платформа установит автоматически — Поле флажка . Это нас устраивает, так как в зависимости от значения этого флажка мы будем показывать или скрывать картинку элемента номенклатуры.
Создадим обработчик события ПриАктивизацииСтроки для таблицы формы Список , отображающей данные динамического списка:
Данный код выполняется при навигации по списку. В этом обработчике, в случае если значения реквизита ОтображатьКартинки — Истина (флажок ОтображатьКартинки — включен), с помощью метода ПолучитьНавигационнуюСсылку() реквизиту АдресКартинки присваивается навигационная ссылка на реквизит ДанныеФайлаКартинки и картинка отображается в форме.
В первом параметре метода ПолучитьНавигационнуюСсылку() передается ссылка на элемент справочника — Элементы.Список.ТекущаяСтрока , а во втором — имя реквизита.
После этого создадим обработчик события ПриИзменении для поля формы вида Поле флажка — ОтображатьКартинки . Заполним обработчик следующим образом:
Данный код выполняется при включении/выключении флажка ОтображатьКартинки . В этом обработчике в зависимости от значения реквизита ОтображатьКартинки устанавливается видимость элемента формы Картинка , отображающем картинку элемента номенклатуры. В случае видимости картинки с помощью метода ПолучитьНавигационнуюСсылку() реквизиту АдресКартинки присваивается навигационная ссылка на реквизит ДанныеФайлаКартинки и картинка отображается в форме.
Изначально флажок ОтображатьКартинки выключен из соображений эффективности, и картинка в форме не видна. Но если его включить, форма списка примет следующий вид.
Демонстрационный пример находится в каталоге 1CITS/EXE/FAQ/ИзображениеТовараВФормеСписка.dt. Пример выполнен на версии платформы 8.2.9.356.
Подробнее об использовании метода ПолучитьНавигационнуюСсылку () можно прочитать в синтакс-помощнике: Глобальный контекст — Прочие процедуры и функции.
Как вывести изображение товаров в отчет 1с
картинку в моксель, в свойства Таб.ТекущийОбъект.Загрузить(ИмяФайла)
где Таб = СоздатьОбъект(«Таблица») — имя переменной выводимой таблицы
(1)
Что означает в «картинку в моксель»?
Т.е. картинку переименовать из jpg в mxl?
Очень прошу поподробнее, как для совсем .
(3) открываешь пофигуратор — открываешь таблицу, внизу в панели струментов есть объект — картинка — ей вставляешь в макет. Если нужна постоянная картинка — то сразу выбираешь нужную, если динамическая — то в свойствах картинки пишешь как в (1).
Добавить картинки в любой отчет БСП
Расширение позволяет вставить картинку практически в любой отчет конфигурации на БСП (Розница 2.3/3.0, УТ 11.4, 11.5, УНФ 3), где выводится поле «Номенклатура».
В отчетах появляется галочка «Выводить картинки товаров». Если она установлена, то в отчет по каждому товару добавляется основная картинка.
Если галочку снять, то отчет выводится в обычном (штатном) виде:
Алгоритм работы: после формирования отчета, если установлена галочка «Выводить картинки товаров», программа проходит по всем данным расшифровки, где содержится товар, определяет каким ячейкам отчета соответствуют эти данные и проставляет туда основную картинку товара.
Каких-либо настроек не требуется. Расширение устанавливается штатно и работает сразу после установки. Нужно снять у расширения галочку «Работа в безопасном режиме».
Проходит аудит Fresh.
Купить у меня за 1200 руб.
Версии:
- 2022.06.11 для Розницы 3.0.1.193, УНФ 3.0.1.248, УТ 11.5.7.336. Платформа 8.3.18.1520.
- 2022.10.30 для Розницы 2.3.13.26. Платформа 8.3.18.1520.
[СКД] Вывод картинки в результат любого отчета на СКД
Для примера делаю запрос к остаткам и выбираю реквизит «ФайлКартинка» справочника Номенклатура.
У реквизита тип СправочникСсылка.НоменклатураПрисоединенныеФайлы (механизм БСП)
В предприятии у элемента справочника номенклатура добавлена картинка
В СКД поле «картинка» добавляю в группировку
В модуле отчета в Процедура ПриКомпоновкеРезультата -программно формирую отчет и обрабатываю РасшифровкуКомпоновкиДанных. -ищу в расшифровке поле с картинкой. -получаю двоичные данные (я воспользовался фунцией БСП) РаботаСФайлами.ДвоичныеДанныеФайла(ФайлКартинки.Значение), если у вас не БСП, то просто получите из реквизита с типом ХранилищеЗначения двоичные данные. -помещаю картину в табличный документ
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; НастройкиСКД = КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД, ДанныеРасшифровки); ПроцессорКомпоновкиСКД = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиСКД.Инициализировать(Макет,, ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВыводаСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВыводаСКД.УстановитьДокумент(ДокументРезультат); ПроцессорВыводаСКД.Вывести(ПроцессорКомпоновкиСКД); КолвоСтрок = ДокументРезультат.ВысотаТаблицы; КолвоКолонок = ДокументРезультат.ШиринаТаблицы; Для Строка = 1 По КолвоСтрок Цикл Для Колонка = 1 По КолвоКолонок Цикл Область = ДокументРезультат.Область(Строка,Колонка); Расшифровка = Область.Расшифровка; Если ТипЗнч(Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда ПоляРасшифровки = ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля(); ФайлКартинки = ПоляРасшифровки.Найти("Картинка"); Если ФайлКартинки <> Неопределено Тогда КартинкаДД = РаботаСФайлами.ДвоичныеДанныеФайла(ФайлКартинки.Значение); Картинка = Новый Картинка(КартинкаДД); КартинкаДок = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); КартинкаДок.Картинка = Картинка; КартинкаДок.РазмерКартинки = РазмерКартинки.АвтоРазмер; КартинкаДок.Расположить(Область); КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры
В результате получаю в группировке картинку.
Тестировал: 1С:Комплексная автоматизация 2 (2.4.9.98) 1С:Предприятие 8.3 (8.3.15.1747)