Имя: Пароль:
1C
1С v8
Загрузка файла регламентным заданием, а если файла нет
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) реальная проверка доступности и корректности файла, очевидно, будет выполняться только в СформироватьДанные_() ?

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

Но - ладно. я бы несколько изменил алгоритм. а вы уж смотрите сами.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой