Перейти к содержанию

Отсутствует удаление временного файла после использования (MissingTemporaryFileDeletion)

Тип Поддерживаются
языки
Важность Включена
по умолчанию
Время на
исправление (мин)
Теги
Ошибка BSL
OS
Важный Да 5 badpractice
standard

Параметры

Имя Тип Описание Значение
по умолчанию
searchDeleteFileMethod Строка Ключевые слова поиска методов удаления / перемещения файлов УдалитьФайлы|DeleteFiles|НачатьУдалениеФайлов|BeginDeletingFiles|ПереместитьФайл|MoveFile

Описание диагностики

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

Примеры

Неправильно:

ИмяПромежуточногоФайла = ПолучитьИмяВременногоФайла("xml");
Данные.Записать(ИмяПромежуточногоФайла);
// далее нет удаления файла

Правильно:

ИмяПромежуточногоФайла = ПолучитьИмяВременногоФайла("xml");
Данные.Записать(ИмяПромежуточногоФайла);

// Работа с файлом
...

// Удаляем временный файл
Попытка
   УдалитьФайлы(ИмяПромежуточногоФайла);
Исключение
   ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Действие'"), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;

Особенности работы

Диагностика определяет корректность работы с временными файлами по наличию методов удаления либо перемещения.

Если в прикладном решении используется свой метод удаления/перемещения поверх платформенного, то стоит указать его в параметре диагностики, добавив через |. Диагностика понимает как глобальные методы, так и расположенные в общих модулях или модулях менеджеров.

Ниже приведены примеры настройки

  • Глобальный метод МоеУдалениеФайлов в модуле ГлобальныйСервер в параметре указывается как МоеУдалениеФайлов
  • Метод МоеУдалениеФайлов в общем модуле ФайлыКлиентСервер в параметре указывается как ФайлыКлиентСервер.МоеУдалениеФайлов
  • Метод МоеУдалениеФайлов в модуле менеджера справочника ФайловыеОперации в параметре указывается как Справочники.ФайловыеОперации.МоеУдалениеФайлов

и так далее.

Источники

Сниппеты

Экранирование кода

// BSLLS:MissingTemporaryFileDeletion-off
// BSLLS:MissingTemporaryFileDeletion-on

Параметр конфигурационного файла

"MissingTemporaryFileDeletion": {
    "searchDeleteFileMethod": "УдалитьФайлы|DeleteFiles|НачатьУдалениеФайлов|BeginDeletingFiles|ПереместитьФайл|MoveFile"
}