Имя: Пароль:
1C
1С v8
Скопировать файл сервером в нужном месте из временного хранилища?
,
0 Kreont
 
03.04.13
11:53
Обычный (толстое) кл-серверный режим.
На сервере есть папка куда надо складывать файлы полученные от клиента.Доступ к ней только у пользователя-сервера "usr1cv82".

Получаю файлик от клиента 1С-ки так:

ВнАдресСерверний = "";
ПоместитьФайл(ВнАдресСерверний,НазваФайлу,НазваФайлу,Ложь);

Путь этого хранилища полученного:
ВнАдресСерверний = e1cib/tempstorage/a8fb082a-9c2b-11e2-2f9b-002354472516

Как получить имя "правильное" абсолютное что б скопировать можно было через КопироватьФайл(А,Б) в нужное место?
1 Balonbl4
 
03.04.13
11:56
Зачем через копировать файл? пишите на диск из временного хранилища прямо
2 Kreont
 
03.04.13
12:05
(1) Как и чем прямо писать?

я вот не пойму почему нету ф-ии (или не нашел), что б предать
сразу:
МОЯ_ПередатьФайл(ПутьОтносительноСервераЛокальный, ПутьКлиентаЛокальный, Ложь);
3 H A D G E H O G s
 
03.04.13
12:07
(2) Зачем?
4 H A D G E H O G s
 
03.04.13
12:11
Двоичное=Новый ДвоичныеДанные("c:\my.txt");
АдресВХ=ПоместитьВоВременноеХранилище(Двоичное,Новый УникальныйИдентификатор());
ДействиеНаСервере(АдресВХ);


Процедура ДействиеНаСервере(АдресВХ);

Если НЕ (ТипЗнч(АдресВХ)=Тип("Строка") И ЗначениеЗаполнено(АдресВХ) И ЭтоАдресВременногоХранилища(АдресВХ)) Тогда
Возврат;

Двоичное=ПолучитьИзВременногоХранилища(АдресВХ);
УдалитьИзВременногоХранилища(АдресВХ);
Если ТипЗнч(Двоичное)=Тип("ДвоичныеДанные") Тогда
Двоичное.Записать("C:\new.txt");
5 Kreont
 
03.04.13
12:12
(3) что б передавать файлы из клиента на сервер используя кл-серверное соединение 1С-ки, а не возможности файловой системы.
одной командой, а не через 10 строк кода и микс вызовов то НаСервере то НаКлиенте
6 H A D G E H O G s
 
03.04.13
12:13
Можно тупо Двоичное передавать, но на объемах более 50 метров бывали разрывы связи и зависоны, х.з. почему.
7 H A D G E H O G s
 
03.04.13
12:13
(5) Никому это нахер не нужно, а кому нужно - напишет немного.

Это глупости ты пишешь, проблемы на вашей стороне.
8 Kreont
 
03.04.13
12:21
(4) спс,  во типа того, только теперь не понял чем отличается:
ПоместитьВоВременноеХранилище
от
ПоместитьФайл

(7) ну есть одна задачка чтоб файлы/сканы документов можно было:
а) привязывать к нужным элементам справочников
б) сохранять НЕ в сюл-ной базе а файлом в нужном каталоге
в) и что б паралельно был доступ всем к той расшаренной папке Только на чтение, если надо будет прямо открыть скан не запуская 1С.
9 H A D G E H O G s
 
03.04.13
12:26
(8) ПоместитьФайл (ПоместитьФайлы) запихивает во временное хранилище тупо Файл (не объект 1С, хз что), а ПоместитьВоВременноеХранилище() - засунет Объект 1С.

ПоместитьФайл (ПоместитьФайлы) - актуально для ВебКлиента в основном, там запрос на каждую операцию с файловой системой задается (ну грубо), безопасность знаете ли.
10 H A D G E H O G s
 
03.04.13
12:28
Более показательны функции

ПолучитьФайл (ПолучитьФайлы)

Кроме как этими функциями, ты файл из ВебКлиента на диск пользователя не сохранишь, у двоичных данных метод Записать() в ВебКлиенте выпилен (я даже помню, в каком примерно релизе 8.2 это случилось).
11 Kreont
 
03.04.13
12:39
спс. прояснилось.
Ща на обед уйдут, потестю на раб.базе :)
12 Kreont
 
03.04.13
16:29
Еще раз.спс., вроде работает все как хотел.
Учел (6) и сразу лимит в 10МБ поставил на файл.

В коде из (4) там самое главное для обычного приложения правильно процедуры поразкидывать по общим модулям с выполнением только на сервере.

И еще вопрос такой, если файл передавать 10МБ можно показать как то прогресс передачи?
(при макс 10МБ время передачи 1-3 сек. если сервер не нагружен, если нагружен - до 10 сек.).