Как исправить ошибку СУБД и восстановить базу 1С при появлении файла _$NEW$_.1CD?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе администрирования файловых баз данных «1С:Предприятие» системные администраторы и разработчики иногда сталкиваются с ситуацией, когда база данных перестает запускаться, а в каталоге с базой обнаруживается странный файл с именем _$NEW$_.1CD. Попытка просто переименовать этот файл в стандартное имя 1Cv8.1CD, как правило, ни к чему хорошему не приводит: платформа выдает критическую ошибку СУБД, и запуск системы становится невозможным. В этой статье мы подробно разберем, почему возникает эта проблема, что на самом деле представляет собой файл _$NEW$_.1CD, и как правильно восстановить работоспособность информационной базы без потери данных.

Что такое файл _$NEW$_.1CD и механизм его появления

Для того чтобы понять суть проблемы, проанализируем внутренние алгоритмы работы платформы «1С:Предприятие 8». Начиная с современных релизов ветки 8.3, при выполнении потенциально опасных или тяжелых дисковых операций с файловой базой данных, платформа использует механизм транзакционной безопасности и временного буферизованного сохранения.

Файл с расширением _$NEW$_.1CD — это временный служебный файл, который создается в каталоге информационной базы в следующих случаях:

  1. Тестирование и исправление физической целостности базы данных. Когда мы запускаем внешнюю специализированную утилиту chdbfl.exe (которая находится в каталоге bin установленной платформы 1С) и устанавливаем флаг «Исправлять обнаруженные ошибки», утилита не производит изменения напрямую в исходном файле 1Cv8.1CD. Вместо этого она создает новый чистый файл _$NEW$_.1CD, последовательно считывает данные из старого файла, исправляет поврежденные страницы и записывает их в новый временный файл.
  2. Реструктуризация таблиц информационной базы. Этот процесс происходит во время обновления конфигурации (например, при добавлении новых реквизитов, изменении типов данных или обновлении на новый релиз через Конфигуратор), а также при выполнении стандартной процедуры «Тестирование и исправление» (ТиИ) с включенной опцией реструктуризации таблиц. Платформа создает временную копию структуры таблиц под именем _$NEW$_.1CD, переносит туда актуальные данные, преобразуя их под новый формат конфигурации.

В нормальном режиме работы, как только процесс исправления или реструктуризации успешно завершается, платформа 1С или утилита chdbfl.exe выполняет следующие действия в автоматическом режиме:

Если же вы зашли в каталог базы данных и обнаружили там файл _$NEW$_.1CD, это однозначно свидетельствует о том, что процесс реструктуризации или лечения базы был аварийно прерван на полпути. В результате временный файл остался недозаписанным, в нем нарушена логическая структура заголовков таблиц СУБД, а старый файл базы данных либо заблокирован, либо поврежден.

Выясняем причины аварийного завершения процесса

Рассмотрим подробнее факторы, которые приводят к прерыванию записи и появлению "зависшего" файла _$NEW$_.1CD:

Почему простое переименование файла приводит к ошибке СУБД?

Когда неопытный пользователь видит в папке свежий файл _$NEW$_.1CD, созданный буквально несколько минут назад, у него возникает логичное (на первый взгляд) желание переименовать его в 1Cv8.1CD и запустить 1С. Однако при запуске программа выдает критическое окно с сообщением "Ошибка СУБД: Файл базы данных поврежден".

Проанализируем ситуацию с технической точки зрения. Поскольку запись во временный файл была прервана аварийно, СУБД 1С не успела сформировать корректный индексный слой таблиц, не закрыла транзакции записи и не обновила системные метаданные в заголовке файла. По сути, этот файл является "битым" на физическом уровне. Платформа 1С при обращении к такому файлу считывает некорректные смещения страниц данных и сразу блокирует работу, чтобы не допустить дальнейшего разрушения структуры.

Важное правило: никогда не пытайтесь работать в файле _$NEW$_.1CD напрямую и не заменяйте им основную базу без предварительной диагностики!

Разберем по шагам алгоритм восстановления базы данных

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

Шаг 1. Создание резервной копии всех файлов

Прежде чем производить какие-либо манипуляции в каталоге базы данных, создайте резервную копию всей папки. Даже если вам кажется, что файлы повреждены, они все еще содержат бесценные данные, которые можно будет извлечь специализированными средствами.

Скопируйте все содержимое каталога (включая оригинальный 1Cv8.1CD, временный _$NEW$_.1CD и логи) на другой физический диск или в облачное хранилище.

Шаг 2. Освобождение дискового пространства

Проверьте накопитель, на котором расположена папка с базой данных (а также системный диск C:, куда записываются временные файлы операционной системы AppData/Local/Temp). Убедитесь, что свободного места достаточно.

Рекомендация: если размер вашего файла базы составляет 20 Гб, обеспечьте не менее 50–60 Гб свободного пространства на диске перед запуском процедур исправления.

Шаг 3. Очистка каталога от мусора и зависших сессий

Удалите из рабочей папки базы данных все лишние файлы блокировок и временные объекты, которые могли остаться после аварийного завершения работы платформы. В каталоге должны остаться только резервная копия оригинального файла 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

Шаг 4. Повторный запуск утилиты проверки chdbfl.exe

Теперь необходимо запустить тестирование базы заново, но уже в стабильных условиях (на локальном диске с достаточным объемом памяти). Разберем этот процесс по шагам:

  1. Перейдите в каталог установленной платформы 1С. Обычно он находится по пути: C:\Program Files\1cv8\8.3.XX.XXXX\bin\ (где вместо XX.XXXX будет указан номер вашей текущей сборки платформы).
  2. Найдите и запустите от имени администратора файл chdbfl.exe.
  3. В появившемся окне программы в поле "Имя файла БД" укажите путь к вашему оригинальному (поврежденному) файлу 1Cv8.1CD, который вы предварительно очистили на Шаге 3.
  4. Обязательно установите флаг «Исправлять обнаруженные ошибки».
  5. Нажмите кнопку «Выполнить» и дождитесь окончания процесса.

Поскольку теперь на диске достаточно места, и процессу ничего не мешает, утилита успешно завершит проверку, перенесет все валидные данные в новый временный файл и сама автоматически переименует его в рабочую базу. На экране вы увидите отчет о количестве исправленных ошибок и поврежденных таблиц.

Шаг 5. Проверка базы в режиме Конфигуратора

После успешного завершения работы утилиты chdbfl.exe, запустите информационную базу в режиме Конфигуратора. Для окончательного наведения порядка в структуре СУБД выполните следующие действия:

  1. В главном меню Конфигуратора выберите пункт «Администрирование» — «Тестирование и исправление...».
  2. Установите флаги напротив пунктов:
    • «Реиндексация таблиц информационной базы»
    • «Проверка системной информации»
    • «Проверка логической целостности информационной базы»
  3. В блоке выбора режима установите маркер в положение «Тестирование и исправление».
  4. Нажмите кнопку «Выполнить».

После прохождения всех тестов база данных будет полностью готова к повседневной эксплуатации пользователями.

Что делать, если восстановить базу не удалось?

Если повреждения исходного файла были слишком критическими, и утилита chdbfl.exe выдает ошибку о невозможности восстановления структуры, единственным надежным выходом будет восстановление базы из последней резервной копии (файла архива .dt или ранее сохраненного файла 1Cv8.1CD). Регулярно настраивайте автоматическое резервное копирование, чтобы избежать потери важных учетных данных при подобных аппаратных сбоях.

← На главную