Имя: Пароль:
1C
1С v8
Прочитать файл на сервере
0 sanechichek
 
23.07.12
14:27
Подскажите, пожалуйста, как прочитать файл на сервере и передать его на клиент. То есть у меня есть путь к файлу, который хранится на сервере, на клиенте такого файла нет, но мне нужно его каким то образом получить на сервера и обработать на клиенте, как это лучше всего сделать, пробовал через фоновое задание, но не получается.
1 LDSoft
 
23.07.12
14:32
А через фоновое как пробовали?
2 ДенисЧ
 
23.07.12
14:35
На сервере его прочитать, запихнуть в двоичные данные, передать клиенту. Так не пробовал?
3 sanechichek
 
23.07.12
14:36
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(ЛогWinSCP);
МассивПараметров.Добавить(Лог);
ФоновыеЗадания.Выполнить("РаботаСSFTPСервером.ПрочитатьФайлНаСервере", МассивПараметров);

Процедура ПрочитатьФайлНаСервере(ПутьКФайлу, Лог) Экспорт
   
   Лог      = Новый ТекстовыйДокумент;

   Лог.Прочитать(ПутьКФайлу, "windows-1251");
   
КонецПроцедуры // ПрочитатьФайлНаСервере()

Но в переменную "Лог" не передается значение.
4 LDSoft
 
23.07.12
14:37
(2) +100500
5 sanechichek
 
23.07.12
14:38
(2), не пробовал, а как правильно передать на клиент?
6 ДенисЧ
 
23.07.12
14:39
(5) как результат функции, например.
7 sanechichek
 
23.07.12
14:48
(6), а как мне через фоновое задание получить результат функции?
Результат = ФоновыеЗадания.Выполнить("РаботаСSFTPСервером.ПрочитатьФайлНаСервере", МассивПараметров); //так не получается.
8 olegves
 
23.07.12
14:56
(0)
через ХранилищеЗначений
1. Сохраняешь на сервере
2. Передаешь на клиент ссылку на Хранилище
3. Сохраняешь на клиент по ссылке
9 sanechichek
 
23.07.12
15:07
(8), а как мне с сервера на клиент передать ссылку на Хранилище?
10 ДенисЧ
 
23.07.12
15:08
(7) А зачсем тебе фоновой задание?
11 olegves
 
23.07.12
15:10
(9)
С клиента вызываешь серверную функцию, которая запишет файл в хранилище, и затем вернет тебе ссылку на это хранилище
12 freeride81
 
23.07.12
15:11
ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)
13 aleks-id
 
23.07.12
15:11
на сервере
функция ДобытьСсылкуНаФайл()
Возврат ПоместитьВоВременноеХранилище(трампапам)
конецфункции

на клиенте
ПолучитьИзВременногоХранилища(ДобытьСсылкуНаФайл())
14 Ахиллес
 
23.07.12
15:16
(0) Вывали файл на шару или на ФТП и работай с клиентом, как обычно с локальными файлами.
З.Ы. Ну, что делать если клиент-серверную логику в 1С дауны писали.
15 sanechichek
 
23.07.12
15:21
(14), так точно не могу, политика безопасности предприятия.
16 sanechichek
 
23.07.12
15:23
(13), как мне вызвать с клиента функцию на сервере? пишет что функция не обнаружена.
17 olegves
 
23.07.12
15:32
(16) если в обработке, то пиши

1С&НаСервере
Функция ммм()
  //тело функции
КонецФункции/1С
18 Ахиллес
 
23.07.12
15:34
(15) Ты думаешь 1с лучше защищена чем ФТП сервер :-) Таки вы хорошо думаете о 1с :-)))
Если файл может прочитать юзер одинэсовский, о какой безопасности речть тогда идёт?
19 sanechichek
 
23.07.12
15:37
(17), это для меня что то новое, но всеравно выдает ошибку "Неопознанный оператор"
20 olegves
 
23.07.12
15:39
(19) ты бы версию 1С написал, а также ОФ или УФ
21 sanechichek
 
23.07.12
15:41
(20), 8.2.15.310, ОФ.
22 sanechichek
 
23.07.12
15:41
(18) папка в которой хранятся файлы не должна быть расшарена и может быть получена только на сервере.
23 olegves
 
23.07.12
15:44
(21)
используй серверный общий модуль, куда допиши функцию сохранения файла в Хранилище
24 Reset
 
23.07.12
16:04
+(23) напр такую
Функция ПолучитьДвоичныеДанныеИзФайлаНаСервере(ПолноеИмяФайла) Экспорт
   Попытка
       ДвоичныеДанные=Новый ДвоичныеДанные(ПолноеИмяФайла);
   Исключение
       возврат Неопределено;
   КонецПопытки;
   
   Возврат ДвоичныеДанные;
КонецФункции
25 olegves
 
23.07.12
16:16
+ (24)
Возврат ПоместитьВоВременноеХранилище(ДвоичныеДанные);

как-то так
Независимо от того, куда вы едете — это в гору и против ветра!