Вывод фото товара в печатной форме в УТ 10.3

1. Andrey1804 3 11.11.18 13:07 Сейчас в теме
Всем доброго дня, подскажите как в 1с УТ 10.3 штатными способами вывести фото товара в печатной форме, есть какие нибудь варианты ?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. _Driver_ 1 11.11.18 13:18 Сейчас в теме
Копируешь стандартную печатную форму

Добавляешь колонку в макете для Фото

Добавляешь заполнение фото:

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

Добавляешь эту внешнюю печатную форму для нужных документов.
3. Andrey1804 3 11.11.18 15:40 Сейчас в теме
(2)Так просто ? сейчас попробую, Спасибо
4. Andrey1804 3 11.11.18 18:02 Сейчас в теме
(2)
ОбластьФото = Макет.ПолучитьОбласть("Строка|Фото");
Фото = ОбластьФото.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Фото.Расположить(ОбластьФото.Область(1, 1, 1, 1));
Фото.ВыводитьНаПечать = Истина;
Фото.РазмерКартинки = РазмерКартинки.Пропорционально;
Если ТипЗнч(ВыборкаСтрокТовары.Фото) = Тип("ХранилищеЗначения") Тогда
Фото.Картинка = ВыборкаСтрокТовары.Фото.Получить();
КонецЕсли;


