Отображение веб страницы из базы

Добрый день.

Как обычно "каверзный вопрос":

В 3.3 имеется деталь "Веб страница", которая реализована на базе
ActiveX компонента Shell.Explorer.2. А точнее его метода Navigate

в 3.0 это также прекрасно работает, к примеру:

ActiveXControl.ActiveXObject.Navigate2("about:blank",null,null,null,null);

открывает пустое окошко браузера.

Имеется необходимость хранить и отображать HTML код (и не только) из базы, для этого в базе реализуем поле типа BLOB и положим туда HTML страницу.

Самый простой, однако абсолютно неэлегантный способ:

достать данные из BLOB, сохранить их на локальный диск,
и далее отобразить через Navigate и URL типа: "file://...."

Однако хочется красоты и удобства, а именно загрузка в экземпляр
браузера через стрим, и, как оказалось, это возможно на vb.net:
http://vbcity.com/forums/topic.asp?tid=111957&page=1

Технология такой возможности описана тут:
http://msdn.microsoft.com/en-us/library/aa752047(VS.85).aspx

Получить Document отвечающий за страницу удалось без проблем:
var clsDocument=ActiveXControl.ActiveXObject.Document;

(кстати в простейшем случае, можно воспользоваться методом
write, который работает: clsDocument.write("Мой текст");,
однако необходимо открывать не только html, но и другие
виды документов, которые MSIE показывает при открытии через file:///);

А далее в примере на vb.net идет преобразование типов, для
вызова методов другого интерфейса:

// initiailize the document using the IPersistStreamInit COM interface...
DirectCast(clsDocument, IPersistStreamInit).InitNew()
// тут идет подготовка данных в stream и затем:
//load the content into the browser..
DirectCast(clsDocument, IPersistStreamInit).Load(clsStream)

Может быть местные гуру или программеры TSCRM подскажут:
возможно ли это и если да, то как.

---
TSCRM 3.0.4.109 X25 100 лицензий.
Microsoft SQL Server Enterprise Edition (64-bit)
Version 9.00.3054.00

Нравится

6 комментариев

Здравствуйте, Сергей!

Потоки на уровне конфигурации реализованы в версии Terrasoft CRM 3.3.0.
В Вашем случае, когда Вы используете проектное решение версии Terrasoft CRM 3.0.4, Вам необходимо сохранять файл в Temp и далее отображать его.

Terrasoft Support Team

Отлично!

Тогда подскажите, как это реализовать в 3.3 ибо в настоящий момент
у нас на тесте 3.3.0.42, которую нам любезно предоставила Ваша компания.

--
TSCRM 3.0.4.109 X25 100 лицензий.
Microsoft SQL Server Enterprise Edition (64-bit)
Version 9.00.3054.00

Добрый день, Сергей!

К сожалению объект Document не поддерживает интерфейс IPersistStreamInit как Dual, а значит скриптовые языки с ним работать не могут. На текущий момент единственное решение, которое я вижу для решения Вашей задачи, это именно работа с временными файлами. Можно попробовать поиграться с различными AJAX (DOM) фичами, типа innerHTML, но там скорее всего будет масса проблем с заголовками, скриптами, и кодировками.

Ок.
Спасибо, Сергей.

Будем сражаться ;-)
--
TSCRM 3.0.4.109 X25 100 лицензий.
Microsoft SQL Server Enterprise Edition (64-bit)
Version 9.00.3054.00

"Карло Сергей" написал:К сожалению объект Document не поддерживает интерфейс IPersistStreamInit как Dual, а значит скриптовые языки с ним работать не могут

А не как дуальный? Из сообщения я понял что поддерживают и из нескриптовых языков это сделать можно. Тогда создав очень простой COM можно решить задачу.

Да, конечно же, так сделать можно, но нужно будет создавать его в нескриптовом языке.

Показать все комментарии