Доброго времени суток !
Шеф требует чтобы работа с вложенными файлами , велась без записи временных файлов на диск.
Т.е. файл хранится в базе в виде двоичных данных записанных в хранилище значений, при открытии пользователем у меня реализован (в зависимости от типа клиентского приложения, веб клиент, тонкий клиент, толстый клиент) механизм записи во временный файл на диск этих двоичных данных, и последующее открытие этого файла ассоциированным с ним приложением.

Вопрос1: возможно ли реализовать открытие без записи на локальный диск пользователя временных файлов? и если возможно то как ?

Вопрос2: касается только файлов htm, html. Если хранить файлы в виде строки неограниченной длины, записанной в хранилище значений, то возникает проблема при открытии файла элементом формы типа HTML документ - документ отображается, но не срабатывают переходы по внутренним ссылкам внутри документа. если возможно обойти эту проблему, то как?
---
Вот, кстати, и решение:
объясните шефу, ЧТО он хочет с точки зрения безопасности. Ваше решение - дыра. А его идея - просто настежь открытые ворота для троянов!
---
замути виртуальный диск в памяти
---
в тонком клиенте это наверное вариант, а в веб клиенте как это реализовать ?
---
по второму:

новый текстовыйДокумент

в нем устанавливаешь текст из строки
---
увы, внутренние ссылки не срабатывают, внешние - пожалуйста. т.е. при нажатии на ссылку с якорем ведущим в тот же документ - браузер 1С не переходит по ней, а выводит пустое окно.
---
Уверен что 1с хранит свои временные файлы во временном каталоге, определенном в Window. Это настраивается в самом Windows.
Мой компьютер -Свойства - в какой то закладке(это зависит от самого windows) ищи кнопку "Переменные среды".
В открывшемся окне увидишь две переменные TMP, TEMP. Определи для них другие каталоги.
---
А как можно открыть "файл ассоциированным с ним приложением" если этого файла на диске нет?
---
Сейчас у меня реализовано с записью во временный файл, открытием его приложением, и удалением временного файла при закрытии формы. Требуется : открытие без записи во временный файл.
Не пугайтесь абсурдности вопроса, нужно просто высказать своё мнение. Шеф считает что можно, только я не знаю как.
---
браузер 1С

:)))

эта шняга кроме справки ни на что не годна

на край используйте актиф-икс от мелкомягких

а еще лутче - открывайте по COMу нормальный брозер и кормите его чем надо
---
опять же, как в веб клиенте открыть по COM-у браузер в окне формы 1с?
попахивает взломом клиентского компьютера, вирус на 1С.
---
в окне всяко не получитцо
а вот рядышком попробовать можно
к сожалению, веб-клиентов не юзал, ничего по делу не скажу

вам точно нужен именно веб-клиент?
---
ну по второму вопросу - да , нужны все виды клиентов, веб в особенности.
ок, предположим что разрешат в отдельном окне - как это реализовать в веб клиенте?
---
http://forum.infostart.ru/forum9/topic47284/
---
Спасибо, попробую... о результатах отпишу позже.
---
Что бы использовать COM объекты в веб интерфейсе, в браузере надо давать разрешения и не все браузеры их вообще могут использовать.
---
Вопрос2: касается только файлов htm, html. Если хранить файлы в виде строки неограниченной длины, записанной в хранилище значений, то возникает проблема при открытии файла элементом формы типа HTML документ - документ отображается, но не срабатывают переходы по внутренним ссылкам внутри документа. если возможно обойти эту проблему, то как?
Пример: простейший html документ , при нажатии на ссылку - страница не найдена.
При нажатии видим:
1) ДанныеСобытия.Href = "e1c://filev/C/Общая/Тест№1/П1" // это если из строки
2) ДанныеСобытия.Href = "v8config://v8cfgHelp/mdobject/idb2950c49-fc94-4e05-a100-83f327d5b2bb/П2" // это если строка из макета в конфигурации

