Сбойные короткие отчеты о розничных продажах. Frontol, УТ 11.5
После переезда на новый сервер иногда стали появляться частично загруженные ОРП. Моё подозрение сразу пало на FTP, потому что в процессе файлы отчетов rep.txt считывались с FTP, а у меня уже был опыт, что FTP может передавать файл не целиком, не выдавая при этом ошибки.
Поэтому добавил контроль того, что файл считался целиком:
МассивФайловФТП = ФТПСоединение.НайтиФайлы(СтрокаМассиваОборудования.ПараметрыОборудования.ФайлОтчетаФТП); Если МассивФайловФТП.Количество() = 0 Тогда Продолжить; КонецЕсли; ИмяВременногоФайла = КаталогВременныхФайлов() + "_rep " + Строка(Новый УникальныйИдентификатор) + ".txt"; Попытка ФТПСоединение.Получить(СтрокаМассиваОборудования.ПараметрыОборудования.ФайлОтчетаФТП, ИмяВременногоФайла); Исключение Лог("ПодключаемоеОборудование.ККМОфлайн.Ошибка", УровеньЖурналаРегистрации.Ошибка, , , "Ошибка загрузки отчета ККМ офлайн: """ + СтрокаМассиваОборудования.ОборудованиеСсылка + """: ошибка получения файла с FTP ресурса." + Символы.ПС + ОписаниеОшибки()); Продолжить; КонецПопытки; Файл = Новый ТекстовыйДокумент(); ФайлЛок = Новый Файл(ИмяВременногоФайла); РазмерНаФТП = МассивФайловФТП[0].Размер(); РазмерЛок = ФайлЛок.Размер(); Если РазмерНаФТП <> РазмерЛок Тогда Лог("ПодключаемоеОборудование.ККМОфлайн.Ошибка", УровеньЖурналаРегистрации.Ошибка, , , "Прочитался файл неверного размера на FTP размер: " + РазмерНаФТП + " локально размер: " + РазмерЛок + Символы.ПС + ОписаниеОшибки()); КонецЕсли;
Кстати, после успешной загрузки файл FTP переименовывался в другое имя для архив, поэтому диагностировать проблему было сложно — вроде бы файл полный, а загружена лишь часть товаров:
Если РезультатПередачиДанных.Успешно Тогда Попытка //Осипов 2022-07-11 //Mag1/REP/rep.txt КаталогАрхива = СтрЗаменить(СтрокаМассиваОборудования.ПараметрыОборудования.ФайлОтчетаФТП, "rep.txt", "LOG"); ИмяФайлаАрхива = КаталогАрхива + "/" + Формат(ТекущаяДата(), "ДФ=yyyy-MM-dd-HHmmss-") + "rep-bgnd.txt"; Попытка ФТПСоединение.СоздатьКаталог(КаталогАрхива); Исключение //Если ошибка, значит каталог уже есть //ВызватьИсключение "Ошибка создания каталога: """ + КаталогАрхива + """" + ОписаниеОшибки(); //Временно КонецПопытки; ФТПСоединение.Переместить(СтрокаМассиваОборудования.ПараметрыОборудования.ФайлОтчетаФТП, ИмяФайлаАрхива); Лог("ПодключаемоеОборудование.ККМОфлайн.ОК", УровеньЖурналаРегистрации.Информация, , , "Файл отчета ККМ: """ + СтрокаМассиваОборудования.ПараметрыОборудования.ФайлОтчетаФТП + """ перемещен в """ + ИмяФайлаАрхива + """." ); //ФТПСоединение.Удалить(СтрокаМассиваОборудования.ПараметрыОборудования.ФайлОтчетаФТП); Исключение Лог("ПодключаемоеОборудование.ККМОфлайн.Ошибка", УровеньЖурналаРегистрации.Ошибка, , , "Ошибка при удалении файла с FTP ресурса: """ + СтрокаМассиваОборудования.ОборудованиеСсылка + """." + Символы.ПС + ОписаниеОшибки()); Возврат; //Временно КонецПопытки; // УдалитьФайлы(ИмяВременногоФайла); Иначе Лог("ПодключаемоеОборудование.ККМОфлайн.Ошибка", УровеньЖурналаРегистрации.Ошибка, , , "Ошибка при передаче данных ККМ: """ + СтрокаМассиваОборудования.ОборудованиеСсылка + """."); КонецЕсли;
Конечно, можно было бы попросить администраторов получше настроить FTP сервер, но не знаю, может сама природа FTP позволяет такие штуки. На прошлом сервере таких сбоев, правда, не было.
УТ: 11.5.7.402 Объем: 0.8 час
Свежие комментарии