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

27.05.19

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Картинки во Внешней печатной форме (Шапка и табличная часть):
.epf 7,31Kb ver:1.0
44
44 Скачать (1 SM) Купить за 1 850 руб.

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

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


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

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



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



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

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

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

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

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

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

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

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


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

Строка  

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

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

Строка

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

21.05.2024    20122    dimanich70    81    

144

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

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    4091    3    John_d    11    

57

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

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

12.02.2024    18058    atdonya    24    

56

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

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

30.11.2023    5502    ke.92@mail.ru    16    

65

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

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

28.08.2023    14729    YA_418728146    7    

166

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

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

2 стартмани

22.08.2023    3580    56    progmaster    8    

4

Инструментарий разработчика Универсальные функции Платформа 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    18478    171    sapervodichka    112    

135
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Eva_electra 31.05.19 18:44 Сейчас в теме
А если у номенклатуры несколько картинок в файлах - можно вывести конкретную?
2. Hatson 536 24.09.20 10:46 Сейчас в теме
(1) что вы! Это черная магия ))
4. esqado 02.12.21 19:10 Сейчас в теме
(1) можно обратиться запросом к справочнику (если у вас это справочник), установить отбор по владельцу.
Потом, через типовые методы получить двоичные данные из регистра (если они в регистре).
Или сразу в одном запросе через левое соединение получить двоичные данные и установить необходимый фильтр.
3. stein13 11 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 Сейчас в теме
тек чет у меня вариант с параметром не работает. вроде все удачно проходит по отладке, но картинки не видать в форме. нет ее .УПД пардон, это я лажанул
Оставьте свое сообщение