Имя: Пароль:
1C
1С v8
Как передать в макет картинку
0 gsdgdgds
 
27.06.16
22:16
Подскажите как указать путь к картинке если она находится в справочнике Автомобили. а При выборке я получаю только ссылку на обьект.
///////////////////
.................

        |    Отгрузка.Ссылка,
        |    Отгрузка.ФотоПустой1 как фото
        |ИЗ
        |    Документ.Отгрузка КАК Отгрузка,
............

Область = Макет.ПолучитьОбласть("Шапка");
Рисунок = Область.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Верх = 5;
Рисунок.Высота = 10;
Рисунок.Ширина = 10;
Рисунок.Лево = 5;
Рисунок.Картинка = Новый Картинка(ПутьККартинке?????);
Рисунок.РазмерКартинки = РазмерКартинки.РеальныйРазмер;

ТабДок.Вывести(Область);
1 gsdgdgds
 
27.06.16
22:19
(0)если написать
Рисунок.Картинка = Новый Картинка(ВыборкаДетальныеЗаписи.Фото);
то выходит сообщение: Несоответствие типов (параметр номер '1')

Как быть?
2 Lexey_
 
27.06.16
22:22
(1) Новый Картинка(ВыборкаДетальныеЗаписи.Фото.Получить())
3 Chameleon1980
 
27.06.16
22:24
Функция ПолучитьИзображение(ПрисоединенныйФайл)
    
    КартинкаПоумолчанию = Неопределено;
    
    Если ТипЗнч(ПрисоединенныйФайл) =
        Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы") Тогда                
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ПрисоединенныеФайлы.ХранимыйФайл
        |ИЗ
        |    РегистрСведений.ПрисоединенныеФайлы КАК ПрисоединенныеФайлы
        |ГДЕ
        |    ПрисоединенныеФайлы.ПрисоединенныйФайл = &ПрисоединенныйФайл";         
        Запрос.УстановитьПараметр("ПрисоединенныйФайл", ПрисоединенныйФайл);         
        Результат = Запрос.Выполнить();
        Если НЕ Результат.Пустой() Тогда
            Выборка = Результат.Выбрать();
            Выборка.Следующий(); // Получаем двоичные данные катинки
            Возврат Новый Картинка(Выборка.ХранимыйФайл.Получить(), Истина);
        Иначе // Если данные отсутствуют, получаем стандартное изображение из
            // дополнительного макета внешнего отчета
            //Возврат Неопределено;
            Возврат Новый Картинка(ПолучитьМакет("НетКартинки"));
        КонецЕсли;
    КонецЕсли;
    
    Возврат КартинкаПоумолчанию;
    
КонецФункции
4 gsdgdgds
 
27.06.16
22:29
(2) Метод объекта не обнаружен (Получить)
5 Lexey_
 
27.06.16
22:30
(4) может расскажешь, тип какой у реквизита?
6 gsdgdgds
 
27.06.16
22:33
(5)СправочникСсылка.АвтомобилиПрисоединенныеФайлы
7 Lexey_
 
27.06.16
22:36
(6) у него есть реквизит с типом ХЗ?Если да, то картинку из этого реквизита можно получить методом Получить()
8 Chameleon1980
 
27.06.16
22:37
(6) а теперь ищем у этого справочника реквизит с типом ХранилищеЗначений

это так - навскидку

мы жеж даже конфы не знаем
9 Chameleon1980
 
27.06.16
22:38
реквизит может называться, например, "ХранимыйФайл"
10 gsdgdgds
 
27.06.16
22:39
(8)реквизит ФайлХранилище
11 Lexey_
 
27.06.16
22:41
(10) ну вот и славно
12 Chameleon1980
 
27.06.16
22:41
вот у него есть метод "получить"

там данные картинки (опять жеж - навскидку)
13 gsdgdgds
 
27.06.16
22:47
(12)
Рисунок.Картинка = ПолучитьИзображение(ВыборкаДетальныеЗаписи.Фото);

Функция ПолучитьИзображение(ПрисоединенныйФайл)
...........
Возврат Новый Картинка(Выборка.ФайлХранилище.Получить(), Истина);
...........

Ошибка: Несоответствие типов
14 Chameleon1980
 
27.06.16
22:54
(13) на какой строке ошибка?
+ отладчик в руки - смотрим типы переменных, думаем
15 Lexey_
 
27.06.16
22:54
(13) да возьми ты уже отладчик и не копируй , в (2) ошибка - "Новый Картинка" не нужно, "Выборка.ФайлХранилище.Получить()" вернет картинку
16 Lexey_
 
27.06.16
22:55
*(13) да возьми ты уже отладчик и не копируй код бездумно, в (2) ошибка - "Новый Картинка" не нужно, "Выборка.ФайлХранилище.Получить()" вернет картинку
17 gsdgdgds
 
27.06.16
23:04
(16) Отладчиком проходит ровно, в значении Выборка.ФайлХранилище.Получить()

ФайлХранилище    {(1,1)}: Переменная не определена (ФайлХранилище)
18 Lexey_
 
27.06.16
23:05
(17) весь код давай
19 gsdgdgds
 
27.06.16
23:08
(18)
Рисунок.Картинка = ПолучитьИзображение(ВыборкаДетальныеЗаписи.Фото);
        Рисунок.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
        ТабличныйДокумент.Вывести(Область);
        
    КонецЕсли;
    
    Возврат ТабличныйДокумент;

        
КонецФункции

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

            Возврат Новый Картинка(Выборка.ФайлХранилище.Получить(), Истина);
        Иначе// Если данные отсутствуют, получаем стандартное изображение из

            // дополнительного макета внешнего отчета

            //Возврат Неопределено;

            Возврат Новый Картинка(ПолучитьМакет("НетКартинки"));
        КонецЕсли;
    КонецЕсли;
    
    Возврат КартинкаПоумолчанию;
    
КонецФункции
20 Lexey_
 
27.06.16
23:22
(19) ты, походу, не понимаешь, что пишешь, тупо копипастишь, короче, отладчик тебе в помощь
21 gsdgdgds
 
27.06.16
23:29
(20) если я правильно понял то мне нужно передать в картинку из запроса реквизит который имеет тип ХранилищеЗначений.
22 Lexey_
 
27.06.16
23:34
Основная теорема систематики: Новые системы плодят новые проблемы.