В процессе администрирования файловых баз данных «1С:Предприятие» системные администраторы и разработчики иногда сталкиваются с ситуацией, когда база данных перестает запускаться, а в каталоге с базой обнаруживается странный файл с именем _$NEW$_.1CD. Попытка просто переименовать этот файл в стандартное имя 1Cv8.1CD, как правило, ни к чему хорошему не приводит: платформа выдает критическую ошибку СУБД, и запуск системы становится невозможным. В этой статье мы подробно разберем, почему возникает эта проблема, что на самом деле представляет собой файл _$NEW$_.1CD, и как правильно восстановить работоспособность информационной базы без потери данных.
Для того чтобы понять суть проблемы, проанализируем внутренние алгоритмы работы платформы «1С:Предприятие 8». Начиная с современных релизов ветки 8.3, при выполнении потенциально опасных или тяжелых дисковых операций с файловой базой данных, платформа использует механизм транзакционной безопасности и временного буферизованного сохранения.
Файл с расширением _$NEW$_.1CD — это временный служебный файл, который создается в каталоге информационной базы в следующих случаях:
chdbfl.exe (которая находится в каталоге bin установленной платформы 1С) и устанавливаем флаг «Исправлять обнаруженные ошибки», утилита не производит изменения напрямую в исходном файле 1Cv8.1CD. Вместо этого она создает новый чистый файл _$NEW$_.1CD, последовательно считывает данные из старого файла, исправляет поврежденные страницы и записывает их в новый временный файл._$NEW$_.1CD, переносит туда актуальные данные, преобразуя их под новый формат конфигурации.В нормальном режиме работы, как только процесс исправления или реструктуризации успешно завершается, платформа 1С или утилита chdbfl.exe выполняет следующие действия в автоматическом режиме:
1Cv8.1CD._$NEW$_.1CD в результирующий рабочий файл 1Cv8.1CD.Если же вы зашли в каталог базы данных и обнаружили там файл _$NEW$_.1CD, это однозначно свидетельствует о том, что процесс реструктуризации или лечения базы был аварийно прерван на полпути. В результате временный файл остался недозаписанным, в нем нарушена логическая структура заголовков таблиц СУБД, а старый файл базы данных либо заблокирован, либо поврежден.
Рассмотрим подробнее факторы, которые приводят к прерыванию записи и появлению "зависшего" файла _$NEW$_.1CD:
chdbfl.exe на накопителе компьютера должно быть свободное место, как минимум равное двум размерам исходной базы данных (а в некоторых случаях и трем). Если база данных весит 15 Гб, а на диске свободно всего 10 Гб, то в процессе записи файла _$NEW$_.1CD свободное место закончится, и операционная система принудительно прервет процесс записи с ошибкой СУБД.chdbfl.exe, которая интенсивно создает гигабайтный файл в системной или пользовательской директории, и заблокировать ее работу. Также при нехватке оперативной памяти Windows может аварийно завершить работу процесса 1С по триггеру Out of Memory.Когда неопытный пользователь видит в папке свежий файл _$NEW$_.1CD, созданный буквально несколько минут назад, у него возникает логичное (на первый взгляд) желание переименовать его в 1Cv8.1CD и запустить 1С. Однако при запуске программа выдает критическое окно с сообщением "Ошибка СУБД: Файл базы данных поврежден".
Проанализируем ситуацию с технической точки зрения. Поскольку запись во временный файл была прервана аварийно, СУБД 1С не успела сформировать корректный индексный слой таблиц, не закрыла транзакции записи и не обновила системные метаданные в заголовке файла. По сути, этот файл является "битым" на физическом уровне. Платформа 1С при обращении к такому файлу считывает некорректные смещения страниц данных и сразу блокирует работу, чтобы не допустить дальнейшего разрушения структуры.
Важное правило: никогда не пытайтесь работать в файле _$NEW$_.1CD напрямую и не заменяйте им основную базу без предварительной диагностики!
Если вы столкнулись с этой проблемой, не паникуйте. Последовательно выполните следующие шаги для минимизации рисков потери информации.
Прежде чем производить какие-либо манипуляции в каталоге базы данных, создайте резервную копию всей папки. Даже если вам кажется, что файлы повреждены, они все еще содержат бесценные данные, которые можно будет извлечь специализированными средствами.
Скопируйте все содержимое каталога (включая оригинальный 1Cv8.1CD, временный _$NEW$_.1CD и логи) на другой физический диск или в облачное хранилище.
Проверьте накопитель, на котором расположена папка с базой данных (а также системный диск C:, куда записываются временные файлы операционной системы AppData/Local/Temp). Убедитесь, что свободного места достаточно.
Рекомендация: если размер вашего файла базы составляет 20 Гб, обеспечьте не менее 50–60 Гб свободного пространства на диске перед запуском процедур исправления.
Удалите из рабочей папки базы данных все лишние файлы блокировок и временные объекты, которые могли остаться после аварийного завершения работы платформы. В каталоге должны остаться только резервная копия оригинального файла 1Cv8.1CD. Все файлы с расширениями *.1CL, *.lck, а также незавершенный файл _$NEW$_.1CD необходимо удалить, чтобы они не мешали повторному запуску утилиты.
Рассмотрим пример простого командного файла (скрипта .bat), который можно создать в блокноте для быстрой очистки папки от временных файлов блокировок 1С:
@echo off
echo Очистка временных файлов блокировок в каталоге базы 1С...
del /q /f "*.1CL"
del /q /f "*.lck"
del /q /f "_$NEW$_.1CD"
echo Очистка успешно завершена!
pause
Теперь необходимо запустить тестирование базы заново, но уже в стабильных условиях (на локальном диске с достаточным объемом памяти). Разберем этот процесс по шагам:
C:\Program Files\1cv8\8.3.XX.XXXX\bin\ (где вместо XX.XXXX будет указан номер вашей текущей сборки платформы).chdbfl.exe.1Cv8.1CD, который вы предварительно очистили на Шаге 3.Поскольку теперь на диске достаточно места, и процессу ничего не мешает, утилита успешно завершит проверку, перенесет все валидные данные в новый временный файл и сама автоматически переименует его в рабочую базу. На экране вы увидите отчет о количестве исправленных ошибок и поврежденных таблиц.
После успешного завершения работы утилиты chdbfl.exe, запустите информационную базу в режиме Конфигуратора. Для окончательного наведения порядка в структуре СУБД выполните следующие действия:
После прохождения всех тестов база данных будет полностью готова к повседневной эксплуатации пользователями.
Если повреждения исходного файла были слишком критическими, и утилита chdbfl.exe выдает ошибку о невозможности восстановления структуры, единственным надежным выходом будет восстановление базы из последней резервной копии (файла архива .dt или ранее сохраненного файла 1Cv8.1CD). Регулярно настраивайте автоматическое резервное копирование, чтобы избежать потери важных учетных данных при подобных аппаратных сбоях.