Имя: Пароль:
1C
1С v8
Как открыть документ ворд, сохраненный в базе в виде хранилища значений
0 TrudnyiRebenok
 
28.05.19
08:37
В документе есть табличная часть. В неё записываются два реквизита: путь к файлу и сам файл (ХЗ).
Не найду вариантов, как открыть файл по расширению файла, методом ЗапускПриложения.
Реквизит выбираю по навигационной ссылке, а дальше - засада...

Если Элементы.Доки.ТекущиеДанные <> Неопределено Тогда
        
        ТекСтр = Объект.Доки.Индекс(Элементы.Доки.ТекущиеДанные);
        
        ТекДок = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"Доки.ДокХранилище", ТекСтр);
        
        НашФайл = Новый Файл(ТекДок);
        
        Попытка
            
            ЗапускПриложения(НашФайл);
            
        Исключение
                        
            Сообщить(ОписаниеОшибки());
            
        КонецПопытки;
        
    КонецЕсли;

Ошибка преобразования данных XDTO

Расширение    ".ДокХранилище"    Строка - возможно в этом причина.
Я не знаю как сделать из навигационной ссылки файл.
1 Fish
 
28.05.19
08:40
Кнопочку "Я" нажимал?
2 serkorvin1
 
28.05.19
13:53
(0)Из хранилища данные нужно  сначала получить
РеквизитХранилище.Получить()
3 TrudnyiRebenok
 
29.05.19
04:28
(0)Из хранилища данные нужно  сначала получить
РеквизитХранилище.Получить()

Это как раз я знаю. Только как получить данные из хранилища, которые можно получить только по навигационной ссылке из реквизита справочника или документа?

Вот я получаю НавСсылку:
ТекДок = ПолучитьНавигационнуюСсылку(Объект.Ссылка,"Доки.ДокХранилище", ТекСтр);

Результат:
ТекДок    "e1cib/data/Документ.Задача.Доки.ДокХранилище?ref=9b8fe0d55e01582111e97df33eb2c389&index=0"    Строка

Естественно получить из хранилища тут никак.

А обратиться непосредственно к хранилищу в реквизите нет возможности... или я чего-то недопонял?
4 Chameleon1980
 
29.05.19
05:19
в чем проблема не знаю, но увидел ошибку 100%

что это?

   НашФайл = Новый Файл(ТекДок);
        
        Попытка
            
            ЗапускПриложения(НашФайл);

что скармливается ЗапускПриложения? Тип Файл?
5 TrudnyiRebenok
 
29.05.19
05:27
что это?

Этого кода уже нет, там галиматья.
6 TrudnyiRebenok
 
29.05.19
05:31
У меня есть ХЗ
В нем записан файл
Навигационную ссылку я могу получить, но с картинками это проходит, а вот с файлами Ворд или Эксель или ПДФ - нет.
Тут нужна не нав ссылка, а сам файл, ну бинарная запись что ли. Только как её получить?
Если перейти на сервер, то можно получить ХЗ

        ТекОбъект = Ссыль.ПолучитьОбъект();
    
    ТекСтрока = ТекОбъект.Доки.Получить(Инд);
    
    ТекХЗ = ТекСтрока.ДокХранилище;
    
    ДанХЗ = ТекХЗ.Получить();


Но ДанХЗ - неопределено, и на этом всё...
7 TrudnyiRebenok
 
29.05.19
08:23
Нашёл причину.
Хранилище значения записывать надо сразу, иначе оно теряется.
8 Сияющий в темноте
 
29.05.19
08:38
из хранилища достать в двоичные данные
передать на клиента вместе с именем файла
вырезать из имени путь,то есть оставить все после последнего слеша
получить временную директорию
добавить к временной директории имя файла
записать файл по указанному имени
в команду ЗапуститьПриложение передать полный путь к файлу,если очень уверены,что это word,то перед именем указать запуск самого word,через путь к Program Files,но это нужно получать директории и искать установленный офис.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.