Имя: Пароль:
1C
 
Как открыть на клиенте Файл из хранилища?
0 zoro-z
 
30.09.14
10:14
Пишет не найдено ХРАНИЛИЩЕ.


&НаКлиенте
Процедура ИмяФайлаОткрытие(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    
    ИмяФайлаОткрытиеКартинка();
    //ИмяВременногоФайла = ПолучитьИмяВременногоФайла();

КонецПроцедуры

&НаКлиенте
Процедура ИмяФайлаОткрытиеКартинка()
    
    // Получить расширение файла.
    РасширениеВременногоФайла = Прав(Объект.ИмяФайла, 4);
    
    Если Лев(РасширениеВременногоФайла, 1) = "." Тогда
        // Получить имя временного файла. Установить расширение временного файла.
        РасширениеВременногоФайла = Прав(Объект.ИмяФайла, 3);
        ИмяВременногоФайла = ПолучитьИмяВременногоФайла(РасширениеВременногоФайла);
    Иначе
        // Получить имя временного файла с расширением по умолчанию.
        ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
    КонецЕсли;
    
    // Сохранить файл на диске. Запустить приложение.
    СохранитьЗапуститьФайл(ИмяВременногоФайла, Истина);
    
КонецПроцедуры // ИмяФайлаОткрытие()

&НаКлиенте
Процедура СохранитьЗапуститьФайл(ИмяВнешнегоФайла, Запустить = Ложь)
    
        
    // Если не указано имя файла прервать выполнение процедуры
    Если ПустаяСтрока(ИмяВнешнегоФайла) Тогда
        Сообщить("Не указано имя файла!");
        Возврат;
    КонецЕсли;

    // Сохранить файл на диске
    ВнешнийФайл = Объект.Ссылка.Хранилище.Получить();
    Попытка
        ВнешнийФайл.Записать(ИмяВнешнегоФайла);
    Исключение
        Сообщить("Ошибка при сохранении файла: " + ОписаниеОшибки(), СтатусСообщения.Важное);
        Возврат;
    КонецПопытки;
    


    // Запустить ассоциированное с файлом приложение. Открыть файл.
    Если Запустить Тогда
                  
        Файл = Новый Файл(ИмяВнешнегоФайла);
        
        Если Файл.Существует() Тогда
            
            Попытка
                ЗапуститьПриложение("explorer " + ИмяВнешнегоФайла);
            Исключение
                Сообщить("Ошибка при запуске файла: " + ОписаниеОшибки(), СтатусСообщения.Важное);
                Возврат;
            КонецПопытки;
        Иначе
            Сообщить("Не удалось найти файл " + ИмяВнешнегоФайла + " на диске!");
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры // СохранитьЗапуститьФайл()
1 Ерепень
 
30.09.14
10:18
может, его там и нет? чаще всего, если нет, то платформа не находит
2 Maxus43
 
30.09.14
10:19
много кода что-то, там 10 строк надо...

Получи двоичные данные из хранилища на сервере, передай их на клиент, сохрани в темп, открой
3 zoro-z
 
30.09.14
10:22
(2)Спасибо разобрался.
2 + 2 = 3.9999999999999999999999999999999...