Имя: Пароль:
1C
1С v8
Прайс-лист с картинками
,
0 yurik85
 
04.04.19
11:23
Добрый день.
В конфигурации УНФ 1.5 пытаюсь написать отчет прайс-лист с картинками. Изучил достаточно много форумов.
Но не получается реализовать. Сделал отчет СКД. Получаю в запросе ссылки на номенклатуру и на элемент справочника НоменклатураПрисоединенныеФайлы.
В модуле отчета вставил процедуру ПриКомпоновкеРезультата и там заполняю область полученной картинкой. Текст модуля ниже. Но в итоге в отчете только список номенклатур, а в колонке Картинка пусто.
Подскажите, в чем может быть проблема?
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки, ДанныеРасшифровки);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    КоличествоСтрок = ДокументРезультат.ВысотаТаблицы ;
    КоличествоКолонок = ДокументРезультат.ШиринаТаблицы;
    
    Для СтрокаДокумента = 1 По КоличествоСтрок Цикл
        
        Для КолонкаДокумента = 1 По КоличествоКолонок Цикл
            
            Область = ДокументРезультат.Область(СтрокаДокумента, КолонкаДокумента);
            
            Расшифровка = Область.Расшифровка;
            
            Если ТипЗнч(Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
                
                ПоляРасшифровки = ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля();
                
                НайденноеПоле = ПоляРасшифровки.Найти("Картинка");
                
                Если НайденноеПоле <> Неопределено Тогда
                    
                    ХранимыйФайл = НайденноеПоле.Значение;
                    
                    Если ТипЗнч(ХранимыйФайл) = Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы") И ЗначениеЗаполнено(ХранимыйФайл) Тогда
                        
                        Картинка = Новый Картинка(ХранимыйФайл.ФайлХранилище.Получить());
                        
                        КартинаВДокументе = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
                        
                        КартинаВДокументе.Картинка = Картинка;
                        КартинаВДокументе.РазмерКартинки = РазмерКартинки.АвтоРазмер;
                        КартинаВДокументе.Расположить(Область);
                        
                    КонецЕсли;
                    
                КонецЕсли;
                
            КонецЕсли;
            
        КонецЦикла;
        
    КонецЦикла;
    
КонецПроцедуры
1 yurik85
 
04.04.19
11:46
up
2 yurik85
 
04.04.19
15:44
up
3 sqr4
 
04.04.19
15:46
НУ и че) КартинаВДокументе.Расположить(Область);  точку тыкайешь, встает?
4 sqr4
 
04.04.19
15:47
Новый Картинка(ХранимыйФайл.ФайлХранилище.Получить());
Какого типа?
5 sqr4
 
04.04.19
15:47
Даже не так
6 sqr4
 
04.04.19
15:47
ХранимыйФайл.ФайлХранилище.Получить() какого типа?
7 yurik85
 
05.04.19
09:58
(6) Тип Неопределено... Но при этом у значения ХранимыйФайл.ФайлХранилище тип "ХранилищеЗначения"
8 Chameleon1980
 
05.04.19
10:00
не там картинка
9 Chameleon1980
 
05.04.19
10:01
в разных конфах пересматривалось хранение картинок с одного места на другое
смотри как оно выводится на форме номенклатуры
10 Chameleon1980
 
05.04.19
10:02
возьми ИР (интсрументы разработчика) - там есть "исследовать объект" - полазь по данным
11 yurik85
 
05.04.19
10:37
(10) Спасибо за совет. В итоге разобрался. Получаю двоичные данные файла, а потом создаю переменную типа Картинка(СсылкаНаДвоичныеДанные)
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший