Выносим кэш платформы 1С с системного диска: три рабочих способа

· 10 мин

Содержание

Перенести кэш 1С 8.3 на другой диск надёжнее всего через точку соединения (junction): закрываете 1С, переносите папку %LOCALAPPDATA%\1C\1cv8 на диск D: и создаёте на старом месте ссылку командой mklink /J. Платформа продолжает писать «к себе», а данные физически лежат на другом диске. Отдельного параметра «каталог кэша» в настройках платформы нет, поэтому все способы работают на уровне Windows.

Перенос освобождает место на системном диске и ускоряет работу, если новый диск быстрее старого, например кэш уезжает с HDD на SSD или NVMe. Если же переносить с SSD на медленный HDD, запуск баз станет заметно дольше.

Что лежит в кэше 1С 8.3 и почему он столько весит

У каждого пользователя Windows есть два каталога 1С. В них платформа хранит данные отдельно по каждой информационной базе, в подпапках с именами вида a1b2c3d4-... (GUID базы).

КаталогЧто внутриМожно переносить
%LOCALAPPDATA%\1C\1cv8кэш конфигурации: метаданные, модули, формы каждой базыда, это основная цель
%APPDATA%\1C\1cv8локальные настройки пользователя по базам, каталог шаблонов tmpltsда, но аккуратнее
%APPDATA%\1C\1CEStartсписок баз ibases.v8i, настройки стартера 1cestart.cfgне трогать

%LOCALAPPDATA% обычно раскрывается в C:\Users\Имя\AppData\Local, %APPDATA% — в C:\Users\Имя\AppData\Roaming. Вставьте любую из этих строк в адресную строку Проводника, и он откроет нужную папку.

Почему кэш разрастается:

  • 📦 на каждую базу из списка заводится своя папка, а у бухгалтера их бывает 10–20: рабочие, копии, демо;
  • 🔄 после обновления конфигурации платформа кэширует новую версию, а старые папки баз, удалённых из списка, остаются навсегда;
  • 👥 на терминальном сервере всё это умножается на число пользователей;
  • 🧩 в tmplts копятся шаблоны и обновления конфигураций, каждый релиз — сотни мегабайт.

На одну типовую базу вроде БП 3.0 кэш занимает от сотен мегабайт до нескольких гигабайт. Проверить точный размер просто: откройте свойства папки %LOCALAPPDATA%\1C\1cv8.

Подготовка к переносу каталога кэша

Перед переносом соберите четыре вещи.

  1. Целевой диск. Локальный, с файловой системой NTFS. Сетевая папка не подойдёт: точки соединения работают только с локальными томами, а кэш по сети замедлит каждый запуск.
  2. Свободное место. Не меньше текущего объёма кэша плюс запас в 2–3 раза на рост.
  3. Окно без пользователей. Все сеансы 1С на компьютере должны быть закрыты. Проверьте в диспетчере задач, что нет процессов 1cv8.exe, 1cv8c.exe и 1cv8s.exe.
  4. Список баз. Скопируйте файл %APPDATA%\1C\1CEStart\ibases.v8i в надёжное место. Перенос его не затрагивает, но копия пригодится, если что-то пойдёт не так.

Кэш — это не данные базы. Проводки, документы и справочники хранятся в самой информационной базе (файл 1Cv8.1CD или SQL-сервер). Даже если кэш потеряется, платформа соберёт его заново при следующем входе. Первый запуск займёт чуть больше времени, и только.

Создайте на новом диске папку, например D:\1CCache. Короткий путь без пробелов и кириллицы избавит от проблем в командах.

Способ 1. Перенос кэша через переменные среды

Платформа строит путь к кэшу от пользовательских каталогов Windows: %LOCALAPPDATA% и %APPDATA%. Отсюда соблазн поменять значения этих переменных в окне «Переменные среды».

Делать это глобально не стоит:

  • ❌ папки AppData используют все программы: браузеры, почта, мессенджеры. Сменив переменную, вы переселите их все или сломаете часть из них;
  • ❌ Windows берёт расположение этих папок из профиля пользователя, а не только из переменной окружения. Правка в окне «Переменные среды» может вообще не дать эффекта для программ, которые спрашивают путь у системы.

Рабочий вариант — переопределить переменную только для процесса 1С. Тогда остальные программы ничего не заметят. Делается это через командный файл, о нём в следующем способе.

Если вы всё же правили системные переменные APPDATA или LOCALAPPDATA и после этого перестали запускаться программы, верните исходные значения и перезайдите в Windows.

Способ 2. Ярлык запуска 1С через bat-файл

У 1cv8.exe и стартера 1cestart.exe нет ключа командной строки, который задаёт каталог кэша. Ярлык помогает иначе: он запускает командный файл, а тот меняет переменную только для 1С.

  1. Создайте файл D:\1CCache\start1c.bat с таким содержимым:
@echo off
set "LOCALAPPDATA=D:\1CCache\%USERNAME%\Local"
if not exist "%LOCALAPPDATA%" mkdir "%LOCALAPPDATA%"
start "" "C:\Program Files\1cv8\common\1cestart.exe"
  1. Проверьте путь к 1cestart.exe. Для 32-разрядной платформы он обычно лежит в C:\Program Files (x86)\1cv8\common.
  2. Создайте на рабочем столе ярлык на этот bat-файл. В свойствах ярлыка задайте Окно: Свёрнутое в значок, чтобы чёрное окно не мелькало.
  3. Запустите 1С через новый ярлык и войдите в любую базу.
  4. Загляните в D:\1CCache\%USERNAME%\Local\1C\1cv8.

Проверка обязательна. Если в шаге 5 появились папки с GUID, платформа взяла новый путь. Если папка пуста, а кэш продолжает расти на C:, ваша сборка платформы берёт путь у системы мимо переменной. В этом случае переходите к способу 3, он не зависит от того, как программа ищет каталог.

Минусы способа:

  • 🔗 пользователь должен запускать 1С только этим ярлыком. Открыл базу из меню «Пуск» — кэш снова пишется на C:;
  • 🔁 при автообновлении платформы путь в bat-файле может устареть, если вы указали конкретную версию вместо 1cestart.exe.

Тот же ярлык удобно использовать для принудительной очистки. Ключ /ClearCache при запуске конкретной базы сбрасывает её кэш:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "D:\Base\Buh" /ClearCache

Способ 3. Перенос кэша 1С на другой диск через точку соединения

Это основной способ. Точка соединения (junction) — служебная папка NTFS, которая ведёт в другой каталог. Платформа видит обычный путь %LOCALAPPDATA%\1C\1cv8 и не знает, что данные лежат на D:. Права администратора для mklink /J не нужны, если пользователь владеет обеими папками.

  1. Закройте все сеансы 1С (см. подготовку).
  2. Откройте командную строку от имени текущего пользователя: Win+R → cmd.
  3. Перенесите содержимое кэша на новый диск:
robocopy "%LOCALAPPDATA%\1C\1cv8" "D:\1CCache\%USERNAME%\1cv8" /E /MOVE /R:1 /W:1
  1. Убедитесь, что исходная папка исчезла. Если она осталась, значит, какой-то файл был занят: закройте процесс и повторите команду.
  2. Создайте ссылку на старом месте:
mklink /J "%LOCALAPPDATA%\1C\1cv8" "D:\1CCache\%USERNAME%\1cv8"
  1. Запустите 1С, войдите в базу и проверьте, что в D:\1CCache\%USERNAME%\1cv8 меняется дата изменения папок.

В Проводнике папка-ссылка на C: отображается со стрелкой на значке. Её «размер» на диске C: нулевой.

Не создавайте ссылку, пока исходная папка существует: mklink откажется с сообщением «Невозможно создать файл, так как он уже существует». И не удаляйте папку-ссылку через Shift+Delete с подтверждением «удалить содержимое» — удаляйте её командой rmdir "%LOCALAPPDATA%\1C\1cv8", тогда данные на D: останутся целы.

Каталог шаблонов конфигураций

Папку tmplts переносить ссылкой не нужно: у стартера для неё есть штатная настройка. В окне запуска 1С нажмите Настройка... и в поле каталогов шаблонов конфигураций и обновлений укажите, например, D:\1CTemplates. Значение сохраняется в 1cestart.cfg строкой вида:

ConfigurationTemplatesLocation=D:\1CTemplates

Старые шаблоны скопируйте в новую папку вручную или удалите, если обновления больше не нужны.

Сравнение способов

СпособКогда подходитРиски
Глобальная переменная средыпочти никогдаломает другие программы, может не сработать
bat-ярлыкодин пользователь, быстрая проверкакэш снова на C:, если запустить 1С мимо ярлыка
Точка соединениярабочий вариант для любых ПК и серверовнужно закрыть 1С на время переноса
Настройка шаблонов в стартеретолько для tmpltsминимальные

Очистка и обслуживание кэша после переноса

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

Что можно удалять без последствий:

  • 🗑️ папки с GUID в %LOCALAPPDATA%\1C\1cv8 — при входе в базу платформа создаст их заново;
  • 🗑️ старые шаблоны в tmplts, если вы не собираетесь создавать базы из них или обновлять конфигурации этими релизами.

Что удалять не нужно:

  • 🚫 %APPDATA%\1C\1CEStart — пропадёт список баз;
  • 🚫 папки в %APPDATA%\1C\1cv8 без особой причины: там локальные настройки пользователя по базам, после удаления часть настроек форм и окон придётся выставлять заново.

Как найти папку конкретной базы среди GUID: откройте ibases.v8i в Блокноте. У каждой базы есть строка ID=... — это и есть имя её папки кэша.

Регламент на практике:

  1. Раз в квартал, а также после крупного обновления конфигурации, удаляйте папки кэша при закрытой 1С.
  2. После удаления базы из списка сразу удаляйте её папку — сама она не исчезнет.
  3. Если после обновления в базе странно ведут себя формы или «не видно» новых реквизитов, сначала запустите её с ключом /ClearCache.
Диагностика: выберите симптом

Кэш 1С на терминальном сервере и в RDP

На терминальном сервере проблема острее: 30 пользователей с 10 базами каждый легко занимают десятки гигабайт на системном диске. Логика та же, но действовать нужно для каждого профиля.

Ссылка для каждого пользователя при входе

Сценарий входа (через групповую политику или задачу планировщика при входе пользователя) создаёт ссылку, если её ещё нет:

@echo off
set "TARGET=D:\1CCache\%USERNAME%\1cv8"
if not exist "%TARGET%" mkdir "%TARGET%"
if not exist "%LOCALAPPDATA%\1C" mkdir "%LOCALAPPDATA%\1C"
if not exist "%LOCALAPPDATA%\1C\1cv8" mklink /J "%LOCALAPPDATA%\1C\1cv8" "%TARGET%"

Сценарий не трогает пользователей, у которых папка 1cv8 уже есть. Для них кэш придётся перенести вручную, как в способе 3, в часы без работы. Предупредите их заранее: открытые сеансы 1С на время переноса нужно закрыть.

Права на D:\1CCache настройте так, чтобы пользователь видел только свою подпапку. Иначе один сотрудник сможет удалить кэш другого.

Перемещаемые профили и диски профилей

  • %APPDATA% (Roaming) копируется вместе с перемещаемым профилем, %LOCALAPPDATA% — нет. Поэтому основной кэш в Local не раздувает профиль, а tmplts в Roaming раздувает. Вынесите шаблоны через настройку стартера в общую локальную папку.
  • Не перенаправляйте AppData в сетевую папку ради 1С. Каждый запуск базы станет медленнее.

Кэш сервера 1С (srvinfo)

В клиент-серверном варианте есть и серверный каталог srvinfo: реестр кластера, служебные файлы и сеансовые данные. Его тоже выносят на быстрый диск.

  1. Предупредите пользователей: остановка службы обрывает все сеансы всех баз кластера. Делайте это вне рабочего времени.
  2. Остановите службу агента сервера 1С в services.msc.
  3. Скопируйте папку srvinfo на новый диск целиком, например в D:\srvinfo.
  4. В редакторе реестра откройте HKLM\SYSTEM\CurrentControlSet\Services\<имя службы>. В параметре ImagePath замените путь после ключа -d на новый.
  5. Дайте учётной записи, от которой работает служба, полный доступ к D:\srvinfo.
  6. Запустите службу и проверьте в консоли администрирования, что кластер и базы на месте.

Старую папку srvinfo удаляйте только после нескольких дней спокойной работы.

Частые ошибки при переносе и как их избежать

  • Копирование вместо переноса. Скопировали папку на D:, а оригинал оставили. Ссылка не создаётся, место не освободилось. Используйте robocopy /MOVE.
  • Перенос при открытой 1С. Часть файлов занята, robocopy их пропускает, папка остаётся. Закрывайте все процессы платформы, в том числе фоновые 1cv8c.exe у других сеансов того же пользователя.
  • Символическая ссылка mklink /D вместо /J. Для неё нужны права администратора или режим разработчика, а на серверах её поведение зависит от политик. Для локальных дисков достаточно /J.
  • Перенос 1CEStart. Список баз и настройки стартера весят килобайты. Выигрыша нет, а риск потерять список баз есть.
  • Кэш на съёмном диске. Флешку или внешний диск отключили — ссылка ведёт в никуда, 1С не может создать кэш. Только постоянный внутренний диск.

Частые вопросы

Можно ли вынести кэш 1С в RAM-диск?
Можно через ту же ссылку, кэш не содержит данных базы. Но после перезагрузки RAM-диск пуст, и первый вход в каждую базу будет долгим. Имеет смысл только при большом объёме памяти.
Нужно ли переносить кэш, если базы на сервере 1С?
Да, клиентский кэш конфигурации создаётся и в клиент-серверном варианте. Серверный каталог srvinfo — отдельная тема, его переносят на стороне сервера.
Сработает ли перенос после обновления платформы?
Да. Ссылка и настройка шаблонов не зависят от версии платформы. Путь в bat-файле проверьте, если он указывает на конкретную версию.
Как вернуть кэш обратно на диск C?
Закройте 1С, удалите ссылку командой rmdir, затем перенесите папку обратно через robocopy /MOVE. Или просто удалите ссылку: платформа создаст новый кэш на C при входе.
Повлияет ли перенос на лицензии 1С?
Нет. Программные лицензии лежат в отдельном каталоге licenses и кэшем не являются, переносить их не нужно.