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

18.04.15

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
СКД с картинками
.erf 8,40Kb ver:a1
31
31 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

SALE! 15%

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

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

10000 руб.

02.09.2020    159685    876    399    

862

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

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

15.05.2024    8728    implecs_team    6    

47

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

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

3 стартмани

05.02.2024    7012    56    obmailok    21    

79

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

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

1 стартмани

31.01.2024    3155    5    Yashazz    1    

34

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

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

2 стартмани

11.12.2023    10833    23    John_d    25    

124

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

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

05.12.2023    8053    PROSTO-1C    15    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 Сейчас в теме
Спасибо, все получилось)
6. user1776496 04.09.24 15:27 Сейчас в теме
А как для УТ 11.5- есть такая обработка ?
Оставьте свое сообщение