При работе с файловым вариантом информационной базы 1С:Предприятие 8 многие администраторы и разработчики замечают, что в каталоге с основным файлом базы 1cv8.1cd создается множество служебных объектов. Это файлы блокировок, временные таблицы транзакций и объемные папки журналов. Часто возникает задача вынести эти объекты на другой диск (например, на быстрый NVMe SSD или RAM-диск) для повышения производительности или экономии места. В этой статье мы подробно разберем, как устроены эти файлы и какими методами можно изменить их расположение.
Прежде чем приступать к переносу, проанализируем, что именно создает 1С в каталоге базы. Важно понимать назначение каждого объекта, чтобы не нарушить целостность данных при манипуляциях:
Важный момент: Платформа 1С «запрограммирована» искать эти файлы строго в том же каталоге, где находится файл 1cv8.1cd. В штатных настройках конфигуратора или в параметрах запуска нет опции «ПутьКВременнымФайламБазы». Поэтому нам придется использовать механизмы операционной системы.
Это самый эффективный и надежный способ «обмануть» платформу 1С. Мы заставим систему думать, что папка или файл находятся в каталоге базы, хотя фактически они будут физически размещены на другом диске. Рассмотрим работу с утилитой mklink, встроенной в Windows.
Разберем создание связи для папки 1cv8temp. Предположим, наша база лежит в C:\Bases\Trade, а мы хотим перенести временные файлы на диск R: (RAM-диск).
1cv8temp из каталога базы.
mklink /J "C:\Bases\Trade\1cv8temp" "R:\1C_Temp\1cv8temp"
После этого в каталоге базы появится значок папки со стрелкой. Для 1С этот путь будет абсолютно прозрачным: программа будет обращаться по старому адресу, а Windows мгновенно перенаправит поток данных на диск R:.
Аналогичным образом мы можем поступить с папкой журнала регистрации 1Cv8Log, которая часто является «узким местом» по дисковому вводу-выводу:
mklink /J "C:\Bases\Trade\1Cv8Log" "D:\FastSSD\1Cv8Log"
С отдельными файлами (не папками) ситуация сложнее. Junction Points работают только для директорий. Для файла 1cv8tmp нам понадобится жесткая ссылка (Hard Link) или символическая ссылка на файл. Выясним нюанс: Hard Link работает только в пределах одного логического раздела. Если вы хотите перенести файл на другой физический диск, используйте флаг /H не получится, нужно использовать /D (для каталога) или просто создавать ссылку на файл.
Рассмотрим пример создания символической ссылки на файл:
mklink "C:\Bases\Trade\1cv8tmp" "R:\TempFiles\1cv8tmp"
Обратите внимание: Для работы символических ссылок на файлы пользователю могут потребоваться специальные права в политиках безопасности Windows («Создание символических ссылок»), поэтому метод с Junction для папок считается более стабильным и простым в настройке.
Проанализируем самый очевидный совет: если вам нужно ускорить работу всех временных файлов, проще всего перенести всю папку с базой данных на более быстрый накопитель. В списке баз 1С достаточно будет просто изменить путь к информационной базе.
Если же ваша цель — оставить тяжелую базу на медленном HDD, а «быстрые» временные файлы вынести на SSD, то возвращайтесь к Решению 1.
Существует заблуждение, что параметры в conf.cfg или системные переменные TEMP и TMP решают задачу переноса файлов внутри папки базы. Проясним ситуацию:
TemporaryFilesDir в файле conf.cfg платформы влияет только на пользовательские временные файлы (те, что обычно лежат в AppData\Local\Temp).TEMP/TMP также отвечают за общие временные файлы ОС и кэш пользователя.1cv8.1cd программным кодом платформы.Многие стремятся вынести временные файлы на RAM-диск для достижения максимальной скорости. Рассмотрим, почему это может быть опасно:
Файл 1cv8tmp является частью механизма обеспечения транзакционной целостности. Если в момент записи данных в базу произойдет сбой питания или «синий экран», а ваш RAM-диск очистится, база данных не сможет корректно завершить транзакцию при следующем запуске. Это прямой путь к логическому разрушению структуры файла .1CD.
Рекомендация: Если вы используете RAM-диск, обеспечьте наличие надежного ИБП (UPS) и настройте регулярное архивирование. Для большинства задач современный NVMe SSD обеспечивает достаточную скорость без рисков, присущих энергозависимой памяти.
Часто перенос файлов затевается из-за медленной работы базы. Проанализируем еще одну причину «тормозов» — антивирусное сканирование. Файлы 1cv8tmp и 1cv8.1cl обновляются сотни раз в секунду. Если антивирус проверяет каждую операцию записи, производительность падает на 30–50%.
Выясним, что нужно добавить в исключения (White List) антивируса:
*.1cd, *.1cl, *.1cv8tmp.1cv8.exe, 1cv8c.exe, 1cv8s.exe.Если база находится на сетевом диске (SMB), перенос временных файлов через симлинки на локальный диск клиента невозможен, так как эти файлы должны быть видны всем участникам сети для координации блокировок. В таком случае единственным надежным способом ускорения будет переход на клиент-серверный вариант или публикация базы через Веб-сервер (Apache/IIS).
Мы рассмотрели способы управления служебными файлами файловой 1С. Подведем итог: штатных средств для этого нет, но механизм Junction Points в Windows позволяет эффективно распределять нагрузку по разным дискам. Используйте этот инструмент осторожно, всегда имея под рукой свежую резервную копию базы данных.