Для работы с временными файлами в 1С используются две встроенные функции глобального контекста: КаталогВременныхФайлов() возвращает путь к папке временных файлов, а ПолучитьИмяВременногоФайла() — готовое уникальное имя файла внутри этой папки.
КаталогВременныхФайлов() — что возвращает и где работает
Функция возвращает строку с путём к каталогу временных файлов пользователя, от имени которого запущено приложение. Никаких параметров не принимает.
Пример вызова:
КаталогВрФайлов = КаталогВременныхФайлов();
// Результат: "C:\Users\ИванИванов\AppData\Local\Temp\"
Важный нюанс: функция выполняется там, где её вызвали. Если вызов происходит на клиенте — возвращается путь к временной папке клиентской машины. Если на сервере — путь к временной папке сервера 1С. На Linux-серверах это, как правило, /tmp/ или аналогичный системный каталог.
ПолучитьИмяВременногоФайла() — получить готовое имя для файла
Функция возвращает уникальное имя файла в каталоге временных файлов. Сам файл при этом не создаётся — только резервируется имя, которого гарантированно ещё нет в этом каталоге.
Синтаксис:
ПолучитьИмяВременногоФайла(<Расширение>)
Параметр расширения — необязательный. Если не указывать, платформа присвоит расширение .tmp.
Примеры:
// Без расширения:
ИмяФайла = ПолучитьИмяВременногоФайла();
// Результат: "C:\Users\ИванИванов\AppData\Local\Temp\v8_F22B_c.tmp"
// С расширением:
ИмяФайла = ПолучитьИмяВременногоФайла("xml");
// Результат: "C:\Users\ИванИванов\AppData\Local\Temp\v8_F22B_11.xml"
Где применяются эти функции
Оба метода используются в схожих сценариях, но решают немного разные задачи.
|
Задача |
Функция |
|
Узнать путь к папке временных файлов |
КаталогВременныхФайлов() |
|
Получить готовое уникальное имя для нового файла |
ПолучитьИмяВременногоФайла() |
|
Создать временный XML или JSON для обмена |
ПолучитьИмяВременногоФайла("xml") |
|
Сохранить локальную копию перед отправкой по сети |
Оба варианта в зависимости от логики |
Типичный сценарий — сформировать файл выгрузки, сохранить его во временный каталог 1С, передать, а затем удалить. Именно для таких случаев и сделаны эти функции.
Как удалить временный файл после использования
Платформа 1С не удаляет временные файлы автоматически. После завершения работы с файлом его нужно удалить самостоятельно через УдалитьФайлы():
ИмяФайла = ПолучитьИмяВременногоФайла("txt");
// ... работа с файлом ...
УдалитьФайлы(ИмяФайла);
Если этого не делать, временные файлы накапливаются. На сервере это особенно заметно при долгой работе или большом количестве пользователей.
Клиент и сервер: где вызывать
Обе функции доступны и на клиенте, и на сервере. Но пути будут разными — это принципиально, если файл нужно передать между сторонами.
Типовая схема при работе в клиент-серверном режиме:
- На сервере получаем имя временного файла и формируем его содержимое.
- Передаём файл на клиент через ПолучитьФайл().
- На клиенте сохраняем в нужное место или открываем.
Напрямую использовать серверный путь на клиенте не получится — машины разные, пути не совпадают.