Что то я не так сделал ...
Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (Фото)
11. Farhat95 18.05.22 15:39 Сейчас в теме
5. _Driver_ 1 11.11.18 18:11 Сейчас в теме
6. Andrey1804 3 11.11.18 18:51 Сейчас в теме
(5) просто вставил Ваш код.
8. _Driver_ 1 11.11.18 20:49 Сейчас в теме
(7)
и в запрос надо добавить из номенклатуры реквизит основноеИзображение в котором есть реквизит Хранилище и его надо выбрать и назвать Фото
7. Andrey1804 3 11.11.18 19:33 Сейчас в теме
Функция ПечатьСчетаЗаказа(Тип)

	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Номер,
	|	Дата,
	|	ДатаПоступления,
	|	ДоговорКонтрагента,
	|	Контрагент КАК Поставщик,
	|	Организация,
	|	СуммаДокумента,
	|	ВалютаДокумента,
	|	УчитыватьНДС,
	|	СуммаВключаетНДС
	|ИЗ
	|	Документ.ЗаказПоставщику КАК ЗаказПоставщику
	|
	|ГДЕ
	|	ЗаказПоставщику.Ссылка = &ТекущийДокумент";
	Шапка = Запрос.Выполнить().Выбрать();
	Шапка.Следующий();

	Запрос = Новый Запрос;

	Макет = ПолучитьМакет("СчетЗаказ");

	// Определим параметры запроса и табличного документа  
	// в зависимости от необходимости отображения артикула поставщика  
	Если Тип = "ЗаказПоДаннымПоставщика" Тогда

		ВыводитьКоды    = Истина;
		ТекстКодАртикул = "Код";
		Колонка         = "Артикул" + Символы.ПС + "поставщика";
		ОбластьШапки    = Макет.ПолучитьОбласть("ШапкаСКодом");
		ОбластьСтроки   = Макет.ПолучитьОбласть("СтрокаСКодом");

		Запрос.УстановитьПараметр("Контрагент", ЭтотОбъект.Контрагент);

		ТекстПоляТовараДляТоваров = "
		|	ВЫБОР КОГДА (ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) ЕСТЬ NULL ИЛИ ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) = """") ТОГДА ВЫРАЗИТЬ (ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) ИНАЧЕ ВЫРАЗИТЬ (НаименованиеКонтрагента КАК Строка(1000)) КОНЕЦ КАК Товар,";

		ТекстПоляТовараДляУслуг = "
		|	ВЫБОР КОГДА (ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) ЕСТЬ NULL ИЛИ ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) = """") ТОГДА ВЫРАЗИТЬ (ЗаказПоставщику.Номенклатура.НаименованиеПолное КАК Строка(1000)) ИНАЧЕ ВЫРАЗИТЬ (НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) КОНЕЦ КАК Товар,";

		ТекстПоляАртикула = ",
			|	АртикулКонтрагента";

		ТекстВыборкиАртикула = ", 
			|	АртикулНоменклатурыКонтрагента КАК АртикулКонтрагента";

		ТекстВыборкиНоменклатуры = ", 
			|	ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(1000)) КАК НаименованиеКонтрагента";

		ТекстИсточникАртикула = "
			|	ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
			|	ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
			|   И НоменклатураКонтрагентов.ХарактеристикаНоменклатуры = ЗаказПоставщику.ХарактеристикаНоменклатуры
			|	И НоменклатураКонтрагентов.Контрагент = &Контрагент";
			
		ТекстИсточникАртикулаБезХарактеристики = "
			|	ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
			|	ПО НоменклатураКонтрагентов.Номенклатура = ЗаказПоставщику.Номенклатура
			|	И НоменклатураКонтрагентов.Контрагент = &Контрагент";

		ТекстГруппировкиАртикулаИНоменклатуры = ", 
			|	АртикулНоменклатурыКонтрагента,
			|	ВЫРАЗИТЬ(НаименованиеНоменклатурыКонтрагента КАК Строка(1000))";

	Иначе

		ТекстПоляТовараДляТоваров = "
		|	ВЫРАЗИТЬ(ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК Строка(1000)) КАК Товар,";
		
		СтрокаВыборкиПоляСодержания = ОбработкаТабличныхЧастей.ПолучитьЧастьЗапросаДляВыбораСодержания("ЗаказПоставщику");
		
		ТекстПоляТовараДляУслуг = "
		|	" + СтрокаВыборкиПоляСодержания + " КАК Товар,";

		ДопКолонка = Константы.ДополнительнаяКолонкаПечатныхФормДокументов.Получить();
		Если ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Артикул Тогда
			ВыводитьКоды    = Истина;
			Колонка         = "Артикул";
			ТекстКодАртикул = "Артикул";
		ИначеЕсли ДопКолонка = Перечисления.ДополнительнаяКолонкаПечатныхФормДокументов.Код Тогда
			ВыводитьКоды    = Истина;
			Колонка         = "Код";
			ТекстКодАртикул = "Код";
		Иначе
			ВыводитьКоды    = Ложь;
			Колонка         = "";
			ТекстКодАртикул = "Код";
		КонецЕсли;

		Если ВыводитьКоды Тогда
			ОбластьШапки  = Макет.ПолучитьОбласть("ШапкаСКодом");
			ОбластьСтроки = Макет.ПолучитьОбласть("СтрокаСКодом");
		Иначе
			ОбластьШапки  = Макет.ПолучитьОбласть("ШапкаТаблицы");
			ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
		Конецесли;

		ТекстПоляАртикула                     = "";
		ТекстВыборкиАртикула                  = ""; 
		ТекстИсточникАртикула                 = "";
		ТекстГруппировкиАртикулаИНоменклатуры = ""; 

	КонецЕсли;

	ОбластьШапки.Параметры.Товар = "Товары (работы, услуги)";
	
	Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
	Запрос.Текст ="
	|ВЫБРАТЬ
	|	ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
	|	ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
	|	ВложенныйЗапрос.Количество,
	|	ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмерения,
	|	ВложенныйЗапрос.Цена,
	|	ВложенныйЗапрос.Сумма,
	|	ВложенныйЗапрос.СуммаНДС,
	|	ВложенныйЗапрос.Характеристика,
	|   2    КАК НомерТЧ,
	|	ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
	|	NULL КАК Серия" + ТекстПоляАртикула + "
	|ИЗ
	|	(
	|	ВЫБРАТЬ
	|		ЗаказПоставщику.Номенклатура,
	|		ЗаказПоставщику.ЕдиницаИзмерения,
	|		ЗаказПоставщику.Цена                        КАК Цена,
	|       МИНИМУМ(ЗаказПоставщику.НомерСтроки)        КАК НомерСтроки,	
	|		СУММА(ЗаказПоставщику.Количество)           КАК Количество,
	|		СУММА(ЗаказПоставщику.Сумма     )           КАК Сумма,
	|		СУММА(ЗаказПоставщику.СуммаНДС  )           КАК СуммаНДС,
	|		ЗаказПоставщику.ХарактеристикаНоменклатуры  КАК Характеристика" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
	|	ИЗ
	|		Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщику" + ТекстИсточникАртикула + "
	|
	|	ГДЕ
	|		ЗаказПоставщику.Ссылка = &ТекущийДокумент
	|
	|	СГРУППИРОВАТЬ ПО
	|		ЗаказПоставщику.Номенклатура,
	|		ЗаказПоставщику.ЕдиницаИзмерения,
	|		ЗаказПоставщику.Цена,
	|		ЗаказПоставщику.ХарактеристикаНоменклатуры" + ТекстГруппировкиАртикулаИНоменклатуры + "
	|	) КАК ВложенныйЗапрос
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ЗаказПоставщику.Номенклатура," + ТекстПоляТовараДляУслуг + "
	|	ЗаказПоставщику.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
	|	ЗаказПоставщику.Количество,
	|	ЗаказПоставщику.Номенклатура.ЕдиницаХраненияОстатков,
	|	ЗаказПоставщику.Цена,
	|	ЗаказПоставщику.Сумма,
	|	ЗаказПоставщику.СуммаНДС,
	|	NULL,
	|   3    КАК НомерТЧ,
	|   ЗаказПоставщику.НомерСтроки КАК НомерСтроки,	
	|	NULL КАК Серия" + ТекстВыборкиАртикула + "
	|	
	|ИЗ
	|	Документ.ЗаказПоставщику.Услуги КАК ЗаказПоставщику" + ТекстИсточникАртикулаБезХарактеристики + "
	|
	|ГДЕ
	|	ЗаказПоставщику.Ссылка = &ТекущийДокумент
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ВложенныйЗапрос.Номенклатура," + ТекстПоляТовараДляТоваров + "
	|	ВложенныйЗапрос.Номенклатура." + ТекстКодАртикул + " КАК КодАртикул,
	|	ВложенныйЗапрос.Количество,
	|	ВложенныйЗапрос.Номенклатура.ЕдиницаХраненияОстатков.Представление КАК ЕдиницаИзмерения,
	|	ВложенныйЗапрос.Цена,
	|	ВложенныйЗапрос.Сумма,
	|	ВложенныйЗапрос.СуммаНДС,
	|	NULL,
	|   4    КАК НомерТЧ,
	|	ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
	|	NULL КАК Серия" + ТекстПоляАртикула + "
	|ИЗ
	|	(
	|	ВЫБРАТЬ
	|		ЗаказПоставщику.Номенклатура,
	|		ЗаказПоставщику.Цена                        КАК Цена,
	|       МИНИМУМ(ЗаказПоставщику.НомерСтроки)        КАК НомерСтроки,	
	|		СУММА(ЗаказПоставщику.Количество)           КАК Количество,
	|		СУММА(ЗаказПоставщику.Сумма     )           КАК Сумма,
	|		0           								КАК СуммаНДС" + ТекстВыборкиАртикула + ТекстВыборкиНоменклатуры + "
	|	ИЗ
	|		Документ.ЗаказПоставщику.ВозвратнаяТара КАК ЗаказПоставщику" + ТекстИсточникАртикулаБезХарактеристики + "
	|
	|	ГДЕ
	|		ЗаказПоставщику.Ссылка = &ТекущийДокумент
	|
	|	СГРУППИРОВАТЬ ПО
	|		ЗаказПоставщику.Номенклатура,
	|		ЗаказПоставщику.Цена" + ТекстГруппировкиАртикулаИНоменклатуры + "
	|	) КАК ВложенныйЗапрос
	|
	|УПОРЯДОЧИТЬ ПО НомерТЧ ВОЗР, НомерСтроки ВОЗР
	|";
	
	ЗапросТовары = Запрос.Выполнить().Выгрузить();

	ТабДокумент = Новый ТабличныйДокумент;
	Если Тип = "ЗаказПоДаннымПоставщика" Тогда
		ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПоставщику_СчетЗаказПоДаннымПоставщик­а";
	Иначе
		ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПоставщику_СчетЗаказ";
	КонецЕсли;

	Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизации(Шапка.Организация, Шапка.Дата,);
	Руководитель = Руководители.Руководитель;
	Бухгалтер    = Руководители.ГлавныйБухгалтер;

	// Выводим шапку накладной
	ОбластьМакета                          = Макет.ПолучитьОбласть("Заголовок");
	ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Заказ поставщику");
	ТабДокумент.Вывести(ОбластьМакета);

	ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
	ОбластьМакета.Параметры.Заполнить(Шапка);
	ОбластьМакета.Параметры.ТекстПоставщик = "Поставщик:";
	ОбластьМакета.Параметры.ПредставлениеПоставщика  = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
	ТабДокумент.Вывести(ОбластьМакета);

	ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
	ОбластьМакета.Параметры.ТекстПокупатель = "Покупатель:";
	ОбластьМакета.Параметры.ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");;
	ОбластьМакета.Параметры.Получатель              = Шапка.Организация;
	ТабДокумент.Вывести(ОбластьМакета);

	// Вывести табличную часть
	Если ВыводитьКоды Тогда
		ОбластьШапки.Параметры.Колонка = Колонка;
	КонецЕсли;

	ТабДокумент.Вывести(ОбластьШапки);

	Сумма    = 0;
	СуммаНДС = 0;

	Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл

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

		Если ВыводитьКоды Тогда
			Если Тип = "ЗаказПоДаннымПоставщика" Тогда
				ОбластьСтроки.Параметры.КодАртикул = ВыборкаСтрокТовары.АртикулКонтрагента;
			Иначе
				ОбластьСтроки.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
			КонецЕсли;
		КонецЕсли;

		ТабДокумент.Вывести(ОбластьСтроки);

		Сумма    = Сумма    + ВыборкаСтрокТовары.Сумма;
		СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;

	КонецЦикла;

	// Вывести Итого
	ОбластьМакета                 = Макет.ПолучитьОбласть("Итого");
	ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
	ТабДокумент.Вывести(ОбластьМакета);

	// Вывести ИтогоНДС
	Если Шапка.УчитыватьНДС Тогда
		ОбластьМакета                    = Макет.ПолучитьОбласть("ИтогоНДС");
		ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(ЗапросТовары.Итог("СуммаНДС"));
		ОбластьМакета.Параметры.НДС      = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
		ТабДокумент.Вывести(ОбластьМакета);
	КонецЕсли;

	// Вывести Сумму прописью
	ОбластьМакета                          = Макет.ПолучитьОбласть("СуммаПрописью");
	СуммаКПрописи                          = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
	ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований " + ЗапросТовары.Количество()
	                                       + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
	ОбластьМакета.Параметры.СуммаПрописью  = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
	ТабДокумент.Вывести(ОбластьМакета);

	// Вывести подписи
	ОбластьМакета                    = Макет.ПолучитьОбласть("Подписи");
	ОбластьМакета.Параметры.Отпустил = "/"+ Руководитель + "/";
	ОбластьМакета.Параметры.Получил  = "/"+ Бухгалтер + "/";
	ТабДокумент.Вывести(ОбластьМакета);

	Возврат ТабДокумент;

КонецФункции // ПечатьСчетаЗаказа()
Показать
9. Andrey1804 3 11.11.18 20:54 Сейчас в теме
Вот так сделал, вроде выводит,
	    Изображение = ВыборкаСтрокТовары.Номенклатура.ОсновноеИзображение.Хранилище.Получить();
	   ОбластьРисунка = Макет.ПолучитьОбласть("Строка|Фото");
		
		Если Изображение = Неопределено Тогда
			 ОбластьРисунка.Параметры.ТекИзображение = "Нет картинки";
		Иначе
			 ОбластьРисунка.Рисунки["Изображение"].Картинка = Изображение;			
		КонецЕсли;         		
				
		ТабДокумент.Присоединить(ОбластьРисунка);
Показать
12. Farhat95 18.05.22 15:40 Сейчас в теме
(9)Это вместо запроса использовали ?
10. d.batovskiy 12.11.18 14:09 Сейчас в теме
Хранилище основного изображения лучше получать в запросе. Для скорости вывода.

Изображение = ВыборкаСтрокТовары.Номенклатура.ОсновноеИзображение.Хранилище.Получить();
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот