[СКД] Вывод картинки в результат любого отчета на СКД

Если у вас в справочнике Номенклатура (или другом справочнике) заполнена картинка, то ее можно легко вывести для наглядности отчета.

Для примера делаю запрос к остаткам и выбираю реквизит "ФайлКартинка" справочника Номенклатура.

 

 

У реквизита тип СправочникСсылка.НоменклатураПрисоединенныеФайлы (механизм БСП)

 

 

В предприятии у элемента справочника номенклатура добавлена картинка

 

 

В СКД поле "картинка" добавляю в группировку

 

 

В модуле отчета в Процедура ПриКомпоновкеРезультата

-программно формирую отчет и обрабатываю РасшифровкуКомпоновкиДанных.

-ищу в расшифровке поле с картинкой.

-получаю двоичные данные (я воспользовался фунцией БСП) РаботаСФайлами.ДвоичныеДанныеФайла(ФайлКартинки.Значение), если у вас не БСП, то просто получите из реквизита с типом ХранилищеЗначения двоичные данные.

-помещаю картину в табличный документ

 

 


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

НастройкиСКД = КомпоновщикНастроек.ПолучитьНастройки();

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД, ДанныеРасшифровки);

ПроцессорКомпоновкиСКД = Новый ПроцессорКомпоновкиДанных;

ПроцессорКомпоновкиСКД.Инициализировать(Макет,, ДанныеРасшифровки);

ДокументРезультат.Очистить();

ПроцессорВыводаСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

ПроцессорВыводаСКД.УстановитьДокумент(ДокументРезультат);

ПроцессорВыводаСКД.Вывести(ПроцессорКомпоновкиСКД);

КолвоСтрок = ДокументРезультат.ВысотаТаблицы;
КолвоКолонок = ДокументРезультат.ШиринаТаблицы;
Для Строка = 1 По КолвоСтрок Цикл
Для Колонка = 1 По КолвоКолонок Цикл
Область =  ДокументРезультат.Область(Строка,Колонка);
Расшифровка = Область.Расшифровка;
Если ТипЗнч(Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
ПоляРасшифровки = ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля();
ФайлКартинки = ПоляРасшифровки.Найти("Картинка");
Если ФайлКартинки <> Неопределено Тогда
КартинкаДД = РаботаСФайлами.ДвоичныеДанныеФайла(ФайлКартинки.Значение);
Картинка = Новый Картинка(КартинкаДД);
КартинкаДок = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
КартинкаДок.Картинка = Картинка;
КартинкаДок.РазмерКартинки = РазмерКартинки.АвтоРазмер;
КартинкаДок.Расположить(Область);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;

КонецПроцедуры

 

В результате получаю в группировке картинку.

 

 

 

Тестировал: 1С:Комплексная автоматизация 2 (2.4.9.98)

1С:Предприятие 8.3 (8.3.15.1747)

16 Comments

  1. echo77

    (0) Все проще начиная с 8.3.14 СКД уже сама может выводить картинки в Табличный документ https://vk.com/neticompany?w=wall-73155890_4571

    Reply
  2. John_d

    (1) Как быть если в БСП выбран тип хранения файлов не базе, а в томах на диске?

    ФайлОбъект.ТипХраненияФайла В томах на диске ПеречислениеСсылка.ТипыХраненияФайлов

    Reply
  3. Rustig

    (0) молодец! разобрался и другим расписал.

    (1) что за ссылка? где описание метода? где расшифровка вашей новости?

    Reply
  4. echo77

    (2) Думаю, так же, как в вашем примере РаботаСФайлами.ДвоичныеДанныеФайла(). Так же можно написать в выражении вычисляемого поля?

    Reply
  5. Rustig

    (4) где доказательства? автор опробовал метод, представил ощутимый результат. а вы что представили? рекламу на фирму?

    Reply
  6. echo77

    (3) Держите схему. Она простая, попробуйте

    Reply
  7. Spacer

    (1)Если б еще кто-то кинул пример как это делать.

    Я пробовал согласно описанию, но то-то ничего не вышло.

    Reply
  8. echo77

    (7) В (6) Схема-пример

    Reply
  9. EVKash

    (3) ссылка на контактик))) у кого не открывается

    https://dl04.1c.ru/content/Platform/8_3_14_1779/1cv8upd_8_3_14_1779.htm#a06301e2-a9ff-11e8-a3f7-0050569f678a

    Reply
  10. vis_tmp

    Спасибо, полезный пример вывода картинки в отчёт.

    Reply
  11. YPermitin

    (0) Есди никто не будет против, то добавлю сюда связанную ссылку.

    Делал подобную публикацию про картинки в СКД (в шапке, в самом отчете и про новые возможности платформы):

    https://infostart.ru/public/1125765/

    Reply
  12. sikuda

    Да приведенный метод работает — https://youtu.be/7a4pasFe7P4

    — Но по опыту разгребания чужой базы скажу — на средних картинках и многочисленности отчетов выполнение срубается (режим совместимости 8.3.12). Вылет Регламентного задания с ошибкой обеспечен.

    Reply
  13. demon_infernal

    А если размер хранимой картинки будет 1800 на 1200 — перед выводом ее желательно уменьшить, иначе сохраняемый XLS может иметь очень большие размеры.

    Начиная с 8.3.14 для этого есть объект ОбрабатываемаяКартинка

    Reply
  14. YPermitin

    (14) все статьи хороши. Плюсы доставлены )

    Reply
  15. m..adm

    Обход потом всего табличного документа по всем его ячейкам занятие не хитрое, но представьте что в нем уйма строк и предостаточно колонок. Получение полей расшифровок по каждой ячейки отчета в данном случае съест уйму времени при его формировании.

    Reply

Leave a Comment

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