В данном случае требовался отчет по розничным складам. Вся нужная информация выбиралась из базы следующим запросом в схеме компановке данных:
ВЫБРАТЬ
ТоварыВРозницеОстатки.Склад,
ТоварыВРозницеОстатки.Номенклатура,
ТоварыВРозницеОстатки.ХарактеристикаНоменклатуры,
ТоварыВРозницеОстатки.Качество,
ТоварыВРозницеОстатки.КоличествоОстаток,
ТоварыВРозницеОстатки.СуммаПродажнаяОстаток,
NULL КАК КоличествоРасход,
NULL КАК СуммаПродажнаяРасход
ИЗ
РегистрНакопления.ТоварыВРознице.Остатки({(&КонецПериода)}, ) КАК ТоварыВРозницеОстаткиОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ТоварыВРозницеОбороты.Склад,
ТоварыВРозницеОбороты.Номенклатура,
ТоварыВРозницеОбороты.ХарактеристикаНоменклатуры,
ТоварыВРозницеОбороты.Качество,
NULL,
NULL,
ТоварыВРозницеОбороты.КоличествоРасход,
ТоварыВРозницеОбороты.СуммаПродажнаяРасход
ИЗ
РегистрНакопления.ТоварыВРознице.Обороты(, , Регистратор, ) КАК ТоварыВРозницеОбороты
ГДЕ
ТоварыВРозницеОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
ИЛИ ТоварыВРозницеОбороты.Регистратор ССЫЛКА Документ.ЧекККМ
{ХАРАКТЕРИСТИКИ
ТИП(Справочник.Номенклатура)
ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.СвойстваОбъектов
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Представление
ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
ПОЛЕОБЪЕКТА Объект
ПОЛЕВИДА Свойство
ПОЛЕЗНАЧЕНИЯ Значение }
Самого поля вывода изображения в запросе нет. Стоит обратить внимание на текст в запросе:
{ХАРАКТЕРИСТИКИ
ТИП(Справочник.Номенклатура)
ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.СвойстваОбъектов
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Представление
ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
ПОЛЕОБЪЕКТА Объект
ПОЛЕВИДА Свойство
ПОЛЕЗНАЧЕНИЯ Значение }
который позволит выводит поля и использовать в условиях отбора отчета свойства и характеристики номенклатуры. Этот текст формируется автоматически конструктором запроса в схеме компановки данных при заполнении вкладки "Характеристики":
Само поле вывода изображения формируем введением дополнительного вычисляемого поля:
Выражение представления ("Нет изображения " + Номенклатура.Код) в последующем выполнит свою функцию в процедуре программного вывода отчета.
Для программного вывода отчета с выводом изображений существует всего одна процедура в модуле отчета:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; // Отключаем стандартную обработку
//Настройки = КомпоновщикНастроек.ПолучитьНастройки(); Эта строка работает если не надо лезть и изменять настройки,
//но мы не ищем легких путей если надо о чем-то рассказать по подробнее.. Если надо поменять пользовательские настройки
// ручками - делаем приблизительно так:
Настройки = КомпоновщикНастроек.Настройки; // Получаем настройки отчета
// Изменяем отборы по пользовательским настройкам
ТаблицаОтборов = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
Для Каждого ЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
НайденнаяПользовательскаяНастройка =
ТаблицаОтборов.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки);
Если НайденнаяПользовательскаяНастройка <> Неопределено Тогда
ЭлементОтбора.ВидСравнения = НайденнаяПользовательскаяНастройка.ВидСравнения;
ЭлементОтбора.Использование = НайденнаяПользовательскаяНастройка.Использование;
ЭлементОтбора.ПравоеЗначение = НайденнаяПользовательскаяНастройка.ПравоеЗначение;
КонецЕсли;
КонецЦикла;
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
// Создаем макет компоновки данных
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
МакетКомпоновки =
КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
// Инициализируем процессор компоновки
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
ДокументРезультат.Очистить();
// Выводим результат отчета в табличный документ "ДокументРезультат"
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
//ПроцессорВывода.Вывести(ПроцессорКомпоновки); на этом можно было бы закончить вывод отчета в стандартном виде...
//но нам нужны картинки.
ПолеПоКоторомуНеобходимоПолучитьЗначение = "Картинка";
ПроцессорВывода.НачатьВывод();
Пока истина Цикл
ЭлементРезультата = ПроцессорКомпоновки.Следующий();
Если ЭлементРезультата = Неопределено Тогда
прервать;
КонецЕсли;
ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
Если ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда
ЗначениеВыводимыхДанных = Неопределено;
Для каждого ЗначениеПараметра из ЭлементРезультата.ЗначенияПараметров Цикл
Если ТипЗнч(ЗначениеПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
ПоляРасшифровки = ДанныеРасшифровки.Элементы[ЗначениеПараметра.Значение].ПолучитьПоля();
Для Каждого ПолеРасшифровки из ПоляРасшифровки Цикл
Если ПолеРасшифровки.Поле = ПолеПоКоторомуНеобходимоПолучитьЗначение Тогда
ЗначениеВыводимыхДанных = ПолеРасшифровки.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Если ЗначениеЗаполнено(ЗначениеВыводимыхДанных) Тогда
мОбъект = ЗначениеВыводимыхДанных.ПолучитьОбъект();
мТекущееОсновноеИзображение = мОбъект.Хранилище.Получить();
Если НЕ (мТекущееОсновноеИзображение = Неопределено) Тогда
Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рис.РазмерКартинки = РазмерКартинки.Пропорционально;
Индекс = ДокументРезультат.Рисунки.Индекс(Рис);
ДокументРезультат.Рисунки[Индекс].Картинка = мТекущееОсновноеИзображение;
ВысотаТабДок = ДокументРезультат.ВысотаТаблицы;
ОбластьДляКартинки = ДокументРезультат.НайтиТекст("Нет изображения " + мОбъект.Объект.Код);
Если ОбластьДляКартинки <> Неопределено Тогда
ОбластьДляКартинки.ВысотаСтроки = 90;
ДокументРезультат.Рисунки[Индекс].Расположить(ОбластьДляКартинки);
ОбластьДляКартинки.Текст = "";
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
КонецПроцедуры
Логика работы процедуры в комментариях кода.
Буду рад любой критике и научениям )