Имя: Пароль:
1C
1С v8
Добавление картинки во внешнюю печатную форму
,
0 D1sly
 
26.01.22
08:52
Всех приветствую, помогите разобраться. Имеется документ ЗаказКлиента с табличной частью Товары. В каждой номенклатуре есть картинка товара, нужно каждый товар вывести в табличный документ с этой картинкой. Ошибку выдает такую: {ВнешняяОбработка.КоммерческоеПредложениеДляЗаказаКлиента.МодульОбъекта(97)}: Ошибка при вызове конструктора (Картинка)
        КартинкаОбъект = Новый Картинка(КартинкаВПамяти, Истина);
по причине:
Несоответствие типов (параметр номер '1')

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

        КартинкаВПамяти = ВыборкаДетальныеЗаписи.ФайлХранилище.Получить();
        КартинкаОбъект = Новый Картинка(КартинкаВПамяти, Истина);
        Попытка
            ОбластьСтрокиТаблицы.Рисунки.D1.Картинка = КартинкаОбъект;
        Исключение
        КонецПопытки;
        
        ОбластьСтрокиТаблицы.Параметры.Артикул = ВыборкаДетальныеЗаписи.Артикул;
        ОбластьСтрокиТаблицы.Параметры.НазваниеТовара = ВыборкаДетальныеЗаписи.Наименование;
        ОбластьСтрокиТаблицы.Параметры.Цена = ВыборкаДетальныеЗаписи.Цена;
        ОбластьСтрокиТаблицы.Параметры.ОписаниеТовара = ВыборкаДетальныеЗаписи.Описание;
        
        ТабДок.Вывести(ОбластьСтрокиТаблицы);
    КонецЦикла;
    
    Возврат ТабДок;
    
КонецФункции

1с 8.3, УТ 11, УФ
1 acht
 
26.01.22
09:44
ВыборкаДетальныеЗаписи.ФайлХранилище.Получить() у какой-то номенклатуры = Неопределено

Ваш К.О.
2 D1sly
 
26.01.22
10:21
Написал условие
Если КартинкаВПамяти <> Неопределено тогда
    КартинкаОбъект = Новый Картинка(КартинкаВПамяти, Истина);

Ошибка исчезла, но картинки не выводятся(
3 Ёпрст
 
26.01.22
10:46
(2) и ? Отладчиком твоя картинка хоть получается с хранилища ?
4 Ёпрст
 
26.01.22
10:47
И.. занафига D1 ? задай имя картинки, обращайся по имени
5 D1sly
 
26.01.22
11:13
(3) КартинкаВПамяти всегда неопределено.
КартинкаВПамяти = ВыборкаДетальныеЗаписи.ФайлХранилище.Получить(); ничего не получает я так понимаю?
6 Ёпрст
 
26.01.22
11:23
(5) ну да
И с чего уверенность, что картинка в хранилище валяется, а не на диске ? Там можно выбирать, где именно оно
7 Ёпрст
 
26.01.22
11:25
ТипХраненияФайла выведи в своём запросе и сымотри, где картинка, ежели она есть
8 D1sly
 
26.01.22
11:30
(7) ТипХраненияФайла в Информационной базе выводит
9 D1sly
 
26.01.22
11:36
10 Ёпрст
 
26.01.22
12:15
(9) ну а сама картинка то хоть есть ?
11 Ёпрст
 
26.01.22
12:15
хоть в одной номенклатуре ?
12 D1sly
 
26.01.22
12:40
(11) Да, я создал несколько номенклатур, и сразу картинки добавил вот сюда
https://ibb.co/c31tcPz
13 Ёпрст
 
26.01.22
12:51
(12) ну, выведи еще ПутьКФайлу.. сдаётся мне, там всегда на диске картинка валяется у тебя
14 Ёпрст
 
26.01.22
12:56
И если всё же тип в хранилище, то там всё валяется в РегистрСведений.ДвоичныеДанныеФайлов

посмотри модкль РаботаСФайлами и процу типа Функция ДвоичныеДанныеФайла