Имя: Пароль:
1C
 
Не получается сохранить файл из Хранилища
0 gerthog
 
27.01.15
16:30
В документе есть реквизит с типом СправочникСсылка, в этом справочнике реквизит "Файл" имеет тип ХранилищеЗначения. В этот документ поместил кнопку для сохранения файла на диск, но чего-то не работает, вот код:

&НаКлиенте
Процедура Пдф(Команда)
    
    СохранитьФайлНаДиске(Объект.ПДФ, "C:\Temp\ИмяФайла.txt", Истина, Ложь) ;
    
КонецПроцедуры

&НаСервере
Функция СохранитьФайлНаДиске(Хранилище, ИмяФайла, ТолькоЧтение, ВопросОПерезаписи = Истина)

    Попытка

        ФайлНаДиске = Новый Файл(ИмяФайла);
        КаталогНаДиске = Новый Файл(ФайлНаДиске.Путь);
        
        Если ТипЗнч(Хранилище) <> Тип("ДвоичныеДанные") Тогда
            ДвоичныеДанные = Хранилище.Получить();
        Иначе
            ДвоичныеДанные = Хранилище;
        КонецЕсли;
        ДвоичныеДанные.Записать(ИмяФайла);
        ФайлНаДиске.УстановитьТолькоЧтение(ТолькоЧтение);

    Исключение

        //Предупреждение(ОписаниеОшибки());
        Возврат Ложь;

    КонецПопытки;

    Возврат Истина;

КонецФункции  


Что я делаю не так?
1 Spieluhr
 
27.01.15
16:36
база серверная?
2 gerthog
 
27.01.15
16:41
(1)Файловая
3 Лефмихалыч
 
27.01.15
16:42
а "не получается" - это оно как именно проявляется?
4 gerthog
 
27.01.15
16:43
(3) Должен создаться файл "C:\Temp\ИмяФайла.txt", но его нет
5 kimba
 
27.01.15
16:45
В УФ нет доступа в форме для реквизитов типа Хранилище значения. Надо при открытии выкручиваться из ситуации так:

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    ДвоичныеДанныеКартинки = ТекущийОбъект.ЛоготипДляПечати.Получить();
    Если ДвоичныеДанныеКартинки <> Неопределено Тогда
        АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанныеКартинки, ЭтаФорма.УникальныйИдентификатор);
    КонецЕсли;
КонецПроцедуры
6 gerthog
 
27.01.15
16:50
(5)Чего то я не понял. У меня реквизит с типом хранилища не на форме, а в справочнике. Передаю ссылку на справочник и на сервере из справочника беру Реквизит с типом Хранилище
7 kimba
 
27.01.15
16:51
Объект.ПДФ это что?
8 kimba
 
27.01.15
16:52
либо у тебя в серверной процедуре должно быть Объект.СправочникХЗ.РеквизитХЗ.Получить()
9 gerthog
 
27.01.15
16:55
(7)Объект.ПДФ это реквизит документа с типом СправочникСсылка(в котором реквизит с типом Хранилище)
10 Fish
 
27.01.15
16:57
(9) Так тогда ты пытаешься  СправочникСсылка в файл затолкать.
11 Лефмихалыч
 
27.01.15
16:58
(0) убери попытку и платформа сама тебе скажет, где ты не прав
12 gerthog
 
27.01.15
16:59
(11) Убирал попытку, у меня она ща закаменчена, но не пашет
13 kimba
 
27.01.15
17:28
Объект.СправочникХЗ.РеквизитХЗ.Получить() написал же
14 GROOVY
 
27.01.15
17:30
(5) Нафига просто так во временное хранилище данные заливать. Сохранить то можно и без временного хранилища.
15 GROOVY
 
27.01.15
17:32
Глобальный контекст.ПолучитьФайл (Global context.GetFile)
Глобальный контекст (Global context)
ПолучитьФайл (GetFile)
Синтаксис:

ПолучитьФайл(<Адрес>, <ИмяФайла>, <Интерактивно>)
Параметры:

<Адрес> (обязательный)

Тип: Строка.
Расположение данных во временном хранилище или в информационной базе.
<ИмяФайла> (необязательный)

Тип: Строка.
Путь к файлу, в который будут сохранены данные из информационной базы.
В неинтерактивном режиме необходимо указать значение параметра, иначе будет вызвано исключение.
В интерактивном режиме может быть не задан.
Значение по умолчанию: Пустая строка.
<Интерактивно> (необязательный)

Тип: Булево.
Истина - режим, в котором пользователю показывается диалог, в котором он может выбрать действие с получаемым файлом: запустить его или сохранить по выбранному расположению.
В веб-клиенте параметр должен быть равен Истина. В противном случае будет сгенерировано сообщение об ошибке.
Значение по умолчанию: Истина.
Возвращаемое значение:

Тип: Булево; Неопределено.
Ложь - пользователь отменил операцию сохранения файлов (в интерактивном режиме).
В режиме запуска "Веб-клиент" всегда возвращает Неопределено.
Описание:

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

Доступность:

Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
Вызов метода выполняет обращение к серверу.

Примечание:

Если используется интерактивный режим, а параметр <ИмяФайла> не указан, то операция открытия файла не доступна.
В веб-клиенте код на встроенном языке продолжает выполнение, не дожидаясь окончания загрузки файла.
Результат выполнения кэшируется в разрезе значений параметров метода. Если данные в файле были изменены, выполняется обращение к серверу.
На мобильной платформе параметр <Интерактивно> игнорируется и диалоговое окно выбора файла не отображается никогда.
--------------------------------------------------------------------------------

     Методическая информация
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший