[FP] Не видит удаление временного файла
Диагностика
Нужно добавить удаление временного файла после использования MissingTemporaryFileDeletion
Версия
1.14.
Описание ложного срабатывания диагностики
В модуле по определенным условиям создаются файлы с помощью процедуры ПолучитьИмяВременногоФайла() Далее в модуле по этим же условиям эти файлы удаляются но все равно выводит ошибку.
Пример кода
Если ДождатьсяЗавершения Тогда
Если ПолучитьПотокВывода Тогда
ИмяФайлаПотокаВывода = ПолучитьИмяВременногоФайла("stdout.tmp");
СтрокаКоманды = СтрокаКоманды + " > """ + ИмяФайлаПотокаВывода + """";
КонецЕсли;
Если ПолучитьПотокОшибок Тогда
ИмяВременногоФайлаПотокаОшибок = ПолучитьИмяВременногоФайла("stderr.tmp");
СтрокаКоманды = СтрокаКоманды + " 2>""" + ИмяВременногоФайлаПотокаОшибок + """";
КонецЕсли;
КонецЕсли;
Если КодировкаПотоков = Неопределено Тогда
КодировкаПотоков = КодировкаСтандартныхПотоков();
КонецЕсли;
КодВозврата = Неопределено;
Если ОбщегоНазначения.ЭтоWindowsСервер() Тогда
ИмяФайлаКоманды = ПолучитьИмяВременногоФайла("run.bat");
ТекстовыйДокумент = РаботаСФайламиСлужебныйКлиентСервер.НовыйФайлЗапускаКомандыWindows(
СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения, КодировкаИсполнения);
ТекстовыйДокумент.Записать(ИмяФайлаКоманды, КодировкаПотоков);
Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
// В файловой информационной базе показывать окно консоли не следует и в серверном контексте.
Оболочка = Новый COMОбъект("Wscript.Shell");
КодВозврата = Оболочка.Run(ИмяФайлаКоманды, 0, ДождатьсяЗавершения);
Оболочка = Неопределено;
Иначе
ЗапуститьПриложение(ИмяФайлаКоманды,, ДождатьсяЗавершения, КодВозврата);
КонецЕсли;
Если ДождатьсяЗавершения Тогда
// Автоматически удаление включено только в случае не ожидания завершения, т.к. код возврата там не интересен.
// В случае, когда нужен корректный код возврата автоматического удаления нет, потому следует удалить файл здесь.
УдалитьВременныйФайл(ИмяФайлаКоманды);
КонецЕсли;
Иначе
ЗапуститьПриложение(СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения, КодВозврата);
КонецЕсли;
ПотокВывода = "";
ПотокОшибок = "";
Если ДождатьсяЗавершения Тогда
Если ПолучитьПотокВывода Тогда
ПотокВывода = ПрочитатьФайлЕслиСуществует(ИмяФайлаПотокаВывода, КодировкаПотоков);
УдалитьВременныйФайл(ИмяФайлаПотокаВывода);
КонецЕсли;
Если ПолучитьПотокОшибок Тогда
ПотокОшибок = ПрочитатьФайлЕслиСуществует(ИмяВременногоФайлаПотокаОшибок, КодировкаПотоков);
УдалитьВременныйФайл(ИмяВременногоФайлаПотокаОшибок);
КонецЕсли;
КонецЕсли;
Скриншоты
Дополнительная информация
А сколько срабатываний суммарно в этом куске кода у вас? Два или три?
А сколько срабатываний суммарно в этом куске кода у вас? Два или три?
Два.
А если переменную ИмяВременногоФайлаПотокаОшибок определить до первого условия во вложенном условии? Сейчас она, по сути, локальная для блока условия
А если переменную
ИмяВременногоФайлаПотокаОшибокопределить до первого условия во вложенном условии? Сейчас она, по сути, локальная для блока условия
Не исправило ситуацию.