Имя: Пароль:
1C
1С v8
Вывод изображения в печать
0 Ly_Alena
 
14.10.15
13:44
Доброе утро! Задача такая: нужно вывести картинку из хранилища дополнительной информации в печать. Нужно ли в макете какое-то особенное место организовывать и как это сделать? Ну и собственно как это сделать?
Я в макет добавила картинку (Таблица - Рисунки - Картинка...) "ОсновноеИзображение"
В модуле пишу:
ТаблицаНоменклатуры = Новый ТаблицаЗначений;
    ТаблицаНоменклатуры.Колонки.Добавить("ГруппаНоменклатуры",,"ГруппаНоменклатуры");
    ТаблицаНоменклатуры.Колонки.Добавить("Номенклатура",,"Номенклатура");    
    ТаблицаНоменклатуры.Колонки.Добавить("Цена",,"Цена");
    
    //ТаблицаНоменклатуры.Свернуть("ГруппаНоменклатуры, Номенклатура", "Цена");
    //ТаблицаНоменклатуры.Сортировать("ГруппаНоменклатуры");

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_РасчетПрайсовойЦены";

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

    Запрос.УстановитьПараметр("МояТаблицаСТоварами", Товары);
    ВыборкаГруппы = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

        ВыборкаДетальныеЗаписи = Результат.Выбрать();

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

        ТабДокумент.Вывести(ОбластьМакета);
    КонецЦикла;

Ниче не выводит
1 Ly_Alena
 
14.10.15
13:45
Пока писала - уже вечер наступил...
2 Любопытная
 
14.10.15
13:47
Запросы в цикле, ай-яй-яй как печально.
3 Ly_Alena
 
14.10.15
13:47
Область где картинка "ОсновноеИзображение", у картинки имя "Изображение"
4 Ly_Alena
 
14.10.15
13:47
(2) это уже от безысходности, по разному пробовала
5 Любопытная
 
14.10.15
13:49
Макет = ПолучитьОбщийМакет("ПечатьКартинки");
        Областьшапка = Макет.ПолучитьОбласть("Шапка");
        ОбластьШапка.Рисунки.D1.Картинка = СтрокаТЧ.Страница.Хранилище.Получить();

У меня вот так написано. Выводится
6 Любопытная
 
14.10.15
13:50
D1 это имя рисунка в макете, если что
7 Ly_Alena
 
14.10.15
14:01
(6) что такое "Страница"?
8 Ly_Alena
 
14.10.15
14:05
Написала так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    МояТаблицаСТоварами.Номенклатура,
|    МояТаблицаСТоварами.Цена,
|    МояТаблицаСТоварами.ГруппаНоменклатуры,
|    МояТаблицаСТоварами.ОсновноеИзображение
|ПОМЕСТИТЬ ВТТовары
|ИЗ
|    &МояТаблицаСТоварами КАК МояТаблицаСТоварами
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ВТТовары.ГруппаНоменклатуры КАК ГруппаНоменклатуры,
|    ВТТовары.Номенклатура,
|    ВТТовары.Цена,
|    ВТТовары.ОсновноеИзображение
|ИЗ
|    ВТТовары КАК ВТТовары
|ИТОГИ ПО
|    ГруппаНоменклатуры";

Запрос.УстановитьПараметр("МояТаблицаСТоварами", Товары);
ВыборкаГруппы = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

Ошибка:
{ВнешняяОбработка.РасчетПрайсовойЦены.МодульОбъекта(70)}: Поле объекта не обнаружено (Изображение)
    ОбластьМакета.Рисунки.Изображение.Картинка = ВыборкаНоменклатура.ОсновноеИзображение.Хранилище.Получить();
9 Ly_Alena
 
14.10.15
14:14
Вот так получилось:
ОбластьМакета.Рисунки["Изображение"].Картинка = ВыборкаНоменклатура.ОсновноеИзображение.Хранилище.Получить();

Всем спасибо!