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

Загрузка файла регламентным заданием, а если файла нет

Загрузка файла регламентным заданием, а если файла нет
Я
   vikki
 
30.07.19 - 16:23
Добрый день! Наверное тема избитая. но не могу найти ответ. Внешняя обработка запускается регламентным заданием по расписанию один раз затягивает оттуда файл. Файл сбрасывается из другой системы автоматически в 4 часа утра. В моем расписании обработка срабатывает в 4.20, с запасиком на всякий случай. А вот если файл не свалился вовремя, а скажем упал в 4.30 утра. Моя обработка отработает и напишет, что выполнена, а в лог запишет, что файл не найден. Ей хорошо, мне будет не очень((( Как сделать так, чтобы обработка запускалась, например каждые пять минут с 4.20 до 7.00, пока не появиться нужный файл? Через расписание у меня не получилось, она начнет потом снова и снова загружать файл каждые пять минут. Может программно как-то прописать, типа файл не найден, тогда ошибка и в расписании повтор при аварийном завершении? Натолкните на решение, плиз.
 
 
   PiotrLoginov
 
1 - 30.07.19 - 16:26
Уже столько было таких тем... навскидку подводные камни: файл может еще отсутствовать, файл может быть занят другим процессом, в том числе находится в состоянии копирования, файл может уже лежать в нужном месте, но прав на него нет...

Надо пользоваться поиском.

Насчет жалоб на сложности при настройке расписания - это вообще ерунда.
   Вафель
 
2 - 30.07.19 - 16:27
вызывай исключение.  в расписании настрой повторять по ошибке
   PiotrLoginov
 
3 - 30.07.19 - 16:27
* находится = находиться
   Вафель
 
4 - 30.07.19 - 16:28
(3) все камни обходятся через (2)
   Cyberhawk
 
5 - 30.07.19 - 16:28
Отправляй уведомление, если все хорошо.
Таким образом выработается рефлекс, что если уведомление не пришло, значит надо смотреть.
   PiotrLoginov
 
6 - 30.07.19 - 16:29
(3) я бы предпочел все исключительные ситуации обрабатывать самостоятельно. Иначе есть вероятность, что повторение произойдет раз-другой-третий.. и успокоится.

надо привыкать прописывать реакцию на проблемы. например уведомление для других механизмов или лиц.
   PiotrLoginov
 
7 - 30.07.19 - 16:30
(5) опять опередил )
   Cyberhawk
 
8 - 30.07.19 - 16:32
(6) Нюанс в том, что уведомлять о том, когда что-то плохо, не сработает, когда механизм уведомления лег.
Это как белый маячок на светофоре жд - говорит о том, что он в принципе работает.
   vikki
 
9 - 30.07.19 - 16:32
(5) кому уведомление? пользователям, там каждый шаг в лог пишется, потому как из этого файла формируется куча документов. Вообще еще такой ситуации, чтобы файл вовремя не упал не было, но вдруг будет и мне нужно это предусмотреть
   Cyberhawk
 
10 - 30.07.19 - 16:32
(9) Ответственному
   Вафель
 
11 - 30.07.19 - 16:32
(2) хотя что-то я не вижу такой настройки. но помню что была.
может я с виндой попутал?
   piter3
 
12 - 30.07.19 - 16:33
(9) Это уже организационный вопрос
   Cyberhawk
 
13 - 30.07.19 - 16:33
(11) Это свойства регл. задания, а не расписания
   vikki
 
14 - 30.07.19 - 16:33
(11) там есть повтор при аварийном завершении
   Вафель
 
15 - 30.07.19 - 16:34
уведомление сразу слать некошерно. а вот через полчаса уже можно
   vikki
 
16 - 30.07.19 - 16:40
у меня, кроме мысли с ошибкой и повтором нет...А если с уведомлением, как программно  будет выглядеть? Файл не найден, признак = не выполнено и как его передать регламентному заданию, что нужно повторить вновь через пять минут поиск файла?
   vikki
 
17 - 30.07.19 - 16:42
или не передавать, а все в коде прописать? а в семь утра обработку отрубит расписание, если файл так и не найдется?
   Cyberhawk
 
18 - 30.07.19 - 16:42
Уведомление по электронной почте например. Для особо взыскательных - в Телеграм, Слэк и т.д.
   vikki
 
19 - 30.07.19 - 16:44
(18) типа мне же в пять утра, что вставай и иди проверяй((((((((((((
   Cyberhawk
 
20 - 30.07.19 - 16:47
(19) Обычно пульс настраивается чтоб приходил в начало рабочего дня. Пульс не пришел - значит надо смотреть.
   Cyberhawk
 
21 - 30.07.19 - 16:48
Пульс = heartbeat. Вид рассылки типа такой, когда все хорошо долбит регулярно.
   vikki
 
22 - 30.07.19 - 16:49
(20) я это в логе увижу в начале рабочего дня
   Cyberhawk
 
23 - 30.07.19 - 16:49
Ну вот чтоб в лог лишний раз не лазать, пульс и настраивается.
   vikki
 
24 - 30.07.19 - 16:54
Может всетаки программно как-то можно, если файлы не найдены, то принудительно запускать обработку через пять минут?
Попытка
        Если ИдентификаторКоманды = "ЗагрузкаОтчета" Тогда
            НайденныеФайлы = НайтиФайлы(ИмяФайла_, "*_nonDMA.xls");     
            Если НайденныеФайлы.Количество() > 0 Тогда 
                ЗаписатьДанныеЛог("Найдены файлы в каталоге для загрузки."); 
                // загружаем файл и отправляем на исполнение алгоритм

                Для Каждого Файл Из НайденныеФайлы Цикл 
                    ЗаписатьДанныеЛог("Считывается файл " + Файл.Имя);                          СчитатьФайл_(ИмяФайла_ + "\" + Файл.Имя);     
                    СформироватьДанные_();
                КонецЦикла;
            Иначе ЗаписатьДанныеЛог("Не найдены файлы для загрузки."); Возврат;
                
            КонецЕсли;  
        КонецЕсли;
    Исключение
        //добавить запись в журнал

        ЗаписьЖурналаРегистрации(
        ОписаниеОшибки(),
        УровеньЖурналаРегистрации.Ошибка,
        ,
        ,
        ,
        РежимТранзакцииЗаписиЖурналаРегистрации.Независимая);
        ЗаписатьДанныеЛог("Ошибка считывания файла. См.журнал регистрации.");
    КонецПопытки;
   ДенисЧ
 
25 - 30.07.19 - 16:58
Сказали же... При ошибке повторять... А в самой рз - если нет файла кидать исключение...
   karabas11
 
26 - 30.07.19 - 20:51
(0) а в чем проблема долбиться на ресурс в поисках файла хоть каждые 10 секунд? Если найден, загружать, ставить отметку (дата, загружен), при достижении критического времени без загруженного файла спамить ответственных за выкладку файла и/или тех кому нужны данные, пущай сами разбираются.
   PiotrLoginov
 
27 - 30.07.19 - 22:55
Только меня смущает, что в (24) реальная проверка доступности и корректности файла, очевидно, будет выполняться только в СформироватьДанные_() ?

Полагаю, даже если НайтиФайлы() вернет массив с искомым файлом, это, например, еще не будет означать, что копирование искомого файла в проверяемый каталог уже завершено.

Но - ладно. я бы несколько изменил алгоритм. а вы уж смотрите сами.


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