```1c
    Объект.Текст = "<HT ML><HEAD>
    <MET A content="text/html; charset=utf-8" http-equiv=Content-Type></META>
    <MET A name=GENERATOR content="MSHTML 8.00.7601.17514"></META><BA SE href="/redirect.php?url=djhjb25maWc6Ly9hMjAwYWUyOS04Njk0LTQ5N2MtODc2Yi0zNDdmM2NhODdhZjQvbWRvYmplY3QvaWRiMjk1MGM0OS1mYzk0LTRlMDUtYTEwMC04M2YzMjdkNWIyYmIvOGViNGZhZDEtMWZhNi00MDNlLTk3MGYtMmMxMmRiYjQzZTIz"></BASE></HEAD>
    <BODY>
    <P>переход 1</P>
    <P>переход 2</P>
    <P>переход в конец</P>
    <P>афпапваыфп</P>
    <P>авпавпывап</P>
    <P>впвапавпы</P>
    <P>вапапыапвап</P>
    <P>ваыпапывап</P>
    <P>вапавыпапыап</P>
    <P>вапапавпав</P>
    <P>вапыапавыпап</P>
    <P>вапапавпапваып</P>
    <P>выапапавп</P>
    <P>вапвапывап111</P>
    <P><A name=П1>1111111111111111111111</A></P>
    <P>1111111111111111111</P>
    <P>1111111111111111111111111</P>
    <P>1111111111111111111111111111</P>
    <P>1111111111111111111111111111</P>
    <P>11111111111111111111111111111</P>
    <P><A name=П2>222222222222222222222222222222</A></P>
    <P>222222222222222222222222222</P>
    <P>222222222222222222222222222222</P>
    <P>22222222222222222222222222222222</P>
    <P>222222222222222222222222222222222</P>
    <P>2222222222222222222222222222222222</P>
    <P><A name=П3>лабуда</A></P></BODY></HTML>";
```
---
текст html сайт "исправил"
там было href="П1", и т.п.
---
Вообще, COM в браузере - это такая ж*.... Проще говоря: это НЕЛЬЗЯ. Не потому, что невозможно, а потому, что серверная часть ничего о клиенте знать не должна и управлять им - тем более! Захотел клиент - подключился хоть через Lynx2! И системе 1С этого знать и не положено. Так что, любое решение через COM и ActiveX - в топку, они в веб-клиенте работают только по принципу троянов.

По постановке задачи:
Если учесть, что у Вас требование обязательно включает веб-клиенты, то - без промежуточного файла - никак! Причём файлик, не в произвольном месте, а только во временном каталоге (через ПолучитьИмяВременногоФайла()) и с подключением разделителей, полученных через ПолучитьРазделительПутиКлиента()! Иначе гарантированно поимеете траблов в любых не-windows.
---
у меня именно так и реализовано=)
правда не через ПолучитьИмяВременногоФайла(), а через НачатьПолучениеКаталогаДокументов(), НачатьПолучениеФайлов(), НачатьПроверкуСуществования(), НачатьЗапускПриложения()

но шеф поставил задачу - без временных файлов!
---
Шеф не понимает базовые принципы работы веб-клиента.
По-хорошему, даже открывать документы - это плохо. Надо отдавать их клиенту (юзеру), пусть он сохраняет, как хочет, и сам открывает.
Общее правило: ни клиент (!), ни, тем более, сервер не должны НИЧЕГО знать и даже пытаться узнать, что и как настроено у пользователя. Даже размер окна получать нельзя! Это - базовые требования безопасности. То, что у Вас реализовано - уже очень плохо с точки зрения, что я могу запихнуть свой троян и заставить 1С его выполнить. А то, что хочет шеф - это к тому косяку добавить ещё, чтобы его и отследить было невозможно!
Пишете под современные технологии - задумывайтесь про базовые принципы безопасности: injection и xss никто не отменял, и в 1С они тоже прекрасно действуют!
---
при записи файлов указывать его тип (doc, exl, pdf)...
и при открытии явно указывать приложение...
---
...очень плохо. Если не угадаете с приложением, которое установлено у клиента, получите исключение.
---
Вот, кстати, и решение:
объясните шефу, ЧТО он хочет с точки зрения безопасности. Ваше решение - дыра. А его идея - просто настежь открытые ворота для троянов!
---
Про безопасность - хороший аргумент, спасибо!

по вопросу 2: использование текста html из строки - можете что-нибудь подсказать? Могу добавить вознаграждение если будет рабочий совет.
---
Ничего и не могу и, думаю, никто не сможет. Ещё раз повторюсь, если поизощряться, наверняка можно реализовать.
Можно поизвращаться про буфер обмена, даже про stream, если подумать. Но это - из той же оперы, что и COM/ActiveX. При том, что COM реализовать проще.
Только вот, "не все идеи одинаково полезны" ©.
Ещё с WFW3.11 (ага, я некрофил и аксакал!) документы открываются той же системной функцией, что и запуск программы. А теперь ответьте мне: вот подсунул я в Вашу базу вместо документа Word программу-троян. Ну? Как Вы его поймаете? Как Вы его вообще отличите от документа? В Вашем случае есть ещё надежда на антивирус. Хотя, ЛИЧНО Я подсунул бы Вам SFX с легальной программой для удалённого управления и документ - и Вы бы НИЧЕГО не заметили! А так, как хочет шеф, антивирус гарантированно даже не пикнет!