|
Загрузка файлов на сервер Fedor-1971, osipovsa, d4rkmesa, Волшебник, lucky-nn, maxab72, Мультук, Страждущий, denk, fly7, Александр111, Гость из Мариуполя, Буковка, ass1c, Максимка_Космонавтом, Timon1405, sikuda, АнализДанных, Garykom, kir-g, Gucci76, bmitkin, trad, Niveus, rbcvg, Мыхалыч, Андрей_Андреич, banco, shuhard, SerF_2011, Stepashkin, DiMel_77, Климов Сергей, DmitryZzz, Ватт, PLUT, ads55, Pprog151713, Скучный бух, vbus, elka302, Ал_Ив, Kongo2019, orakool, Михаил Козлов, p-soft, Смотрящий, Hans, Лирик, skafandr, arsik, Silgis, U4Me2, Winnie Buh, RVN, CentrForward, Sabron, Djelf, dchumak
| ☑ | ||
---|---|---|---|---|
0
osipovsa
27.10.24
✎
12:22
|
Привет всем.
Изучаю УФ, задача следующая. На форме табличная часть. Есть 30000+ документов РТУ. К ним Формируем печатные формы на сервере по 2000 документов, пригоняем на клиент, подписываем клиентским(!) сертификатом с флешки. Далее задача - сформировать на сервере к каждой РТУ электронный документ (отдельный док в базе самописный) и эти файлы прицепить к документам ЭДО. Соответственно раз каталог клиентский, то нужно их передать на серевер. Передаю также блоками, через БСП загрузить файлы. Но проблема в том, что когда я делаю загрузить файлы - эта процедура асинхронная и моя клиентская процедура на форме завершается. После чего форма становится доступной и пользователь может её закрыть, не дождавшись завершения. Думал сделать через фоновые, но фоновое задание можно запустить только с сервера. А когда я передал файлы на сервер и там запускаю фоновое - форма уже разблокирована. Подскажите кто сталкивался как сделать правильно. |
|||
1
SleepyHead
27.10.24
✎
12:47
|
(0) Обработчик ожидания?
|
|||
2
maxab72
27.10.24
✎
15:39
|
(0) буквально на днях уже была подобная тема.
Возможные решения, это или не разблокировать форму до окончания операции (сделать какую-то проверку, что все выгрузилось), или фоновое задание, быстро но синхронно сохраняя файлы в каком-то промежуточном хранилище, и потом асинхронно пакетами записывая на сервере в папки на диске. |
|||
3
Смотрящий
27.10.24
✎
15:43
|
Флешку пробросить, не ?
|
|||
4
osipovsa
27.10.24
✎
18:56
|
Фоновые задания я написал уже - запускаются в процедуре с директивой НаСервере. Это не подходит, т.к. файлы положить так не получится из фонового. Сертификаты на сервер пробросить никто не даст, т.к. филиалов много и у каждого свой руководитель со своим сертификатом. На сервер их устанавливать никто не даст. Единственное пока что вижу - дать пользователю выбирать серверный каталог, доступный с клиента и тогда можно подписанные файлы сразу брать на сервере (без помещения их на сервер). Но выглядит как костыль если честно.
|
|||
5
osipovsa
27.10.24
✎
18:57
|
(1) - можно подробнее про обработчик ожидания? Что мне это даст и как видите реализацию?
|
|||
6
Garykom
27.10.24
✎
19:01
|
Но проблема в том, что когда я делаю загрузить файлы - эта процедура асинхронная и моя клиентская процедура на форме завершается. После чего форма становится доступной и пользователь может её закрыть, не дождавшись завершения.
проблема высосана из пальца |
|||
7
osa1C
27.10.24
✎
20:12
|
||||
8
osipovsa
28.10.24
✎
05:26
|
(6) - прекрасный ответ. Дай бог чтобы на ваши вопросы отвечали всегда также ясно и по теме.
|
|||
9
Мультук
28.10.24
✎
08:02
|
(8)
Объявляем реквизит формы Низзя Булево При вызове "ЗагрузитьФайлы" Низзя = Истина; В "передЗакрытиемФормы" делаем проверку Если Низзя = Истина Тогда Отказ = Истина; Сообщить("Пользователь, нельзя закрыть форму! "); КонецЕсли; Когда загрузка файлов завершится, то твой (ваш) алгоритм вызовет процедуру ОповещенияОЗавершении, которая сделает Низзя = Ложь; Синтаксис: НачатьПомещениеФайлаНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, <Адрес>, <ПутьКФайлу>, <УникальныйИдентификаторФормы>) |
|||
10
osipovsa
28.10.24
✎
08:49
|
(9) Спасибо. Это понял. Вопрос был в том что я в цикле выполняю НачатьПомещениеФайловНаСервер. А нужно было сделать очередь и процедуру обработки каждого блока (не в цикле)
Подскажите пожалуйста дальше кто понимает: Есть у меня на форме теперь таблица, у которой 30000 строк, строки разбиты по блокам (в таблице колонка НомерБлока) по 2000 строк в блоке (тут неважно количество). Я пригнал документы на сервер, нужно эти 2000 обработать. У Табчасти в УФ на сервере нет метода Найти. Есть только НайтиСтроки. А у меня есть массив со ссылками на документы РТУ, к которым нужно создать ЭДО и прикрепить эти файлы. Но найтиСтроки для поиска уникального значения - это норм? Выглядит как-то не очень. Я могу выгрузить весь блок по номеру блока из табличной части в таблицу значений (2000 строк условных наших), обработать его, но потом всё равно же придется искать каждую обработанную строку, чтобы вставить ссылку на созданный документ ЭДО в табличную часть. Чет туплю, подскажите как правильно делается в УФ. |
|||
11
Мультук
28.10.24
✎
09:25
|
(10)
>> Но найтиСтроки для поиска уникального значения - это норм? Нет слова "норм" и не "норм". Есть "устраивает по производительности" и "не устраивает". &НаСервере Функция ОбработатьБлок(НомерБлока, Табчасть) нс = ТабЧасть.НайтиСтроки(Новый Структура("НомерБлока", НомерБлока)); Для каждого строка из нс Цикл строка.ссылкаЭДО = СоздатьЭДО(строка.СсылкаРТУ); КонецЦикла; КонецФункции |
|||
12
Волшебник
28.10.24
✎
09:25
|
(10) Блоки не нужны.
|
|||
13
osipovsa
28.10.24
✎
10:26
|
(11) - спасибо, сделал.
(12) - почему блоки не нужны? Мне как раз надо разбить на блоки, т.к. филиалы в разных городах. И например тащить на сервер 30000 файлов печ.форм с дальнего востока в москву - может быть очень долго по времени. |
|||
14
Волшебник
28.10.24
✎
10:28
|
(13) Говорю же, блоки не нужны. Поставьте загрузку в фоновый режим, само докачается.
|
|||
15
osipovsa
28.10.24
✎
11:02
|
(14) А как это сделать? Есть пример такой работы?
Или вы под фоновым режимом имеете ввиду запустить одно фоновое задание на загрузку и просто подождать выполнения? И всё же я пока не понимаю. 30000 файлов. По 100Кб каждый минимум (не забываем что у нас pdf, они тяжелые). Итого общий размер 3Гб примерно. Есть сомнения в использовании ФайловаяСистемаКлиент.ЗагрузитьФайлы сразу для всего объёма. |
|||
16
Волшебник
28.10.24
✎
11:11
|
(15) Грузите по 1 файлу
|
|||
17
osipovsa
28.10.24
✎
11:24
|
(16) Я планирую вывести на форму параметр и в зависимости от количества документов и города выставлять значение сколько документов будет лететь в одном блоке по сети на сервер. По 1 точно не будет. Но я понял что вы имели в виду, спасибо, подумаю как вариант.
|
|||
18
Волшебник
28.10.24
✎
11:21
|
(17) Вот не надо заниматься хернёй и всё получится.
Кстати, пишется "иметь в виду" |
|||
19
osipovsa
28.10.24
✎
11:25
|
(19) "иметь ввиду" - согласен, исправил.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |