Отчет СКД с картинками, стандартными пользовательскими настройками (УТ 10.3)

18.04.15

Разработка - СКД

Ничего особенного... Публикация для тех, кто впервые столкнулся с такой задачей. Мой опыт и консолидация информации из инета в тему "СКД с картинками".
При компоновке отчета поле "Картинка" обладает всеми свойствами любого другого поля в отчете, в том числе выступать как уровень группировки - как это показано в примере.

Скачать исходный код

Наименование Файл Версия Размер
СКД с картинками
.erf 8,40Kb
30
.erf a1 8,40Kb 30 Скачать

В данном случае требовался отчет по розничным складам. Вся нужная информация выбиралась из базы следующим запросом в схеме компановке данных:

ВЫБРАТЬ
ТоварыВРозницеОстатки.Склад,
ТоварыВРозницеОстатки.Номенклатура,
ТоварыВРозницеОстатки.ХарактеристикаНоменклатуры,
ТоварыВРозницеОстатки.Качество,
ТоварыВРозницеОстатки.КоличествоОстаток,
ТоварыВРозницеОстатки.СуммаПродажнаяОстаток,
NULL КАК КоличествоРасход,
NULL КАК СуммаПродажнаяРасход
ИЗ
РегистрНакопления.ТоварыВРознице.Остатки({(&КонецПериода)}, ) КАК ТоварыВРозницеОстатки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ТоварыВРозницеОбороты.Склад,
ТоварыВРозницеОбороты.Номенклатура,
ТоварыВРозницеОбороты.ХарактеристикаНоменклатуры,
ТоварыВРозницеОбороты.Качество,
NULL,
NULL,
ТоварыВРозницеОбороты.КоличествоРасход,
ТоварыВРозницеОбороты.СуммаПродажнаяРасход
ИЗ
РегистрНакопления.ТоварыВРознице.Обороты(, , Регистратор, ) КАК ТоварыВРозницеОбороты
ГДЕ
ТоварыВРозницеОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
ИЛИ ТоварыВРозницеОбороты.Регистратор ССЫЛКА Документ.ЧекККМ
{ХАРАКТЕРИСТИКИ
ТИП(Справочник.Номенклатура)
ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.СвойстваОбъектов
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Представление
ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
ПОЛЕОБЪЕКТА Объект
ПОЛЕВИДА Свойство
ПОЛЕЗНАЧЕНИЯ Значение }

Самого поля вывода изображения в запросе нет. Стоит обратить внимание на текст в запросе:

{ХАРАКТЕРИСТИКИ
ТИП(Справочник.Номенклатура)
ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.СвойстваОбъектов
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Представление
ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
ПОЛЕОБЪЕКТА Объект
ПОЛЕВИДА Свойство
ПОЛЕЗНАЧЕНИЯ Значение }

который позволит выводит поля и использовать в условиях отбора отчета свойства и характеристики номенклатуры. Этот текст формируется автоматически конструктором запроса в схеме компановки данных при заполнении вкладки "Характеристики":

 Заполнение вкладки характеристики

Само поле вывода изображения формируем введением дополнительного вычисляемого поля:

Вычисляемое поле

Выражение представления ("Нет изображения " + Номенклатура.Код) в последующем выполнит свою функцию в процедуре программного вывода отчета.

Для программного вывода отчета с выводом изображений существует всего одна процедура в модуле отчета:

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

Логика работы процедуры в комментариях кода. 

Буду рад любой критике и научениям )

СКД изображения

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    125012    683    389    

732

Генератор схемы компоновки данных (СКД), написание кода схемы программно

Инструментарий разработчика СКД Платформа 1С v8.3 Конфигурации 1cv8 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

По выбранной схеме компоновки данных генерирует программный код, который генерирует СКД, аналогичную исходной схеме. Есть дополнительные инструменты для просмотра дерева схемы, сравнение исходной схемы и полученной по коду, а также сравнение изменений в сгенерированном коде для исходной схемы и для измененной.

3 стартмани

05.02.2024    4379    31    obmailok    19    

69

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2150    2    Yashazz    0    

31

СКД на JavaScript в 1С

СКД WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    8386    20    John_d    25    

123

Использование менеджера временных таблиц в СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Рассмотрим еще не получивший широкого распространения способ работы с внешними данным в СКД. В процессе обсуждения работы с СКД выяснилось, что многие не знакомы со способом помещения туда временной таблицы, полученной предварительно. Статья будет полезна разработчикам, знакомым с программным созданием СКД.

05.12.2023    4934    PROSTO-1C    13    

63

Модель СКД

Инструментарий разработчика СКД Платформа 1С v8.3 Система компоновки данных Абонемент ($m)

DSL для работы с СКД.

1 стартмани

15.11.2023    6017    15    kalyaka    5    

87

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Простые приемы работы с отчетами на СКД. Что нужно знать пользователю про настройку отчетов, чтобы использовать их на полную катушку.

18.09.2023    7376    accounting_cons    7    

29

Разрыв страницы в СКД. Легко!

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

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

01.09.2023    4774    KVIKS    15    

80
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Шапокляк 24.03.16 19:10 Сейчас в теме
Огромное спасибо! Наконец-то у меня СКД с картинками!
По разработке есть одно дополнение.
У вас на картинке вкладки Характеристика описано присоединение свойств. Наверняка вы столкнулись с неудобством отбора, когда в отбор лезут все имеющиеся свойства, а не только свойства номенклатуры. Я вышла из положения использованием Запроса, а не таблицы:
Все то же самое, только Источник видов Запрос с таким текстом
ВЫБРАТЬ
			СвойстваОбъектов.Ссылка,
			СвойстваОбъектов.Наименование,
			СвойстваОбъектов.НазначениеСвойства,
			СвойстваОбъектов.ТипЗначения
		ИЗ
			ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
		ГДЕ
			СвойстваОбъектов.ПометкаУдаления = ЛОЖЬ
			И СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура)
Показать
vtatarskih; +1 Ответить
2. vtatarskih 11 25.03.16 03:41 Сейчас в теме
(1) Шапокляк, спасибо за дополнение )
3. grandr 28.11.18 16:06 Сейчас в теме
в ут 10.3 1с 8.3 отчет выводит пустую таблицу при любых отборах. В чем может быть дело?
4. Serj1C 483 21.02.19 12:12 Сейчас в теме
8.3.14 из коробки появилось:

Для системы компоновки данных реализована возможность отображения картинок, расположенных в информационной базе. В отчете могут отображаться картинки, заданные в качестве навигационной ссылки на картинку и собственно картинкой, размещенной в реквизите типа ХранилищеЗначения.
Для объектов ОформлениеКомпоновкиДанных и ОформлениеЯчейкиТаблицыОбластиКомпоновкиДанных реализованы свойства ВыводитьКартинку, РазмерКартинки, ПоложениеТекстаОтносительноКартинки, ГоризонтальноеПоложениеКартинки, ВертикальноеПоложениеКартиинки.

В режиме совместимости с версией 8.3.13 поведение по умолчанию не изменилось.

Источник: https://dl04.1c.ru/content/Platform/8_3_14_1565/1cv8upd_8_3_14_1565.htm#a06301e2-a9ff-11e8-a3f7-0050569f678a
5. tank41 29.07.21 15:13 Сейчас в теме
Спасибо, все получилось)
Оставьте свое сообщение