Имя: Пароль:
1C
1С v8
Передача очень большого файла с сервера на клиент
0 conscious
 
10.09.21
10:48
Файл объемом 300 Гб по запросу пользователя нужно получить с сервера.
Как это сделать оптимальнее и желательно с показом индикатором загрузки?
Сейчас сделано так, как написано ниже. Это неудобно, асинхронно, непонятно, через какое время файл полностью загрузится в каталог, выбранный пользователем.


&НаСервере
Функция ПолучитьФайлССервераНаСервере(ПутьКФайлу)
    Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ПутьКФайлу), ЭтаФорма.УникальныйИдентификатор);
    Возврат Адрес;
КонецФункции

&НаКлиенте
Процедура ПолучитьФайлССервера(Команда)
    ТекДанные = Элементы.Файлы.ТекущиеДанные;//таблица на форме
    НачатьПолучениеФайлаССервера(ПолучитьФайлССервераНаСервере(ТекДанные.ПутьКФайлуНаСервере), ТекДанные.Имя, Новый ПараметрыДиалогаПолученияФайлов("Получение файла " + ТекДанные.Имя, Истина));
КонецПроцедуры
1 ДенисЧ
 
10.09.21
10:51
В сетевую шару выложи на сервере.
Пусть зверь сам его забирает.

Это вообще чушЪ - такие файлы через 1с гонять.
2 1Сергей
 
10.09.21
11:02
Хоум видиво в 4к складируете?
3 Kassern
 
10.09.21
11:03
(2) больше похоже на зеркальную копию какого нить сервака)
4 Галахад
 
гуру
10.09.21
11:11
Разбить на 100 частей.
Грузить по одной части.
После загрузки части в прогрессбар добавлять полоску. :-)
5 lodger
 
10.09.21
11:13
(0) там следующая ступень эволюции асинхронных методов работы с файлами же был, где есть индикатор загрузки?
6 conscious
 
10.09.21
11:17
(1) Расшаривать нельзя, т.к., не ко всем файлам в каталоге должен быть доступ у пользователей.

(2) (3) Там xml-ки.

(4) РазделитьФайл() будет подъедать место на диске и, наверное, будет медленно... Хотя, попробовать, конечно, можно...

(5) Подскажите, куда смотреть, плз.
7 VladZ
 
10.09.21
11:22
(0) Что за странная мания пихать всё в 1С?
1с - это платформа для автоматизации учета, а не порно-сервис.
8 Смотрящий
 
10.09.21
11:24
(0) А что там такое в 300гб то ?
9 acht
 
10.09.21
11:28
(7) > платформа для автоматизации учета, а не порно-сервис.
Для кого как. Иногда автоматизация учета вторична.
10 Garykom
 
гуру
10.09.21
11:35
(0) битторрент
11 Garykom
 
гуру
10.09.21
11:35
(10) и это не шутка
12 ildary
 
10.09.21
12:52
(10) можно не сам битторрент, а родственная технология, например SyncThing или Resilio
13 conscious
 
10.09.21
13:11
(10) (12) Вы предлагаете реализовать это на 1С?
14 Garykom
 
гуру
10.09.21
13:21
(13) есть готовые библиотеки и даже в браузере в полеhtml можно
15 timurhv
 
10.09.21
13:38
(0) Разве там не стоит ограничение в 4Гб?
16 Вафель
 
10.09.21
13:40
НачатьПолучениеФайлаССервера()
Там есть и прогресс. но прогресс только на клиенте, в вебе нет
17 acanta
 
10.09.21
13:43
Куда делся?
18 timurhv
 
10.09.21
13:43
(15) или это только с клиента на сервер, обратно работает?
19 Вафель
 
10.09.21
13:44
а нет попутал, только на помещение
20 H A D G E H O G s
 
10.09.21
14:02
Отправляйте в фоне и крутите gif-ку, че как дети то?
21 Kassern
 
10.09.21
14:02
(20) надеюсь с котиком?
22 Вафель
 
10.09.21
14:03
так оно и так в фоне отправляется
23 H A D G E H O G s
 
10.09.21
14:06
24 timurhv
 
10.09.21
14:38
(6) >Там xml-ки
Если запаковать перед отправкой?

>Расшаривать нельзя, т.к., не ко всем файлам в каталоге должен быть доступ у пользователей
Сделать промежуточную помойку, туда копировать и оттуда забирать?
ПоместитьВоВременноеХранилище - сколько ОЗУ потребляет на сервере 1С с 300Гб файлом?
25 timurhv
 
10.09.21
14:39
(24) Помойка на этом же сервере, ссылку на файл через хардлинк.
26 Aleksey
 
10.09.21
14:46
Поднять фтп и передать через локальный фтп
27 lodger
 
10.09.21
14:51
(26) если встроить в свою конфу подсистему торрент-трекера, то будет быстрее ФТП, когда пиров больше 1. а когда хостов станет больше 1, тогда вообще ракета.
28 Garykom
 
гуру
10.09.21
14:57
(0) файлик разбиваешь на кусочки пронумерованные и отдельно передаешь на клиента там собираешь
вуаля готов свой битторрент протокол
29 Garykom
 
гуру
10.09.21
14:57
(28)+ % считается сколько кусочков относительно всего доставлено
30 ДедМорроз
 
12.09.21
10:34
Даже разбивать не надо, ЧтениеДанных это потоковое чтение - прочитал кусок и отправил на клиента,а там такая же запись.
Единственное,нужно читать в фоновом задании,чтобы объект был жив после передачи блока данных на клиента.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший