Картинки во внешней печатной форме (Шапка и табличная часть)

Публикация № 1067797

Печать - Печатные формы документов

ВПФ Картинка УТ Табличная часть

8
Способы вывести на печать картинку в шапке и в табличной части внешней печатной формы. Управление торговлей, редакция 11 (11.4.7.150).

Доброго времени суток.

Недавно столкнулся с задачей вывода картинок на печать из табличной части документа (Заказ клиента, картинки из описания номенклатуры)


Google выдал довольно много вариантов исполнения, но ни один из них у меня не сработал.
Поэтому решил написать эту статью, думаю начинающим специалистам будет полезно.

Итак есть два способа задать место для картинки в макете:
1) Вставить картинку в макет, как отдельный объект, обращение будет происходить по Имени



2) Привязать её к конкретной ячейке, обращение будет происходить по Параметру Картинки



В первом случае картинка не может быть больше выделенной области и при этом может быть перемещена пользователем при просмотре печатной формы.

-Пример перемещения картинки при просмотре:

-Вот так будет выглядеть изменение размера в свойствах картинки с Пропорционально   на  Реальный размер

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

Далее перейдем непосредственно к коду обработки

Функция, формирующая печатную форму:

Функция СформироватьПечатнуюФорму(СсылкаНаОбъект, ОбъектыПечати)
		
	ТабличныйДокумент = Новый ТабличныйДокумент;	
	ТабличныйДокумент.АвтоМасштаб = Истина;
	//ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
	МакетОбработки    = ПолучитьМакет("МакетМакетыч");
	
//Шапка   
	ЗаполнениеШапки(СсылкаНаОбъект, МакетОбработки, ТабличныйДокумент);

//ТЧ
	ЗаполнениеТЧ(СсылкаНаОбъект, МакетОбработки, ТабличныйДокумент);
		
	Возврат ТабличныйДокумент;
КонецФункции


Здесь нас интересует только вторая и третья (закомментированная) строки.

Строка  

ТабличныйДокумент.АвтоМасштаб = Истина;

необходима для того, чтобы картинки не выходили за границы листа при печати

Строка

ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;


позволят распечатать макет в альбомной ориентации по умолчанию.
 

Вывод картинки на форму рассмотрим на примере табличной части так как в обоих случаях код практически идентичен.
 

Функция ЗаполнениеТЧ(СсылкаНаОбъект, МакетОбработки, ТабличныйДокумент)
		
	Для Каждого ТекущаяСтрока из СсылкаНаОбъект.Товары Цикл
		
		ОбластьТовары                        = МакетОбработки.ПолучитьОбласть("Товары");	
		
		ОбластьТовары.Параметры.Номенклатура = ТекущаяСтрока.Номенклатура;
	
		ФайлКартинки 			             = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущаяСтрока.Номенклатура, "ФайлКартинки");
	
		Если ЗначениеЗаполнено(ФайлКартинки.Наименование) Тогда
			
			ДвоичныеДанныеФайла                   = РаботаСФайлами.ДвоичныеДанныеФайла(ФайлКартинки);	
			Если ТипЗнч(ДвоичныеДанныеФайла)      = Тип("Картинка") Тогда
				Картинка                          = ДвоичныеДанныеФайла;
			ИначеЕсли ТипЗнч(ДвоичныеДанныеФайла) = Тип("ДвоичныеДанные") Тогда
				Картинка                          = Новый Картинка(ДвоичныеДанныеФайла);
			Иначе
				Картинка                          = Новый Картинка;
			КонецЕсли;
			ОбластьТовары.Параметры.Фото1         = Картинка;
			
		КонецЕсли;
			
		Если НЕ ТабличныйДокумент.ПроверитьВывод(ОбластьТовары) Тогда
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		ТабличныйДокумент.Вывести(ОбластьТовары);
		
	КонецЦикла;
	
КонецФункции	

В 4ой строке находим файл картинки в базе

ФайлКартинки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущаяСтрока.Номенклатура, "ФайлКартинки");

ТекущаяСтрока.Номенклатура - Ссылка на необходимый элемент справочника

“ФайлКартинки” – Наименование реквизита содержащего картинку

В 5ой строке проверяем наличие картинки в вышеуказанном реквизите. Без этого при попытке печати форма выдаст ошибку, если хоть одна из картинок не заполнена.

Если ЗначениеЗаполнено(ФайлКартинки.Наименование) Тогда

ФайлКартинки.Наименование – проверяемый реквизит, если файла картинки нет, то его наименование будет не заполнено.
 

С 6-ой по 13-ую строки (как и 4-ая) фрагмент типового кода УТ 11.4 отвечающего за печать картинок

ДвоичныеДанныеФайла = РаботаСФайлами.ДвоичныеДанныеФайла(ФайлКартинки);	
	
    Если ТипЗнч(ДвоичныеДанныеФайла)      = Тип("Картинка") Тогда
		Картинка                          = ДвоичныеДанныеФайла;
	ИначеЕсли ТипЗнч(ДвоичныеДанныеФайла) = Тип("ДвоичныеДанные") Тогда
		Картинка                          = Новый Картинка(ДвоичныеДанныеФайла);
	Иначе
		Картинка                          = Новый Картинка;
	КонецЕсли;
	

И наконец непосредственно помещение картинки на макет:
Для первого способа:

ОбластьШапки.Рисунки.Логотип.Картинка = Картинка;

Для второго способа:   

ОбластьТовары.Параметры.Фото1 = Картинка;

Всё готово, вы великолепны !
Образец обработки будет в прикрепленных файлах.

8

Скачать файлы

Наименование Файл Версия Размер
Картинки во Внешней печатной форме (Шапка и табличная часть):
.epf 7,31Kb
27.05.19
1
.epf 1.0 7,31Kb 1 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Eva_electra 31.05.19 18:44 Сейчас в теме
А если у номенклатуры несколько картинок в файлах - можно вывести конкретную?
Оставьте свое сообщение