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

27.05.19

Разработка - Универсальные функции

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

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

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

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

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


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

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



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



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

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

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

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

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

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

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

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


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

Строка  

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

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

Строка

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

GUID в 1С 8.3 - как с ними быть

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

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4341    atdonya    22    

41

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    3886    ke.92@mail.ru    16    

60

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8567    YA_418728146    6    

139

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2023    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16018    131    sapervodichka    112    

129

Система контроля ведения учета [БСП]

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

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7201    quazare    8    

108
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Eva_electra 31.05.19 18:44 Сейчас в теме
А если у номенклатуры несколько картинок в файлах - можно вывести конкретную?
2. Hatson 528 24.09.20 10:46 Сейчас в теме
(1) что вы! Это черная магия ))
4. esqado 02.12.21 19:10 Сейчас в теме
(1) можно обратиться запросом к справочнику (если у вас это справочник), установить отбор по владельцу.
Потом, через типовые методы получить двоичные данные из регистра (если они в регистре).
Или сразу в одном запросе через левое соединение получить двоичные данные и установить необходимый фильтр.
3. stein13 9 14.12.20 11:59 Сейчас в теме
спасибо за подробную информацию!
5. esqado 02.12.21 19:11 Сейчас в теме
Как изменить высоту (размер) картинки по второму варианту, чтобы впихнуть картинку в оставшееся свободное пространство табличного документа?
6. user1589535 15.03.22 13:26 Сейчас в теме
7. Farhat95 24.08.22 10:25 Сейчас в теме
На УТ 10.3 пойдет такой код ?
8. CYCTAHOH 15.12.22 20:03 Сейчас в теме
Хороший метод, но может знаете почему вместе с картинкой у меня в ячейке может быть слово "картинка"?
11. user1893560 12.01.23 10:25 Сейчас в теме
(8) Ячейка должна быть пустой. В свойствах ячейки Заполнение: Текст.
Ali_q; doronin70; user1587185; +3 Ответить
15. user1086781 19.10.23 10:54 Сейчас в теме
(11) не слушай этих ит-шников в худи, надпись "Картинка" появляется если заполнить поле "Параметр" в свойстве ячейки, а надо заполнить поле "Параметр картинки"
Прикрепленные файлы:
9. taasha25 13 22.12.22 13:30 Сейчас в теме
В УТ 11.4 работает. Благодарю! Плюсик поставить не дает.
10. taasha25 13 22.12.22 13:31 Сейчас в теме
(9)Оказывается я уже поставила раньше.)
12. Kirill_A 02.03.23 14:22 Сейчас в теме
Все отлично но слово "Картинка" в ячейке отображается как текст- не знаю как его убрать...
14. fed9 26.09.23 15:04 Сейчас в теме
(12)
Добавь ПараметрКартинки
13. angabanga5 13.07.23 14:22 Сейчас в теме
тек чет у меня вариант с параметром не работает. вроде все удачно проходит по отладке, но картинки не видать в форме. нет ее .УПД пардон, это я лажанул
Оставьте свое сообщение