Имя: Пароль:
1C
1С v8
Вывод изображения в Отчете. Подкажите, что не так?
0 nihi1ist
 
15.12.18
13:41
Хочу вывести изображения номенклатуры и штрихкоды в отчете. Если с выводом ШК проблем нет, то с выводом изображений трудности. Пытаюсь адаптировать под себя урок:
https://курсы-по-1с.рф/news/2016-05-05-skd-free-video/

В уроке показано на примере Демо конфигурации которая идет с платформой. Я пытаюсь адаптировать под Розницу 2 со справочником НоменклатураПрисоединенныеФайлы.


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки();
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,НастройкиКомпоновки,ДанныеРасшифровки);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    КоличествоСтрок = ДокументРезультат.ВысотаТаблицы;
    КоличествоКолонок = ДокументРезультат.ШиринаТаблицы;
    
    Для СтрокаДокумента = 1 По КоличествоСтрок Цикл
        Для КолонкаДокумента = 1 По КоличествоКолонок Цикл
            Область = ДокументРезультат.Область(СтрокаДокумента,КолонкаДокумента);
            Расшифровка = Область.Расшифровка;
            Если ТипЗнч(Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
                ПоляРасшифровки = ДанныеРасшифровки.Элементы.Получить(Расшифровка).ПолучитьПоля();
                НайденноеПоле = ПоляРасшифровки.Найти("Изображение");
                Если Не НайденноеПоле = Неопределено Тогда
                    ХранимыйФайл = НайденноеПоле.Значение;
                    Если ТипЗнч(ХранимыйФайл) = Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы") И ЗначениеЗаполнено(ХранимыйФайл) Тогда
                        УстановитьПривилегированныйРежим(Истина);
                        Если ХранимыйФайл.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе Тогда
                            СтуктураРег = РегистрыСведений.ПрисоединенныеФайлы.Получить(Новый Структура("ПрисоединенныйФайл", ХранимыйФайл));
                            ДанныеИзображения = СтуктураРег.ХранимыйФайл.Получить();
                        Иначе
                            ДанныеИзображения = ?(ЗначениеЗаполнено(ХранимыйФайл.Том.ПолныйПутьWindows), ХранимыйФайл.Том.ПолныйПутьWindows, ХранимыйФайл.Том.ПолныйПутьLinux)
                            + ХранимыйФайл.ПутьКФайлу;
                        КонецЕсли;
                        УстановитьПривилегированныйРежим(Ложь);
                        
                        ИзображениеВДок = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
                        ИзображениеВДок.Картинка = ДанныеИзображения;
                        ИзображениеВДок.РазмерКартинки = РазмерКартинки.Пропорционально;
                        ИзображениеВДок.Расположить(Область);
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    
    ОбщегоНазначенияРТ.ВывестиДатуФормированияОтчета(ДокументРезультат);
    
КонецПроцедуры


Но что я видимо делаю не так. Получаю ошибку:
"Несоответствие типов".
1 nihi1ist
 
15.12.18
13:52
2 RomanYS
 
15.12.18
13:56
(1) отладчик включать умеешь, посмотри что в ДанныеИзображения и подумай как из этого получить картинку
3 nihi1ist
 
15.12.18
14:51
(2) Да, спасибо за подсказку. Сделал так:
ИзображениеДВ = Новый Картинка(ДанныеИзображения);
И снова та же ошибка:
"Несоответствие типов".

Данные есть:
https://s.mail.ru/L42o/kZYDbrG7R

Где ошибка непонятно.
4 nihi1ist
 
15.12.18
15:12
Данные в картинке вроде есть:

https://s.mail.ru/FKDo/pKECdRiUD
5 Мимохожий Однако
 
15.12.18
15:16
ТипЗнч(ДанныеИзображения) что показывает?
6 RomanYS
 
15.12.18
15:20
(3) в какой строке ошибка?
7 nihi1ist
 
15.12.18
15:21
8 RomanYS
 
15.12.18
15:29
(7) это зачем
в (6) другой вопрос
ответ на (5) виден в (4)
9 nihi1ist
 
15.12.18
15:34
> ответ на (5) виден в (4)

Можно прямым текстом, для особо одаренных?
10 nihi1ist
 
15.12.18
15:40
11 RomanYS
 
15.12.18
15:42
(10) включи отладчик и выполни построчно
(9) в ДанныеИзображения двоичные данные
12 GANR
 
15.12.18
16:58
(0) Откажись от этой затеи - будет куча геморроя, а в результате не пойми что.
13 nihi1ist
 
15.12.18
17:00
Вот на этом коде отладчик уже не останавливается.
ИзображениеВДок = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
                        ИзображениеВДок.Картинка = ИзображениеДВ;
                        ИзображениеВДок.РазмерКартинки = РазмерКартинки.Пропорционально;
                        ИзображениеВДок.Расположить(Область);
14 GANR
 
15.12.18
17:01
А нельзя ли выводить эту картинку не в сам отчет, а в окошко рядом при наведении курсора на ячейку?
15 GANR
 
15.12.18
17:05
+(14) Плюс ведь картинки можно показывать при наведении курсора на элемент в динамическом списке
16 nihi1ist
 
15.12.18
17:09
(15) неудобно.
17 Мигрень
 
17.12.18
09:52
(0) Вот, разбирался вчера как вывести картинки в прайсе в новых релизах УТ. Они там опять все переделали :)

http://catalog.mista.ru/public/964360/
18 nihi1ist
 
21.12.18
14:38
МО-ДЕ-РА-ТОР!!!