|
Открыть файл из Хранилище Значения | ☑ | ||
---|---|---|---|---|
0
Gobo
07.09.13
✎
21:31
|
Доброе время суток !
Имеется справочник СпрФайлов. Там есть реквизит Док с типом ХранилищеЗначения. В него были загружены файлы Word. Как его можно получить и открыть ? Тут читал - http://kb.mista.ru/article.php?id=72 Но не понял. Подскажите пожалуйста. |
|||
1
grayshadow
07.09.13
✎
21:35
|
док.получить()
|
|||
2
Gobo
07.09.13
✎
21:47
|
В форме элемента справочника создал команду ПросмотрФайла
и написал так: &НаКлиенте Процедура ПросмотрФайла(Команда) ТекФайл=ОткрДок(); ЗапуститьПриложение(ТекФайл); КонецПроцедуры &НаСервере Функция ОткрДок() СпрФайл = Справочники.СпрФайлов; ТекЭлем = СпрФайл.НайтиПоКоду(Объект.Код); ТекФайл=ТекЭлем.Док.Получить(); Возврат ТекФайл; КонецФункции Но получаю ошибку: Несоответствие типов (параметр номер '1') в строке ЗапуститьПриложение |
|||
3
grayshadow
07.09.13
✎
21:49
|
шо за приложение?
ЗапуститьПриложение(<СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>, <КодВозврата>) Параметры: <СтрокаКоманды> (обязательный) Тип: Строка. Командная строка для запуска приложения либо имя файла, ассоциированного с некоторым приложением. тип Строка а не хранилище разве что в хранилище записана строка? но это изврат... |
|||
4
Gobo
07.09.13
✎
21:51
|
Сообщить(ТипЗнч(ТекФайл));
Возвращает: Двоичные данные |
|||
5
Gobo
07.09.13
✎
21:51
|
Там файл Word.
|
|||
6
grayshadow
07.09.13
✎
21:52
|
щас скину рабочий код для запуска ворда через комобъект
|
|||
7
grayshadow
07.09.13
✎
22:03
|
это должно помочь
http://help1c.com/faq/view/587.html сначала сохранить файл из хранилища на диск, потом его вордом открыть либо в твоем варианте запуститьприложение("c:\programfiles\msoffice.winword.exe") но это по-индусски, ибо зависит от версий ворда и ОС (сорри, у меня маленько по-другому, вордовский файл делается из макета...) |
|||
8
grayshadow
07.09.13
✎
22:06
|
если работать с макетом, то суем вордовский док в 1с (тип ActiveDocument)
а потом Договор = ПолучитьМакет("МакетВорд"); ОбъектWord = Договор.Получить(); |
|||
9
Gobo
07.09.13
✎
22:12
|
Если хочу без сохранения файла на диск.
Надо использовать ActiveDocument ? |
|||
10
grayshadow
07.09.13
✎
22:19
|
может есть и другие варианты, но я их не знаю:)
кагбе логично, что прежде чем запускать ворд, надо куда-то сохранить для него док, из 1скиного хранилища он док не достанет:) а с ActiveDocument - ничего никуда не сохраняется, открывается ворд с несохраненным доком Док1 делаем всякие манипуляции с доком, а в конце пишем ОбъектWord.Application.Visible = Истина; ОбъектWord.Activate(); |
|||
11
grayshadow
07.09.13
✎
22:22
|
если у тебя не шаблон, а некоторый произвольный файл в хранилище, возьми типовую УТ (10 или 11 по вкусу), прицепи файл к контрагенту и посмотри отладчиком, как оно его открывает:)
|
|||
12
Gobo
07.09.13
✎
22:45
|
У меня есть только Бухгалтерия типовая.
Наверное придется сохранить во временных каталог, потом открыть. |
|||
13
Euguln
07.09.13
✎
22:52
|
(12) На сервере из ХранилищеЗначения помещаешь во временное хранилище, на клиенте из временного хранилища записываешь на диск, например в каталог временных файлов
|
|||
14
grayshadow
07.09.13
✎
22:55
|
в бухне скудно с присоединенными файлами:(
тем не менее смотрим общие модули ПрисоединенныеФайлы*** насчет того как получить из хранилища но да, записать на диск самый простой способ:) |
|||
15
Gobo
07.09.13
✎
23:09
|
Сделал так:
&НаКлиенте Процедура ПросмотрФайла(Команда) ТекФайл=ОткрДок(); Если ТипЗнч(ТекФайл) = Тип("Неопределено") Тогда Предупреждение("Файл отсутствует в базе !"); Возврат; КонецЕсли; ИмяВременногоФайла = КаталогВременныхФайлов() + Объект.Наименование; ТекФайл.Записать(ИмяВременногоФайла); ЗапуститьПриложение(ИмяВременногоФайла); КонецПроцедуры У меня в реквизите Наименование, справочника указано имя файла. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |