Как вывести изображение товаров в отчет 1с
Перейти к содержимому

Как вывести изображение товаров в отчет 1с

  • автор:

Как в форме списка показать изображение товара?

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

Чтобы вывести картинку в поле формы типа Картинка , нужно получить навигационную ссылку на реквизит объекта, хранящий данные картинки, методом глобального контекста ПолучитьНавигационнуюСсылку() , и записать ее в строковой реквизит формы, связанный с полем картинки в форме.

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

Рассмотрим пример. Допустим, существует справочник Номенклатура , с реквизитом ДанныеФайлаКартинки (типа ХранилищеЗначения ), содержащим данные картинки.

Создадим форму списка справочника Номенклатура .

Добавим в форму реквизит АдресКартинки (типа Строка ), в котором будет храниться навигационная ссылка на реквизит справочника ДанныеФайлаКартинки .

Перетащим реквизит АдресКартинки в дерево элементов формы.

Установим свойства элемента: Имя — Картинка , Вид — Поле картинки , ПоложениеЗаголовка — Нет и Видимость — Нет .

Таким образом, мы создали в форме поле картинки, связанное с реквизитом АдресКартинки .

Затем добавим в форму еще один реквизит ОтображатьКартинки типа Булево .

Перетащим его в дерево элементов формы и поместим над полем картинки. Вид поля платформа установит автоматически — Поле флажка . Это нас устраивает, так как в зависимости от значения этого флажка мы будем показывать или скрывать картинку элемента номенклатуры.

Создадим обработчик события ПриАктивизацииСтроки для таблицы формы Список , отображающей данные динамического списка:

Данный код выполняется при навигации по списку. В этом обработчике, в случае если значения реквизита ОтображатьКартинки — Истина (флажок ОтображатьКартинки — включен), с помощью метода ПолучитьНавигационнуюСсылку() реквизиту АдресКартинки присваивается навигационная ссылка на реквизит ДанныеФайлаКартинки и картинка отображается в форме.

В первом параметре метода ПолучитьНавигационнуюСсылку() передается ссылка на элемент справочника — Элементы.Список.ТекущаяСтрока , а во втором — имя реквизита.

После этого создадим обработчик события ПриИзменении для поля формы вида Поле флажка — ОтображатьКартинки . Заполним обработчик следующим образом:

Данный код выполняется при включении/выключении флажка ОтображатьКартинки . В этом обработчике в зависимости от значения реквизита ОтображатьКартинки устанавливается видимость элемента формы Картинка , отображающем картинку элемента номенклатуры. В случае видимости картинки с помощью метода ПолучитьНавигационнуюСсылку() реквизиту АдресКартинки присваивается навигационная ссылка на реквизит ДанныеФайлаКартинки и картинка отображается в форме.

Изначально флажок ОтображатьКартинки выключен из соображений эффективности, и картинка в форме не видна. Но если его включить, форма списка примет следующий вид.

Демонстрационный пример находится в каталоге 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)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *