Куда 1С складывает кэш и временные файлы и как ими управлять
Содержание
У 1С 8.3 нет одного «каталога временных файлов». Кэш конфигурации лежит в %LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8, а одноразовые файлы (выгрузки, печать, вложения) платформа пишет в системную папку %TEMP%. Из кода путь получают функцией КаталогВременныхФайлов(). Вставьте любой из этих путей в окно Win+R — и папка откроется.
Частая ошибка — искать временные файлы в папке с базой или в C:\Program Files\1cv8. Там лежат сами данные и программа. Кэш и временные файлы живут в профиле Windows каждого пользователя, а на сервере 1С — в профиле учётной записи службы. Поэтому на одном компьютере их столько копий, сколько людей работает в 1С.
Какие временные файлы создаёт 1С и где они лежат
Временные данные 1С делятся на три группы. У каждой своё место и свой срок жизни.
- 🗂️ Кэш конфигурации и метаданных. Платформа хранит копию описания конфигурации, чтобы не тянуть её с сервера при каждом запуске. Живёт долго, растёт с каждой новой базой.
- 📄 Рабочие временные файлы. Создаются на время операции: формирование печатной формы, выгрузка в Excel, открытие вложенного файла. Обычно удаляются сами, но после аварийного закрытия остаются.
- 🖥️ Серверный кэш. В клиент-серверном варианте сервер 1С хранит свои временные данные о сеансах и базах.
Сводная таблица путей для Windows:
| Что | Путь | Можно удалять |
|---|---|---|
| Локальный кэш конфигураций | %LOCALAPPDATA%\1C\1cv8\<GUID базы> | Да, при закрытой 1С |
| Кэш и локальные настройки в профиле | %APPDATA%\1C\1cv8\<GUID базы> | Да, при закрытой 1С |
| Список баз и настройки стартера | %APPDATA%\1C\1CEStart | Нет |
| Рабочие временные файлы клиента | %TEMP% (файлы v8_*.tmp и папки с похожими именами) | Да, при закрытой 1С |
| Реестр кластера и серверный кэш | C:\Program Files\1cv8\srvinfo\reg_1541\<GUID базы> | Только папки snccntx*, при остановленной службе |
| Временные файлы рабочих процессов сервера | %TEMP% учётной записи службы 1С | Да, при остановленной службе |
В развёрнутом виде %LOCALAPPDATA% — это C:\Users\<имя>\AppData\Local, а %APPDATA% — C:\Users\<имя>\AppData\Roaming.
Каталог srvinfo может лежать и в другом месте. Его задают при установке сервера. Точный путь виден в свойствах службы «Агент сервера 1С:Предприятия 8.3» — в строке запуска после ключа -d.
Как открыть каталог временных файлов 1С вручную
Папка AppData скрыта, поэтому через Проводник «пешком» до неё не добраться. Быстрее так:
- Закройте 1С, если хотите что-то удалять. Для просмотра закрывать не нужно.
- Нажмите
Win+R. - Введите
%LOCALAPPDATA%\1C\1cv8и нажмите Enter. - Для второго каталога повторите с
%APPDATA%\1C\1cv8, для рабочих файлов — с%TEMP%.
Внутри 1cv8 вы увидите папки с длинными именами вида 3f2a9c1e-7b4d-4c3a-9e1f-0a5b6c7d8e9f. Каждая такая папка — кэш одной информационной базы.
Как понять, какая папка относится к какой базе
Имя папки совпадает с идентификатором базы в списке баз. Сопоставить их можно за минуту:
- Откройте файл
%APPDATA%\1C\1CEStart\ibases.v8iБлокнотом. - Найдите блок нужной базы: он начинается с названия в квадратных скобках.
- В строке
ID=указан тот самый GUID. Папка с таким именем — кэш этой базы.
Это пригодится, когда «глючит» одна база, а сбрасывать кэш остальным не хочется.
Файл ibases.v8i только читайте. Случайная правка сломает список баз в окне запуска.
Как получить каталог временных файлов программно
Разработчику путь к временной папке нужен для выгрузок, обработки файлов и обмена. В языке 1С для этого есть функция КаталогВременныхФайлов(). Она возвращает строку с путём к временному каталогу того компьютера, на котором выполняется код.
Главная ловушка — контекст. На клиенте функция вернёт папку пользователя, на сервере — папку учётной записи, под которой работает служба 1С. Это два разных компьютера в клиент-серверном варианте.
&НаКлиенте
Процедура ПоказатьКаталоги(Команда)
Сообщить("Клиент: " + КаталогВременныхФайлов());
ПоказатьКаталогНаСервере();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПоказатьКаталогНаСервере()
Сообщить("Сервер: " + КаталогВременныхФайлов());
КонецПроцедуры
Для конкретного файла удобнее функция ПолучитьИмяВременногоФайла(). Она сразу даёт уникальное имя во временном каталоге, и не нужно склеивать путь вручную:
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
// ... работа с файлом ...
УдалитьФайлы(ИмяФайла);
Не рассчитывайте, что платформа уберёт файл сама. Если не вызвать УдалитьФайлы(), файл останется в %TEMP% навсегда. Именно так на серверах копятся гигабайты выгрузок.
В веб-клиенте синхронная КаталогВременныхФайлов() на клиенте недоступна. Там используют асинхронный вариант НачатьПолучениеКаталогаВременныхФайлов(), и для работы с файлами должно быть установлено расширение работы с файлами.
Очистка временных файлов 1С без потери настроек
Очистка кэша решает много странных проблем: старые формы после обновления, ошибки при открытии конкретной формы, «пустые» команды в меню. Способов три — от самого мягкого к полному.
| Способ | Когда подходит | Что затрагивает |
|---|---|---|
Параметр /ClearCache | Проблема в одной базе | Кэш только этой базы |
| Удаление папки GUID | Параметр не помог | Кэш и локальные настройки одной базы |
Очистка всей папки 1cv8 | Проблемы во многих базах, мало места | Кэш всех баз пользователя |
Способ 1. Параметр запуска /ClearCache
- В окне запуска 1С выделите базу и нажмите
Изменить. - Пройдите мастер до последнего шага.
- В поле дополнительных параметров запуска впишите
/ClearCache. - Нажмите
Готовои запустите базу.
Платформа очистит кэш при старте. После успешного запуска параметр лучше убрать: иначе база при каждом входе будет загружать конфигурацию заново и открываться медленнее.
Способ 2. Удаление кэша одной базы
Закройте все окна 1С. Определите GUID базы по ibases.v8i, как описано выше. Удалите папки с этим именем в %LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8. При следующем входе платформа создаст их заново.
Способ 3. Полная очистка
Удалите все папки с GUID-именами в обоих каталогах 1cv8 и файлы v8_*.tmp в %TEMP%. Папку 1CEStart не трогайте — в ней список баз.
В клиент-серверной базе пользовательские настройки хранятся в самой базе, а не на компьютере. Очистка локального кэша их не сотрёт. В файловой базе настройки тоже лежат в файле базы, поэтому удаление кэша безопасно и там.
Файловая, серверная база и веб-клиент: где искать временные файлы
Файловая база
Клиент работает с базой напрямую, поэтому всё временное создаётся на компьютере пользователя: кэш в AppData, рабочие файлы в %TEMP%. В папке самой базы во время некоторых операций (тестирование, обновление) появляются служебные файлы, например 1Cv8tmp.1CD. Пока база открыта, их не трогайте. Файл 1Cv8.1CD — это сама база, его удалять нельзя ни при каких обстоятельствах.
Клиент-серверная база
Кэш конфигурации на клиенте остаётся в AppData. Но код, который выполняется на сервере, пишет временные файлы в каталог %TEMP% учётной записи службы. Для стандартной установки это профиль пользователя, от имени которого запущен «Агент сервера 1С:Предприятия 8.3».
Серверный сеансовый кэш лежит в srvinfo\reg_1541\<GUID базы> в папках snccntx*. Его чистят, когда сервер упорно показывает старые данные после обновления или сбоя.
Чтобы очистить серверный кэш, нужно остановить службу агента сервера. Все сеансы всех баз на этом сервере оборвутся. Делайте это вне рабочего времени и предупредите пользователей. Удаляйте только папки snccntx*, остальное содержимое reg_1541 — это реестр кластера.
Веб-клиент и терминальный сервер
В веб-клиенте временные файлы на стороне пользователя создаёт браузер и расширение работы с файлами. Основная нагрузка ложится на сервер 1С и веб-сервер.
На терминальном сервере у каждого пользователя свой профиль, а значит, свой кэш 1cv8. При 30 пользователях и 5 базах это 150 копий кэша. Отсюда частая жалоба «кончилось место на C: у терминала».
Проблемы с временными файлами и их решения
Автоматическая очистка временных файлов по расписанию
Ручная чистка на 20 компьютерах быстро надоедает. Её можно поручить простому bat-файлу. Скрипт ниже проверяет, что 1С закрыта, и удаляет только GUID-папки кэша и временные файлы платформы:
@echo off
tasklist /FI "IMAGENAME eq 1cv8.exe" | find /I "1cv8.exe" >nul && exit /b
tasklist /FI "IMAGENAME eq 1cv8c.exe" | find /I "1cv8c.exe" >nul && exit /b
for /d %%D in ("%LOCALAPPDATA%\1C\1cv8\*-*-*-*-*") do rd /s /q "%%D"
for /d %%D in ("%APPDATA%\1C\1cv8\*-*-*-*-*") do rd /s /q "%%D"
del /q "%TEMP%\v8_*.tmp" 2>nul
Маска *-*-*-*-* отбирает только папки с GUID-именами. Служебные файлы в корне 1cv8 и папка 1CEStart останутся на месте.
Запускать скрипт удобнее всего при входе пользователя в Windows, пока 1С ещё не открыта:
schtasks /create /tn "Clear1CCache" /tr "C:\Scripts\clear1c.bat" /sc onlogon
Для домена то же самое делают через логон-скрипт групповой политики.
Не ставьте очистку кэша на каждый вход, если базы большие. Первый запуск после очистки идёт дольше: платформа заново загружает конфигурацию. Раз в неделю или раз в месяц обычно достаточно.
Серверную очистку автоматизируют отдельно: остановка службы, удаление snccntx*, запуск службы. Такое задание ставят на ночь, когда в базах никто не работает
и не выполняются регламентные задания.
Как перенести каталог временных файлов 1С на другой диск
Отдельной настройки «где хранить кэш» в окне запуска нет. Работают два приёма.
Перенос %TEMP%
Рабочие временные файлы 1С идут туда, куда указывают переменные среды TEMP и TMP. Изменить их можно в Параметры системы → Дополнительно → Переменные среды. Укажите, например, D:\Temp для обеих переменных пользователя.
Учтите: переменная общая. Вместе с 1С туда начнут писать и другие программы. Для сервера 1С меняют переменные той учётной записи, под которой работает служба, и перезапускают службу — с обрывом сеансов.
Перенос кэша через символьную ссылку
Кэш в AppData переносят приёмом, который знает каждый администратор терминальных серверов:
- Закройте 1С.
- Перенесите папку
%LOCALAPPDATA%\1C\1cv8на новый диск, например вD:\1CCache\Иванов. - Откройте командную строку и создайте точку соединения на старом месте:
mklink /J "%LOCALAPPDATA%\1C\1cv8" "D:\1CCache\Иванов"
Платформа продолжит обращаться к привычному пути, а данные физически окажутся на диске D:. Для каждого пользователя нужна своя целевая папка: общий кэш на несколько профилей приведёт к конфликтам.