Имя: Пароль:
1C
1С v8
Нужно хранить и открывать картинку, файл office и т.п.
0 terr
 
06.03.12
05:37
Добрый день,

У меня в БД есть РС, в котором для каждого документа может храниться несколько его скан-копий и вообще, файлов, ассоциируемых с данным документом БД.

Измерения: - Документ (тип ДокументСсылка)
          - Номер (тип Число Целое)

Ресурсы:   - Хранилище (тип ХранилищеЗнач)

База распределенная, поэтому имеет смысл хранить не ссылки на файлы, а в хранилище запихивать сами файлы с возможностью извлекать их и открывать.

Когда-то там лежали только картинки и вопросов не возникало. Сейчас же в хранилище значений надо запихивать и документы Microsoft Office и возможно, понадобится вообще хранить любые документы, которые могут быть открыты из-под винды.

В момент выбора файла я смотрю его расширение и в хранилище кладу либо новый Картинка (имяФайла), если расширение входит в список расширений картинок,  либо новый ДвоичныеДанные(имяФайла), если это расширение входит в список расширений Office

С хранением разобрались.
Теперь что касается просмотра

Я могу определить ТипЗнч ресурса полученной записи - картинка или двоичные данные.

С картинкой вопросов нет. А вот как и чем открыть двоичные данные? Т.е. мне надо определить - что это за тип файла там и каким-то образом вывести на экран.

Подскажите, пожалуйста, как это возможно?
1 catena
 
06.03.12
05:41
ЗапуститьПриложение(ДвоичныеДанные);
?
2 terr
 
06.03.12
06:00
Конечно нет! Для запуститьПриложение параметром должна быть строка, а не двоичные данные!
3 Wobland
 
06.03.12
06:02
(2) наверное, надо базе как-то знать, что за данные там лежат. как вариант: хранить расширение, потом создавать временный файл с этим расширением и запускать, а?
4 terr
 
06.03.12
06:02
ну вот я сейчас так и сделал. Блин так врем. файл создавать неохота =)
5 Wobland
 
06.03.12
06:03
(4) ну заведи константу КаталогНевременныхФайлов ;)
6 terr
 
06.03.12
06:04
а других способов, кроме физического создания файла нет? даже если просто ворд-эксель и не будет иных файлов?
7 Wobland
 
06.03.12
06:06
(6) подключаться к ворду по оле, держа данные в памяти разбирать формат и писать прямо в ворд?
8 terr
 
06.03.12
06:34
=)  

cпасибо
9 Рэйв
 
06.03.12
06:50
(6)Как вариант -  втавить на форму  ActiveX офисный и попробовать в него предевать.Правда сам не пробовал, но может получиться
10 andrewks
 
06.03.12
08:07
(9) плохая идея в свете "и возможно, понадобится вообще хранить любые документы, которые могут быть открыты из-под винды. "

(6) а чем тебе временные файлы мешают?
11 catena
 
06.03.12
17:37
(2)Ну, я не имела в виду именно двоичные данные, создать временный файл и открыть.
Вообще, вот тут есть несколько идей: Книга знаний: v8: Хранение в хранилище обработок и файлов. Определение типа хранимого файла
12 H A D G E H O G s
 
06.03.12
17:46
На самом на деле работа с файлами на порядки быстрее всяких COM. Например из за кэширования.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс