helpf.pro
Регистрация

v8: Вывод картинки на печать

kat2504
08.05.2017 17:21Прочитано: 350

Есть документ КоммерческоеПредложение в нем табличная часть Оборудование в ней реквизиты Наименование(тип Справочники.Номенклатура), Фото (тип Справочники.НоменклатураПрисоединенныеФайлы) и т.д....

При заполнении строки Наименование происходит автоматическое заполнение всех остальных строк включая столбец Фото (но заполняется названием этого фото).

В справочнике Номенклатура есть реквизит ФайлКартинки (тип Справочники.НоменклатураПрисоединенныеФайлы) через него загружаются изображения

Все изображения хранятся в РегистрыСведений.ПрисоединенныеФайлы в котором есть Измерения ПрисоединенныйФайл и ресурс ХранимыйФайл (тип ХранилищеЗначения)

Мне нужно, чтобы при печати выводилось не название этого фото, а само изображение. Помогите исправить код.

В модуле менеджере:

Код 1C v 8.3
 

Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Документы.КоммерческоеПредложение.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КоммерческоеПредложение.ВидПредложения,
| КоммерческоеПредложение.Дата,
| КоммерческоеПредложение.ИтогоСтоимость,
| КоммерческоеПредложение.Контрагент,
| КоммерческоеПредложение.Номер,
| КоммерческоеПредложение.СтоимостьОборудования,
| КоммерческоеПредложение.СтоимостьРабот,
| КоммерческоеПредложение.Оборудование.(
| НомерСтроки,
| Фото,
| Группа,
| Наименование,
| Описание,
| Количество,
| ЕдиницаИзмерения,
| Цена,
| Сумма
| ),
| КоммерческоеПредложение.РаботыУслуги.(
| НомерСтроки,
| Наименование,
| Количество,
| ЕдиницаИзмерения,
| Цена,
| Сумма
| )
|ИЗ
| Документ.КоммерческоеПредложение КАК КоммерческоеПредложение
|ГДЕ
| КоммерческоеПредложение.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();


ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьОборудованиеШапка = Макет.ПолучитьОбласть("ОборудованиеШапка");
ОбластьОборудование = Макет.ПолучитьОбласть("Оборудование");
ОбластьРаботыУслугиШапка = Макет.ПолучитьОбласть("РаботыУслугиШапка");
ОбластьРаботыУслуги = Макет.ПолучитьОбласть("РаботыУслуги");
ТабДок.Очистить();


ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;


ТабДок.Вывести(ОбластьЗаголовок);


Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());


ТабДок.Вывести(ОбластьОборудованиеШапка);
ВыборкаОборудование = Выборка.Оборудование.Выбрать();
Пока ВыборкаОборудование.Следующий() Цикл
ОбластьОборудование.Параметры.Заполнить(ВыборкаОборудование);
ТабДок.Вывести(ОбластьОборудование, ВыборкаОборудование.Уровень());

КонецЦикла;



ТабДок.Вывести(ОбластьРаботыУслугиШапка);
ВыборкаРаботыУслуги = Выборка.РаботыУслуги.Выбрать();
Пока ВыборкаРаботыУслуги.Следующий() Цикл
ОбластьРаботыУслуги.Параметры.Заполнить(ВыборкаРаботыУслуги);
ТабДок.Вывести(ОбластьРаботыУслуги, ВыборкаРаботыУслуги.Уровень());
КонецЦикла;


ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры




В модуль команды:

Код 1C v 8.3
 
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
ТабДок = Новый ТабличныйДокумент;
Печать(ТабДок, ПараметрКоманды);


ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();
//}}
КонецПроцедуры


&НаСервере
Процедура Печать(ТабДок, ПараметрКоманды)
Документы.КоммерческоеПредложение.Печать(ТабДок, ПараметрКоманды);
КонецПроцедуры


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

Код 1C v 8.3
 ТабДок = Новый ТабличныйДокумент; 
Макет = ОбработкаОбъект.ПолучитьМакет("Макет");
ОбластьКартинки = Макет.ПолучитьОбласть("ОбластьСКартинкой");
Картинка = Новый Картинка(ПутьККартинке);

// Элемент управления "Логотип" входит в коллекцию картинок области.
ОбластьКартинки.Рисунки.Логотип.Картинка = Картинка;
ТабДок.Вывести(ОбластьКартинки);

ТабДок.Показать();
Yandex
Возможно, вас также заинтересует
Реклама на портале
all4cf
14.05.2017 20:02Ответ № 1

Картинку нужно вытащить из хранилища и потом уже выводить в табличный документ, примерно так:

Код 1C v 8.х
 Попытка
Если НЕ Выборка.Номенклатура.ОсновноеИзображение.Пустая() Тогда
КартинкаВПамяти = Выборка.Номенклатура.ОсновноеИзображение.Хранилище.Получить();
Путь = КаталогВременныхФайлов()+ "1С_Картинка_"+Формат(ТекущаяДата(),"ДФ=yyyyMMddЧЧммсс")+".jpg";
КартинкаВПамяти.Записать(Путь);
УменьшитьИзображение(Путь);
Рисунок = СекцияИзображение.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Картинка = Новый Картинка(Путь);
ОбластьИзображения  = СекцияИзображение.Области.ОбластьИзображения;
Рисунок.Расположить(ОбластьИзображения);
Рисунок.РазмерКартинки = РазмерКартинки.Пропорционально;
КонецЕсли;
Исключение
Сообщить("Произошла ошибка: " + ОписаниеОшибки());
КонецПопытки;
мТабДок.Присоединить(СекцияИзображение);
kat2504
15.05.2017 13:11Ответ № 2

Выдало вот такие ошибки.

{Документ.КоммерческоеПредложение.МодульМенеджера(81,14)}: Переменная не определена (СекцияИзображение)

Рисунок = <<?>>СекцияИзображение.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); (Проверка: Сервер)

{Документ.КоммерческоеПредложение.МодульМенеджера(83,26)}: Переменная не определена (СекцияИзображение)

ОбластьИзображения = <<?>>СекцияИзображение.Области.ОбластьИзображения; (Проверка: Сервер)

{Документ.КоммерческоеПредложение.МодульМенеджера(90,23)}: Переменная не определена (СекцияИзображение)

мТабДок.Присоединить(<<?>>СекцияИзображение); (Проверка: Сервер)

{Документ.КоммерческоеПредложение.МодульМенеджера(90,2)}: Переменная не определена (мТабДок)

<<?>>мТабДок.Присоединить(СекцияИзображение); (Проверка: Сервер)

{Документ.КоммерческоеПредложение.МодульМенеджера(80,4)}: Процедура или функция с указанным именем не определена (УменьшитьИзображение)

<<?>>УменьшитьИзображение(Путь); (Проверка: Сервер)

Если не сложно объясните сто такое СекцияИзображения?

Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.