Работа с временными файлами и каталогами
Стандарт достаточно большой, но сегодня разберем одну из тем.
Довольно часто требуется создание временных файлов но как некоторые изварачиваются иногда шокируешься. И в сетевые папки и на диск C и куда только не сохраняют... Хотя все это описано в стандарте и хотелось бы как раз подсветить важные моменты:
#std542
1. Для получения имени временного файла следует использовать метод ПолучитьИмяВременногоФайла
...
У текущего пользователя может не быть прав на запись в указанный каталог. Кроме того, при одновременном выполнении этого кода из двух разных сеансов возникнет ошибка.
Правильно: ИмяПромежуточногоФайла = ПолучитьИмяВременногоФайла("xml");
При использовании метода ПолучитьИмяВременногоФайла платформа 1С:Предприятие сохраняет контроль над такими файлами и автоматически удаляет их:
- при перезапуске рабочего процесса
- через 20 минут после серверного вызова или сеанса
...
2. Для создания временного каталога рекомендуется также использовать имя, полученное при помощи метода ПолучитьИмяВременногоФайла.Это гарантирует уникальность имени создаваемого каталога при работе в многопользовательском режиме и гарантирует, что после перезапуска рабочего процесса или клиентского приложения временный каталог будет автоматически удален платформой 1С:Предприятие.
Но надеяться на автоматику в полной мере тоже нельзя (4 пункт стандарта):
#std542
4. После окончания работы с временным файлом или каталогом, его необходимо удалить самостоятельно. Нельзя рассчитывать на автоматическое удаление файлов и каталогов при следующем запуске платформы, это может привести к исчерпанию свободного места в каталоге временных файлов.
...
5. При использовании временных файлов и каталогов на сервере, необходимо полностью завершать работу с ними в рамках одного серверного вызова. При работе конфигурации с использованием кластера серверов, при следующем вызове эти файлы могут стать недоступны, так как код начнет исполняться на другом компьютере. При необходимости сохранить данные между серверными вызовами в пределах одного сеанса следует использовать временное хранилище платформы (методы ПоместитьВоВременноеХранилище, ПолучитьИзВременногоХранилища).
Пятый пункт так же немаловажный, так как при длительных операциях, если мы будем надеяться, что у нас есть имя временного файла, то будет неожиданным, когда при следующем серверном вызове окажется, что файла уже нет)
Замечу, что есть исключения для веб-клиента, их лучше почитать в самом стандарте.
Если кратко, то если есть БСП то используем ФайловаяСистемаКлиент.СоздатьВременныйКаталог иначе метод КаталогВременныхФайлов.
P.S. Полное описание стандарта по ссылке в начале поста
#ЧёПоСтандартам #std542