|
Узнать скачен ли файл с FTP ? | ☑ | ||
---|---|---|---|---|
0
Radion
08.07.19
✎
12:38
|
Всем привет, УТ 11.3. Установлено регламентное задание по скачиванию файла c ftp. Так вот, суть в том, что после скачивания файла, второе регламентное задание начинает его обрабатывать. Ошибка в том, как я понимаю как только первое регламентное задание начало копирование, второе регламентное задание начинает этот файл уже обрабатывать, возникает конфликт и создается файл с размером 0 kb - битый. Вопрос как понять что файл с ftp уже скачан и его можно обрабатывать? Спасибо.
|
|||
1
Вафель
08.07.19
✎
12:38
|
делай в 1 задании, а не в разных
|
|||
2
ДенисЧ
08.07.19
✎
12:44
|
Пиши файловый флаг "файл скачан". Перед началом обработки проверяй его, после обработки удаляй. Перед скачкой тоже проверяй если надо
|
|||
3
vde69
08.07.19
✎
12:47
|
Zip файл клади, и проверяй можно или нельзя его распокавать
|
|||
4
Radion
08.07.19
✎
12:47
|
(1)(2) ну так у меня результат закачивания, отражается в регистре сведений - т.е. после
FTP.Получить(эл.ПолноеИмя,ВхXMLФорма+"\"+эл.Имя); ЗаписьВРегистрФайлСкачан(ИмяФайла) - где указывается имя скаченного файла. Второе регламентное проверяет наличие записи в регистре и начинает обрабатывать его. Но все равно получаются битые файлы (( |
|||
5
PiotrLoginov
08.07.19
✎
12:48
|
(0) да в любом случае прежде чем фал начинать обрабатывать, нужно проверять его доступность. Пока он еще в процессе создания/обработки другим механизмом, он будет занят.
|
|||
6
ptiz
08.07.19
✎
12:49
|
(0) Копируй с "левым" расширением. После копирования - переименовываешь.
|
|||
7
vde69
08.07.19
✎
12:49
|
А вообще у меня на инфостарте валялся старый обменник через скуль базу, там даже транзакции при обмене работают
|
|||
8
Йохохо
08.07.19
✎
12:50
|
(6) с вторым левым расширением
|
|||
9
ptiz
08.07.19
✎
12:54
|
хотя еще правильнее: во временный файл
|
|||
10
Radion
08.07.19
✎
12:57
|
(6) так в том и дело, как понять что он УЖЕ СКАЧЕН ?
|
|||
11
Radion
08.07.19
✎
12:57
|
(9) так в том и дело, как понять что он УЖЕ СКАЧЕН ?
|
|||
12
hhhh
08.07.19
✎
13:01
|
(11) а зачем понимать? Ну запустится задание 2-й раз, если первый не получилось обработать.
|
|||
13
ptiz
08.07.19
✎
13:05
|
(11) В смысле? Запускаешь команду чтение с фтп во временный файл, как она отработала - копируешь в правильное место с правильным именем.
|
|||
14
Radion
08.07.19
✎
13:07
|
(13) тогда я не понимаю как работает функция FTP.Получить я предполагаю, что после ее отработки, файл уже скачен с ФТП разве нет?
|
|||
15
hhhh
08.07.19
✎
13:14
|
(14) нет
|
|||
16
ptiz
08.07.19
✎
13:16
|
(14) Скачан.
|
|||
17
Radion
08.07.19
✎
13:18
|
(15, 16 )так скачен или нет ? )))
|
|||
18
ptiz
08.07.19
✎
13:19
|
(17) Скачан. Никакой асинхронности нет в этом методе.
|
|||
19
Radion
08.07.19
✎
13:27
|
(18) так почему же после кода:
FTP.Получить(эл.ПолноеИмя,ВхXMLФорма+"\"+эл.Имя); ЗаписьВРегистрФайлСкачан(ИмяФайла); я пытаюсь обработать файл и он с 0 Kb ? |
|||
20
hhhh
08.07.19
✎
13:31
|
(19) чой-то разные имена файлов в первой и второй строчке.
|
|||
21
Radion
08.07.19
✎
13:34
|
(20) сорри это я не скопировал а писал, вот так правильно:
ФТП.Получить(эл.ПолноеИмя,ВхXMLФорма+"\"+эл.Имя); ЗаписьВРегистрФайлСкачан(эл.Имя); |
|||
22
ptiz
08.07.19
✎
13:44
|
(19) Значит, какая-то фигня с ftp. А фигня с ftp бывает самая разнообразная, вплоть до того, что скачивать приходится с помощью сторонних утилит, а не средствами 1С.
|
|||
23
evgeniy_n
08.07.19
✎
13:50
|
Может,
Файл.Размер попробовать? Проверить на нулевой размер, или на изменение размера в процессе скачивания. |
|||
24
Radion
08.07.19
✎
13:50
|
(23) и как это сделать?
|
|||
25
ДядяМитяй
08.07.19
✎
14:03
|
а обычным ftp клиентом этот файл тянется в это место?
|
|||
26
ДядяМитяй
08.07.19
✎
14:38
|
я бы так попробовал для диагностики
ВрФайл = ПолучитьИмяВременногоФайла(расширение); Попытка ФТП.Получить(эл.ПолноеИмя, ВрФайл); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки Попытка //записываем файл куда надо с нужным именем Исключение Сообщить(ОписаниеОшибки()); КонецПопытки |
|||
27
evgeniy_n
08.07.19
✎
15:26
|
(24) Партизанщина, конечно. Сам так не делал, но, наверное, так:
Пока ИмяФайла.Размер = 0 Цикл //ждём, можно добавить какое-то аварийное прерывание от зацикливания КонецЦикла; // дальше пишем в регистр |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |