Имя: Пароль:
1C
1С v8
Картинка и поле HTML
,
0 Taliesien
 
29.03.18
15:39
Добрый день, коллеги.

Встала проблема выводить jpegи на управляемую форму в тонком клиенте. Интересует вывод в поле HTML, так как файлов может быть много, и заранее не известно сколько их будет.

Так вот, создавать временные файлы не хотелось бы, потому что я ленив, а их потом ещё и удалять надо будет. Пытался вставлять навигационную ссылку и адрес временного хранилища, но не работает. Гугление показало что у всех прекрасно работает ВременноеХранилище.

Сделал набросок используемого кода. Подскажите в чем моя ошибка.

&НаКлиенте
Процедура Получить(Команда)
    
    ДанныеФайла =  ПолучитьДанныеФайла (файл, УникальныйИдентификатор);
    АдресВременногоХранилища = ДанныеФайла.АдресВременногоХранилища;
    НавигационнаяСсылка = ДанныеФайла.НавигационнаяСсылка;
        
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла(ДанныеФайла.Расширение);
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
    ДвоичныеДанные.Записать(ИмяВременногоФайла);    
    
    КартинкаТэг = "<img src="""+ АдресВременногоХранилища +"""></img>";
    ПолеХТМЛ = "<html>
    |  <body>         
    |    " + КартинкаТэг + "    
    |  </body>
    |</html>  ";
    
    КартинкаТэг2 = "<img src="""+ НавигационнаяСсылка +"""></img>";
    ПолеХТМЛ2 = "<html>
    |  <body>         
    |    " + КартинкаТэг2 + "    
    |  </body>
    |</html>  ";

    КартинкаТэг3 = "<img src="""+ ИмяВременногоФайла +"""></img>";
    ПолеХТМЛ3 = "<html>
    |  <body>         
    |    " + КартинкаТэг3 + "    
    |  </body>
    |</html>  ";    
    
КонецПроцедуры

&НаСервереБезКонтекста
Функция  ПолучитьДанныеФайла   (файл, УникальныйИдентификатор)
    
    ДанныеКартинки = Новый Структура;
    ДанныеКартинки.Вставить("АдресВременногоХранилища", "");
    ДанныеКартинки.Вставить("АдресВременногоХранилищаКартинки", "");
    ДанныеКартинки.Вставить("НавигационнаяСсылка", "");
    ДанныеКартинки.Вставить("Расширение", "");

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

    ДанныеКартинки.АдресВременногоХранилища = АдресВременногоХранилища;
    ДанныеКартинки.АдресВременногоХранилищаКартинки = АдресВременногоХранилищаКартинки;
    ДанныеКартинки.НавигационнаяСсылка = НавигационнаяСсылка;
    ДанныеКартинки.Расширение =  ВыборкаДетальныеЗаписи.Расширение;
    
    Возврат ДанныеКартинки;    
    
КонецФункции
1 Taliesien
 
30.03.18
09:34
ап