Каждый системный администратор и активный пользователь программных продуктов 1С рано или поздно сталкивается с проблемой нехватки свободного пространства на системном диске C:. Особенно остро эта проблема проявила себя, начиная с версии платформы 1С:Предприятие 8.3.12. После обновления пользователи начали замечать, что при запуске программы в их локальный профиль начинает активно записываться огромный объем временных данных. Это не только уменьшает свободное место на диске, но и напрямую снижает общую производительность операционной системы.
В этой статье мы подробно разберем, почему современные версии платформы 1С потребляют так много дискового пространства под кэш, и рассмотрим несколько эффективных практических способов переноса временных файлов и профиля пользователя 1С на другой диск (например, на более свободный диск D:).
С развитием платформы 1С:Предприятие и переходом прикладных решений на новые версии Библиотеки стандартных подсистем (БСП) механизмы взаимодействия программы с дисковой подсистемой существенно изменились. Рассмотрим ключевые факторы, которые вызывают лавинообразный рост папок AppData\Local\1C\1Cv8 и AppData\Roaming\1C\1Cv8:
.dll). Это компоненты для склонения фио, штрихкодирования, работы с торговым оборудованием, модули криптографии и электронного документооборота (ЭДО). Эти компоненты могут дублироваться для каждого сеанса работы, занимая сотни мегабайт.Ниже мы подробно разберем четыре практических метода решения этой проблемы.
Использование символьных ссылок (симлинков) — это наиболее надежный и прозрачный для операционной системы способ перенаправления данных. Мы заставим Windows думать, что файлы по-прежнему записываются в профиль пользователя на диске C:, хотя фактически они будут сохраняться на диске D:.
Рассмотрим по шагам правильный алгоритм переноса кэша с помощью команды mklink /j:
1cv8.exe, 1cv8c.exe или 1cestart.exe.C:\Users\Имя_Пользователя\AppData\Local\1C\1Cv81Cv8 в новое место на диске D:, например, в D:\1C_Cache\Local\1Cv8.C: в исходном каталоге C:\Users\Имя_Пользователя\AppData\Local\1C больше нет папки с именем 1Cv8. Если она осталась пустой — удалите ее вручную. Это критически важно, иначе команда создания ссылки выдаст ошибку.
mklink /j "C:\Users\Имя_Пользователя\AppData\Local\1C\1Cv8" "D:\1C_Cache\Local\1Cv8"
Соединение создано для.... Теперь на диске C: появится папка со значком ярлыка. При обращении к ней запись будет физически производиться на диск D:.C:\Users\Имя_Пользователя\AppData\Roaming\1C\1Cv8D:\1C_Cache\Roaming\1Cv8
Метод с использованием символьных ссылок требует прав локального администратора на компьютере, что далеко не всегда возможно в корпоративной среде. В этом случае мы можем прибегнуть к альтернативному решению — переопределению системных переменных окружения для конкретного процесса 1С с помощью командного файла запуска.
Мы создадим простой скрипт, который временно (только на время работы запущенной из него копии 1С) подменяет пути к папкам TEMP, TMP и профилю пользователя USERPROFILE.
Разберем пример создания такого файла:
D: целевую папку, например, D:\1C_WorkDir..txt на .cmd или .bat (например, run_1c.cmd).
@echo off
set TEMP=D:\1C_WorkDir\Temp
set TMP=D:\1C_WorkDir\Temp
set USERPROFILE=D:\1C_WorkDir\Profile
if not exist "D:\1C_WorkDir\Temp" mkdir "D:\1C_WorkDir\Temp"
if not exist "D:\1C_WorkDir\Profile" mkdir "D:\1C_WorkDir\Profile"
start "" "C:\Program Files\1cv8\common\1cestart.exe"
Как это работает: При запуске скрипта создается изолированная среда. Платформа 1С считывает измененные переменные окружения и начинает считать, что папка временных файлов и профиль пользователя находятся на диске D:. 1С самостоятельно создаст всю необходимую структуру подкаталогов и направит туда весь поток операций записи. При этом глобальные настройки операционной системы для других программ не изменятся, а запуск не потребует повышенных привилегий в системе.
В некоторых обсуждениях (например, в Сообщении 2 темы) упоминается использование конфигурационного файла location.cfg. Давайте проанализируем этот метод и разберем его ограничения.
Файл location.cfg позволяет указать платформе альтернативное место для хранения некоторых данных пользователя. Этот файл обычно размещается в каталоге установки платформы (в папке conf) и содержит параметр location, указывающий на целевой каталог.
Важное ограничение: Использование location.cfg решает проблему лишь частично. Этот параметр переопределяет расположение файлов индивидуальных настроек пользователя (таких как файлы интерфейса .pfl) и файлов программных лицензий 1С (.lic). Однако он не переносит временные файлы из системного каталога Temp, куда пишется основной объем «тяжелых» данных во время сеанса. Таким образом, использовать этот файл как единственное средство спасения диска C: нецелесообразно.
Если ваша рабочая станция или терминальный сервер обладают большим объемом оперативной памяти (от 16-32 ГБ и выше), вы можете совместить перенос кэша с колоссальным увеличением скорости работы 1С. Для этого применяется технология RAM-диска (создание виртуального диска прямо в оперативной памяти компьютера).
Проанализируем алгоритм реализации этого метода:
R:.Temp и кэш 1С на созданный диск R:.В чем преимущество данного подхода?
Во-первых, скорость чтения и записи в оперативную память в десятки раз превосходит показатели даже самых быстрых твердотельных накопителей (SSD NVMe), что дает огромный прирост к отзывчивости интерфейса 1С. Во-вторых, полностью исключается износ SSD-накопителя от постоянных циклов перезаписи временных файлов программы. В-третьих, при выключении или перезагрузке компьютера виртуальный RAM-диск полностью очищается, что навсегда решает проблему накопления «мусорного» кэша 1С.
Если возможности перенести кэш на другой физический накопитель нет, его необходимо периодически очищать. Однако делать это нужно аккуратно, чтобы не навредить пользователю.
При ручной или автоматизированной очистке категорически нельзя удалять папку 1C целиком. В ней хранятся важные конфигурационные файлы, список баз данных (файл ibases.v8i) и индивидуальные пользовательские настройки окон, таблиц и отчетов.
Безопасная очистка подразумевает удаление только тех подкаталогов в папках Local\1C\1Cv8 и Roaming\1C\1Cv8, имена которых представляют собой длинную шестнадцатеричную последовательность символов, разделенную дефисами — так называемые GUID-идентификаторы (например, 3b52d4e8-8a21-4f90-b18c-7c5ef93da012). Именно в этих папках с непонятными именами платформа хранит кэш метаданных конкретных баз, который можно безболезненно удалять — при следующем запуске базы 1С автоматически воссоздаст их заново.