Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Узнать скачен ли файл с FTP ?

Узнать скачен ли файл с FTP ?
Я
   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
Пиши файловый флаг "файл скачан". Перед началом обработки проверяй его, после обработки удаляй. Перед скачкой тоже проверяй если надо
   vde69
 
3 - 08.07.19 - 12:47
Zip файл клади, и проверяй можно или нельзя его распокавать
   Radion
 
4 - 08.07.19 - 12:47
(1)(2) ну так у меня результат закачивания, отражается в регистре сведений - т.е. после
FTP.Получить(эл.ПолноеИмя,ВхXMLФорма+"\"+эл.Имя);
ЗаписьВРегистрФайлСкачан(ИмяФайла) - где указывается имя скаченного файла.
Второе регламентное проверяет наличие записи в регистре и начинает обрабатывать его. Но все равно получаются битые файлы ((
   PiotrLoginov
 
5 - 08.07.19 - 12:48
(0) да в любом случае прежде чем фал начинать обрабатывать, нужно проверять его доступность. Пока он еще в процессе создания/обработки другим механизмом, он будет занят.
   ptiz
 
6 - 08.07.19 - 12:49
(0) Копируй с "левым" расширением. После копирования - переименовываешь.
   vde69
 
7 - 08.07.19 - 12:49
А вообще у меня на инфостарте валялся старый обменник через скуль базу, там даже транзакции при обмене работают
   Йохохо
 
8 - 08.07.19 - 12:50
(6) с вторым левым расширением
   ptiz
 
9 - 08.07.19 - 12:54
хотя еще правильнее: во временный файл
   Radion
 
10 - 08.07.19 - 12:57
(6) так в том и дело, как понять что он УЖЕ СКАЧЕН ?
   Radion
 
11 - 08.07.19 - 12:57
(9) так в том и дело, как понять что он УЖЕ СКАЧЕН ?
   hhhh
 
12 - 08.07.19 - 13:01
(11) а зачем понимать? Ну запустится задание 2-й раз, если первый не получилось обработать.
   ptiz
 
13 - 08.07.19 - 13:05
(11) В смысле? Запускаешь команду чтение с фтп во временный файл, как она отработала - копируешь в правильное место с правильным именем.
   Radion
 
14 - 08.07.19 - 13:07
(13) тогда я не понимаю как работает функция FTP.Получить я предполагаю, что после ее отработки, файл уже скачен с ФТП разве нет?
   hhhh
 
15 - 08.07.19 - 13:14
(14) нет
   ptiz
 
16 - 08.07.19 - 13:16
(14) Скачан.
   Radion
 
17 - 08.07.19 - 13:18
(15, 16 )так скачен или нет ? )))
   ptiz
 
18 - 08.07.19 - 13:19
(17) Скачан. Никакой асинхронности нет в этом методе.
   Radion
 
19 - 08.07.19 - 13:27
(18) так почему же после кода:
FTP.Получить(эл.ПолноеИмя,ВхXMLФорма+"\"+эл.Имя);
ЗаписьВРегистрФайлСкачан(ИмяФайла);

я пытаюсь обработать файл и он с 0 Kb ?
   hhhh
 
20 - 08.07.19 - 13:31
(19) чой-то разные имена файлов в первой и второй строчке.
   Radion
 
21 - 08.07.19 - 13:34
(20) сорри это я не скопировал а писал, вот так правильно:
ФТП.Получить(эл.ПолноеИмя,ВхXMLФорма+"\"+эл.Имя);
ЗаписьВРегистрФайлСкачан(эл.Имя);
   ptiz
 
22 - 08.07.19 - 13:44
(19) Значит, какая-то фигня с ftp. А фигня с ftp бывает самая разнообразная, вплоть до того, что скачивать приходится с помощью сторонних утилит, а не средствами 1С.
   evgeniy_n
 
23 - 08.07.19 - 13:50
Может,
Файл.Размер
попробовать?
Проверить на нулевой размер, или на изменение размера в процессе скачивания.
   Radion
 
24 - 08.07.19 - 13:50
(23) и как это сделать?
   ДядяМитяй
 
25 - 08.07.19 - 14:03
а обычным ftp клиентом этот файл тянется в это место?
   ДядяМитяй
 
26 - 08.07.19 - 14:38
я бы так попробовал для диагностики

ВрФайл = ПолучитьИмяВременногоФайла(расширение);

Попытка
ФТП.Получить(эл.ПолноеИмя, ВрФайл);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки

Попытка
//записываем файл куда надо с нужным именем

Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки
   evgeniy_n
 
27 - 08.07.19 - 15:26
(24) Партизанщина, конечно. Сам так не делал, но, наверное, так:
Пока ИмяФайла.Размер = 0 Цикл
  //ждём, можно добавить какое-то аварийное прерывание от зацикливания

КонецЦикла;
// дальше пишем в регистр


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.