Очистка кэша 1С через батник, код и перезапуск сервера
Содержание
Чтобы очистить кэш
1С без мышки и Проводника, закройте все клиенты и удалите папки кэша скриптом: rmdir /s /q "%LOCALAPPDATA%\1C\1cv8" и rmdir /s /q "%APPDATA%\1C\1cv8". На следующем запуске платформа заново скачает конфигурацию с сервера и пересоберёт временные файлы. Это и есть программная очистка: один батник вместо ручного обхода папок у каждого пользователя.
Когда клиентов десятки, ручная чистка не вариант. Ниже — рабочие способы почистить кэш кодом, из командной строки, на стороне сервера 1С и централизованно через групповые политики. Для каждого скажу, что именно удаляется и чем это грозит сеансам.
Где лежит кэш 1С и что он вообще хранит
Кэш 1С — это локальная копия конфигурации и служебные временные файлы, которые платформа держит на диске, чтобы не тянуть всё заново с сервера при каждом входе. Отсюда и глюки: конфигурацию на сервере обновили, а клиент показывает старые формы и отчёты, потому что взял их из своего кэша.
Со временем кэш разрастается: каждое обновление конфигурации добавляет новую порцию скомпилированных форм и модулей, а старые не всегда вычищаются. У активно работающей базы папка кэша легко набирает сотни мегабайт. На дисках SSD небольшого объёма это заметно.
Хранится кэш по двум адресам каждого пользователя Windows:
- 📁
%LOCALAPPDATA%\1C\1cv8\— основной кэш: скомпилированные формы, модули, временные файлы. - 📁
%APPDATA%\1C\1cv8\— часть служебных данных подключения.
Внутри каждая база лежит в отдельной подпапке с длинным именем из шестнадцатеричных символов (хэш строки подключения). Чтобы сбросить кэш
одной базы, удаляют её подпапку. Чтобы сбросить всё — удаляют папку 1cv8 целиком.
Список баз в окне запуска при этом не пропадёт. Он хранится отдельно — в %APPDATA%\1C\1CEStart\ibases.v8i, и папку 1cv8 не трогает.
1C\1cv8 в Local и Roaming. Сервер не трогайте.1Cv8.1CD: файлы 1Cv8.1CL (журнал) и *.1CL/.pfl — временные.Батник для очистки клиентского кэша
Самый ходовой способ программной очистки — командный файл .bat. Он закрывает клиентов и удаляет кэш одним двойным кликом:
@echo off
rem Закрыть все клиенты 1С (несохранённые данные пропадут!)
taskkill /f /im 1cv8.exe 2>nul
taskkill /f /im 1cv8c.exe 2>nul
rem Удалить кэш текущего пользователя
rmdir /s /q "%LOCALAPPDATA%\1C\1cv8"
rmdir /s /q "%APPDATA%\1C\1cv8"
echo Кэш 1С очищен.
pause
Что здесь происходит по шагам:
taskkillпринудительно завершает процессы толстого (1cv8.exe) и тонкого (1cv8c.exe) клиента. Без этого файлы кэша заблокированы и не удалятся.rmdir /s /qрекурсивно и без лишних вопросов сносит обе папки кэша.- При следующем запуске 1С создаст их заново и заново закэширует конфигурацию.
taskkill /f обрывает работу без сохранения. Перед запуском батника предупредите пользователя, чтобы он закрыл документы — всё несохранённое в открытых формах будет потеряно.
Если нужно почистить кэш только одной базы, а не всех, удаляйте не всю папку 1cv8, а конкретную подпапку с хэшем. Узнать её можно, отсортировав подпапки по дате изменения: активная база «подсвечивается» свежим временем после запуска.
Тем, кто предпочитает PowerShell, тот же результат даёт короткий скрипт .ps1:
Get-Process 1cv8, 1cv8c -ErrorAction SilentlyContinue | Stop-Process -Force
Remove-Item "$env:LOCALAPPDATA\1C\1cv8" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:APPDATA\1C\1cv8" -Recurse -Force -ErrorAction SilentlyContinue
Логика та же: завершить процессы клиента, затем снести обе папки кэша. Ключ -ErrorAction SilentlyContinue нужен, чтобы скрипт не падал, когда папки уже нет или процесс не запущен.
Для платформы 8.2 кэш лежал в папках 1cv82 вместо 1cv8. Если на машине остались и старая, и новая версии, в батник добавляют строки удаления обеих папок — иначе хвост от 8.2 так и будет занимать место.
Очистка из командной строки и планировщика
Тот же батник не обязательно запускать руками. Из командной строки его можно вызвать разово, а через Планировщик заданий Windows — по расписанию или по событию.
Разовый вызов из cmd или PowerShell — просто путь к файлу:
C:\scripts\clear-1c-cache.bat
Чтобы почистить кэш и сразу запустить базу
, допишите в конец батника строку запуска клиента через 1cv8.exe с нужными параметрами подключения (ключ /S для серверной базы или /F для файловой). Конкретные ключи запуска смотрите в документации по платформе — набор зависит от версии и способа подключения.
Отдельного документированного ключа platform-клиента «почистить кэш и выйти» в 1С 8.3 нет: надёжный программный путь — именно удаление папок скриптом, а не волшебный параметр запуска. Если встретите в чужих инструкциях недокументированные флаги 1cv8, проверяйте их на тестовой машине, а не на рабочей.
Через Планировщик заданий (Пуск → Планировщик заданий → Создать задачу) батник вешают, например, на событие входа пользователя или на ночное время. Так кэш обновляется сам, без обращений в поддержку.
Сброс кэша средствами встроенного языка 1С
Полностью снести платформенный кэш из работающего сеанса нельзя: файлы заняты самим процессом 1С. Но часть кэшей встроенный язык сбрасывает на лету.
Главный инструмент — глобальная функция повторного использования значений:
ОбновитьПовторноИспользуемыеЗначения();
Она сбрасывает кэш «повторно используемых значений» — результатов функций общих модулей с повторным использованием возврата (на время сеанса или вызова). Именно из-за этого кэша после смены настроек в справочнике программа иногда продолжает «видеть» старое значение. Вызов функции заставляет её пересчитаться.
Временные файлы, которые ваш код сам создавал, удаляются штатно:
УдалитьФайлы(КаталогВременныхФайлов(), "*.tmp");
Для глубокой очистки (снос папок кэша платформы) из 1С запускают внешний батник через ЗапуститьПриложение — но сработает он корректно только после закрытия самого клиента. Поэтому в быту программную чистку кэша делают скриптом ОС, а не кодом 1С.
В клиент-серверной базе у ОбновитьПовторноИспользуемыеЗначения() есть серверная сторона: если повторно используемое значение рассчитывается с повторным использованием «на время сеанса», вызов сбрасывает его и на сервере для текущего сеанса. Это удобно, когда администратор поменял настройку в регистре сведений, а код продолжает отдавать прежний результат из кэша.
Что встроенный язык НЕ делает: он не перекомпилирует формы и модули из свежей конфигурации вместо закэшированных. Для этого клиент нужно перезапустить с чистым кэшем. Поэтому код годится для сброса логических кэшей данных, а не для лечения «старого интерфейса после обновления» — там работает только очистка папок.
Очистка кэша на сервере 1С:Предприятие
В клиент-серверном варианте, кроме клиентского, есть серверный кэш. Он лежит в каталоге srvinfo (путь задаётся параметром -d службы агента, по умолчанию внутри папки установки сервера) и хранит данные сеансов, временные файлы и серверную копию конфигурации.
Чистый и безопасный способ сбросить серверный кэш — перезапуск службы агента сервера:
- Остановите службу
1C:Enterprise 8.3 Server Agent(в оснасткеservices.msc). - Запустите её снова.
При старте менеджер и рабочие процессы (rmngr, rphost) пересобирают свои кэши. Отдельно лазить в файлы srvinfo в большинстве случаев не нужно.
Более щадящий вариант — не трогать всю службу, а перезапустить только рабочий процесс кластера. В консоли администрирования серверов откройте ветку кластера, раздел с рабочими процессами и перезапустите нужный rphost. Серверный кэш этого процесса пересоберётся, а рабочие процессы других баз останутся живы. Сеансы, привязанные к перезапущенному процессу, всё равно прервутся, поэтому правило про нерабочее время действует и здесь.
Серверная копия конфигурации в кэше обновляется сама, когда вы применяете обновление к базе в Конфигураторе. Если после обновления на сервере всё равно живёт старое поведение, обычно помогает не чистка файлов, а именно перезапуск рабочих процессов или службы — он заставляет сервер перечитать конфигурацию заново.
Перезапуск службы рвёт все активные сеансы пользователей и останавливает регламентные задания по всем базам кластера. Делайте это строго в нерабочее время и предупредив пользователей.
Если дошло до ручного удаления файлов в srvinfo (например, после сбоя), работайте только при остановленной службе и сделав копию каталога. Удаляйте служебные файлы данных сеансов внутри папки конкретной информационной базы, но не трогайте папки reg_<порт> и каталоги кластера целиком — потеряете регистрацию кластера и список баз. Пересоздавать кластер «для чистоты» не нужно.
Отдельного пункта меню «очистить кэш» в консоли администрирования серверов нет: управление идёт через остановку и запуск службы и рабочих процессов.
Массовая очистка кэша через групповые политики
Когда клиентов десятки и сотни, обходить машины бессмысленно. В доменной сети тот же батник раздают через групповую политику как сценарий входа.
Порядок настройки в редакторе управления групповыми политиками (gpmc.msc):
- Создайте или откройте объект GPO, привязанный к нужному подразделению с пользователями.
- Перейдите в
Конфигурация пользователя → Политики → Конфигурация Windows → Сценарии (вход/выход из системы) → Вход в систему. - Добавьте батник очистки кэша и положите его в сетевую папку, доступную всем на чтение.
- Обновите политику на клиентах командой
gpupdate /forceили дождитесь планового применения.
Теперь кэш будет чиститься при каждом входе пользователя в систему — проблема «старых форм после обновления» снимается централизованно.
Чистить кэш при КАЖДОМ входе не всегда нужно: первый запуск 1С после этого медленнее, потому что конфигурация кэшируется заново. Если обновления редки, разумнее держать батник в сетевой папке и запускать его точечно, когда реально обновили конфигурацию.
Через групповые политики можно раздать не только сценарий входа, но и запланированное задание (Конфигурация компьютера → Настройка → Параметры панели управления → Назначенные задания) — так очистка отвяжется от момента входа.
Частые ошибки при очистке кэша 1С
Чаще всего кэш «не чистится» или чистка выходит боком по одним и тем же причинам.
- 🔴 Удаляют кэш при запущенной 1С. Файлы заблокированы процессом — папка удаляется частично, а база потом стартует с битым кэшем и ошибками. Сначала закройте все клиенты (
taskkillв батнике делает это сам). - 🔴 Путают кэш с базой. Очистка кэша НИКОГДА не удаляет учётные данные. Документы, справочники, проводки лежат в базе (
1Cv8.1CDили СУБД), а не в кэше. Бояться за данные не нужно. - 🔴 Перезапускают службу сервера в рабочее время. Обрываются сеансы всех баз кластера, слетают регламентные задания. Только в окно обслуживания.
- 🔴 Сносят лишние папки на сервере. Удаление каталогов кластера в
srvinfoломает регистрацию и список баз. Трогают только служебные файлы внутри папки конкретной базы и только при остановленной службе. - 🔴 Ждут, что код 1С снесёт платформенный кэш.
ОбновитьПовторноИспользуемыеЗначения()сбрасывает только кэш повторно используемых значений, а не скомпилированные формы. Для полного сброса нужен перезапуск клиента с чистыми папками.
Отдельно про настройки: при удалении кэша могут сброситься локальные настройки открытия форм и позиции окон на этой машине. Сами пользовательские настройки, которые хранятся в базе (отборы списков, варианты отчётов), остаются на месте.
Частые вопросы
Пропадут ли данные или список баз при очистке кэша?
ibases.v8i в папке 1CEStart. Папки кэша 1cv8 их не содержат, удаление безопасно для данных.Как часто нужно чистить кэш?
Нужно ли чистить кэш на сервере, если база файловая?
1Cv8.1CD.Почему после обновления конфигурации «слетают» формы — это кэш?
Можно ли очистить кэш, не закрывая 1С?
ОбновитьПовторноИспользуемыеЗначения(). Для полной очистки клиент придётся перезапустить.