Сбойные короткие отчеты о розничных продажах. 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 час

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *