|   |   | 
| 
 | Загрузка файла регламентным заданием, а если файла нет | ☑ | ||
|---|---|---|---|---|
| 0
    
        vikki 30.07.19✎ 16:23 | 
        Добрый день! Наверное тема избитая. но не могу найти ответ. Внешняя обработка запускается регламентным заданием по расписанию один раз затягивает оттуда файл. Файл сбрасывается из другой системы автоматически в 4 часа утра. В моем расписании обработка срабатывает в 4.20, с запасиком на всякий случай. А вот если файл не свалился вовремя, а скажем упал в 4.30 утра. Моя обработка отработает и напишет, что выполнена, а в лог запишет, что файл не найден. Ей хорошо, мне будет не очень((( Как сделать так, чтобы обработка запускалась, например каждые пять минут с 4.20 до 7.00, пока не появиться нужный файл? Через расписание у меня не получилось, она начнет потом снова и снова загружать файл каждые пять минут. Может программно как-то прописать, типа файл не найден, тогда ошибка и в расписании повтор при аварийном завершении? Натолкните на решение, плиз.     | |||
| 1
    
        PiotrLoginov 30.07.19✎ 16:26 | 
        Уже столько было таких тем... навскидку подводные камни: файл может еще отсутствовать, файл может быть занят другим процессом, в том числе находится в состоянии копирования, файл может уже лежать в нужном месте, но прав на него нет...
 Надо пользоваться поиском. Насчет жалоб на сложности при настройке расписания - это вообще ерунда. | |||
| 2
    
        Вафель 30.07.19✎ 16:27 | 
        вызывай исключение.  в расписании настрой повторять по ошибке     | |||
| 3
    
        PiotrLoginov 30.07.19✎ 16:27 | 
        * находится = находиться     | |||
| 4
    
        Вафель 30.07.19✎ 16:28 | 
        (3) все камни обходятся через (2)     | |||
| 5
    
        Cyberhawk 30.07.19✎ 16:28 | 
        Отправляй уведомление, если все хорошо.
 Таким образом выработается рефлекс, что если уведомление не пришло, значит надо смотреть. | |||
| 6
    
        PiotrLoginov 30.07.19✎ 16:29 | 
        (3) я бы предпочел все исключительные ситуации обрабатывать самостоятельно. Иначе есть вероятность, что повторение произойдет раз-другой-третий.. и успокоится.
 надо привыкать прописывать реакцию на проблемы. например уведомление для других механизмов или лиц. | |||
| 7
    
        PiotrLoginov 30.07.19✎ 16:30 | 
        (5) опять опередил )     | |||
| 8
    
        Cyberhawk 30.07.19✎ 16:32 | 
        (6) Нюанс в том, что уведомлять о том, когда что-то плохо, не сработает, когда механизм уведомления лег.
 Это как белый маячок на светофоре жд - говорит о том, что он в принципе работает. | |||
| 9
    
        vikki 30.07.19✎ 16:32 | 
        (5) кому уведомление? пользователям, там каждый шаг в лог пишется, потому как из этого файла формируется куча документов. Вообще еще такой ситуации, чтобы файл вовремя не упал не было, но вдруг будет и мне нужно это предусмотреть     | |||
| 10
    
        Cyberhawk 30.07.19✎ 16:32 | 
        (9) Ответственному     | |||
| 11
    
        Вафель 30.07.19✎ 16:32 | 
        (2) хотя что-то я не вижу такой настройки. но помню что была. может я с виндой попутал? | |||
| 12
    
        piter3 30.07.19✎ 16:33 | 
        (9) Это уже организационный вопрос     | |||
| 13
    
        Cyberhawk 30.07.19✎ 16:33 | 
        (11) Это свойства регл. задания, а не расписания     | |||
| 14
    
        vikki 30.07.19✎ 16:33 | 
        (11) там есть повтор при аварийном завершении     | |||
| 15
    
        Вафель 30.07.19✎ 16:34 | 
        уведомление сразу слать некошерно. а вот через полчаса уже можно     | |||
| 16
    
        vikki 30.07.19✎ 16:40 | 
        у меня, кроме мысли с ошибкой и повтором нет...А если с уведомлением, как программно  будет выглядеть? Файл не найден, признак = не выполнено и как его передать регламентному заданию, что нужно повторить вновь через пять минут поиск файла?     | |||
| 17
    
        vikki 30.07.19✎ 16:42 | 
        или не передавать, а все в коде прописать? а в семь утра обработку отрубит расписание, если файл так и не найдется?     | |||
| 18
    
        Cyberhawk 30.07.19✎ 16:42 | 
        Уведомление по электронной почте например. Для особо взыскательных - в Телеграм, Слэк и т.д.     | |||
| 19
    
        vikki 30.07.19✎ 16:44 | 
        (18) типа мне же в пять утра, что вставай и иди проверяй((((((((((((     | |||
| 20
    
        Cyberhawk 30.07.19✎ 16:47 | 
        (19) Обычно пульс настраивается чтоб приходил в начало рабочего дня. Пульс не пришел - значит надо смотреть.     | |||
| 21
    
        Cyberhawk 30.07.19✎ 16:48 | 
        Пульс = heartbeat. Вид рассылки типа такой, когда все хорошо долбит регулярно.     | |||
| 22
    
        vikki 30.07.19✎ 16:49 | 
        (20) я это в логе увижу в начале рабочего дня     | |||
| 23
    
        Cyberhawk 30.07.19✎ 16:49 | 
        Ну вот чтоб в лог лишний раз не лазать, пульс и настраивается.     | |||
| 24
    
        vikki 30.07.19✎ 16:54 | 
        Может всетаки программно как-то можно, если файлы не найдены, то принудительно запускать обработку через пять минут?
 Попытка Если ИдентификаторКоманды = "ЗагрузкаОтчета" Тогда НайденныеФайлы = НайтиФайлы(ИмяФайла_, "*_nonDMA.xls"); Если НайденныеФайлы.Количество() > 0 Тогда ЗаписатьДанныеЛог("Найдены файлы в каталоге для загрузки."); // загружаем файл и отправляем на исполнение алгоритм Для Каждого Файл Из НайденныеФайлы Цикл ЗаписатьДанныеЛог("Считывается файл " + Файл.Имя); СчитатьФайл_(ИмяФайла_ + "\" + Файл.Имя); СформироватьДанные_(); КонецЦикла; Иначе ЗаписатьДанныеЛог("Не найдены файлы для загрузки."); Возврат; КонецЕсли; КонецЕсли; Исключение //добавить запись в журнал ЗаписьЖурналаРегистрации( ОписаниеОшибки(), УровеньЖурналаРегистрации.Ошибка, , , , РежимТранзакцииЗаписиЖурналаРегистрации.Независимая); ЗаписатьДанныеЛог("Ошибка считывания файла. См.журнал регистрации."); КонецПопытки; | |||
| 25
    
        ДенисЧ 30.07.19✎ 16:58 | 
        Сказали же... При ошибке повторять... А в самой рз - если нет файла кидать исключение...     | |||
| 26
    
        karabas11 30.07.19✎ 20:51 | 
        (0) а в чем проблема долбиться на ресурс в поисках файла хоть каждые 10 секунд? Если найден, загружать, ставить отметку (дата, загружен), при достижении критического времени без загруженного файла спамить ответственных за выкладку файла и/или тех кому нужны данные, пущай сами разбираются.     | |||
| 27
    
        PiotrLoginov 30.07.19✎ 22:55 | 
        Только меня смущает, что в (24) реальная проверка доступности и корректности файла, очевидно, будет выполняться только в СформироватьДанные_() ?
 Полагаю, даже если НайтиФайлы() вернет массив с искомым файлом, это, например, еще не будет означать, что копирование искомого файла в проверяемый каталог уже завершено. Но - ладно. я бы несколько изменил алгоритм. а вы уж смотрите сами. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |