Имя: Пароль:
1C
1С v8
прочитать на клиенте файл из сервера
0 orda
 
15.02.14
20:25
Чет не пойму, можно ли с клиента прочитать файл, лежащий на сервере в обычной (незашаренной)папке. Если можно то как?
1 ДенисЧ
 
15.02.14
20:27
Прочитать на сервере, отдать через временное хранилище на клиента
2 orda
 
15.02.14
20:28
Прочитать на сервере как?
3 orda
 
15.02.14
20:39
?
4 alexei366
 
15.02.14
20:58
(3) Ух тяжелый случай.
Давай так, ты это где хош сделать, я как подозреваю это действие какойто кнопки на форме?
5 orda
 
15.02.14
21:43
(4) Хочу сделать из модуля со свойством "сервер" (обработка какого-либо события)
6 zulu_mix
 
15.02.14
21:46
(5) а что мешает?
прочитал файл в двоичные данные, положил во времянку. ссылку на времянку вернул на клиента. на клиенте открыл двоичные данные из времянки.
7 orda
 
15.02.14
21:49
(6)т.е. в серверном модуле ПоместитьВоВременноеХранилище
а затем в клиентском ПолучитьИзВременногоХранилища ?
8 zulu_mix
 
15.02.14
21:51
да
9 b159263
 
15.02.14
21:59
Весь код условно делится на клиентский и серверный. Разделение происходит директивами компиляции "&НаКлиенте", "&НаСервере" и т.п. Весь серверный код выполняется в контексте сервера, а клиентский в контексте клиента. При этом в модуле формы может присутствовать как клиентский, так и серверный код.
С клиента на сервер и обратно могут передаваться только типы данных в описании которых указано, что они стерилизуются. В основном это примитивные типы данных: Строка, Число, Дата и т.п.
Передать прочие данные между клиентом и сервером можно по средством временного хранилища. Данные читаются на сервере, помещаются во временное хранилище, а на клиент возвращается адрес во временном хранилище. На клиенте данные по этому адресу читаются и обрабатываются, если они могу существовать в контексте клиента. При этом данные файла читаются объектом «Двоичные данные». Он может быть помещен во временное хранилище на сервере и на клиенте получен оттуда и сохранен в файл.
В вашем случае необходимо реализовать:
1. Серверную функцию читающую файл из указанной папки (на сервере). Имя папки передается параметром. После прочтения двоичных данных файла их необходимо поместить во временное хранилище, а на клиент вернуть адрес.
2. На клиенте получить двоичные данные по адресу из временного хранилища, а затем сохранить их в файл на клиенте.

&НаКлиенте
Процедура ИмяФайлаКлиентНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    
    Если Диалог.Выбрать() Тогда
        
        ИмяФайлаКлиент = Диалог.ПолноеИмяФайла;
        
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура СкопироватьФайл(Команда)
    
    Текст = НСтр("ru = 'Файл не найден на сервере'");
    
    АдресДанных = ПрочитатьФайлСервер(ИмяФайлаСервер, УникальныйИдентификатор);
    Если ЭтоАдресВременногоХранилища(АдресДанных) Тогда
        
        ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресДанных);
        Если ТипЗнч(ДвоичныеДанные) = Тип("ДвоичныеДанные") Тогда
            
            ДвоичныеДанные.Записать(ИмяФайлаКлиент);
            
            Текст = НСтр("ru = 'Файл сохранен на клиенте'");
            
        КонецЕсли;
        
    КонецЕсли;
    
    Сообщение = Новый СообщениеПользователю;
    Сообщение.Текст = Текст;
    Сообщение.Сообщить();
    
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПрочитатьФайлСервер(Знач ИмяФайла, Знач УникальныйИдентификаторФормы)
    
    АдресДанных = Неопределено;
    
    Файл = Новый Файл(ИмяФайла);
    Если Файл.Существует() Тогда
        
        ДанныеНаСервере = Новый ДвоичныеДанные(ИмяФайла);
        АдресДанных = ПоместитьВоВременноеХранилище(ДанныеНаСервере, УникальныйИдентификаторФормы);
        
    КонецЕсли;
    
    Возврат АдресДанных;
    
КонецФункции
10 Chai Nic
 
15.02.14
22:04
(9) "типы данных в описании которых указано, что они стерилизуются.
Что они делают? )
11 b159263
 
15.02.14
22:06
:))) Ворд проклятый :)))

не "стерилизуются", а "сериализуются" :)))
12 orda
 
15.02.14
22:23
(8)-(9) Большое спасибо. Все понял.
13 hhhh
 
16.02.14
00:40
(11) ссылки тоже сериализуются, не только примитивные типы.
14 b159263
 
16.02.14
11:26
(13) Это все у Радчёнка написано и в синтаксис помошнике. Кстати ссылка это строка!!! GUID так называемый.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн