Ошибка «Файл базы данных поврежден»: проверка chdbfl, тестирование и восстановление
Содержание
Сообщение Файл базы данных поврежден означает, что платформа 1С не смогла прочитать внутреннюю структуру файла 1Cv8.1CD: страницы данных, индексы или служебные таблицы записаны с ошибкой. Первое, что нужно сделать, — закрыть базу у всех пользователей, скопировать папку базы целиком, а затем проверить копию утилитой chdbfl.exe из каталога bin установленной платформы.
Если утилита не помогла, следующий шаг — «Тестирование и исправление» в конфигураторе, а в крайнем случае — восстановление из резервной копии. Ошибка относится к платформе 1С:Предприятие 8.3 и одинаково проявляется в Бухгалтерии, ЗУП, УТ и других конфигурациях: путь лечения от конфигурации не зависит.
Откуда берётся повреждение файла базы 1С
Файловая база — это один большой файл 1Cv8.1CD, в который 1С постоянно пишет мелкими страницами. Если запись страницы прервать на середине, файл остаётся в несогласованном состоянии. Отсюда и типовые причины.
- ⚡ Отключение питания или «жёсткая» перезагрузка компьютера, когда база была открыта и шла запись: проведение документов, закрытие месяца , обновление.
- 🔪 Снятие процесса
1cv8.exeчерез диспетчер задач во время длительной операции. - 🌐 Работа с базой по сети через общую папку. Обрыв Wi-Fi, засыпание ноутбука, кеширование файлов на стороне Windows (механизм oplocks в SMB) — частый источник повреждений, когда в базе сидят несколько человек.
- 🛡️ Антивирус, который проверяет
1Cv8.1CDпри каждом обращении или помещает его в карантин. - 💾 Сбойный диск: битые секторы, деградация SSD, переполнение раздела во время записи.
- 📋 Копирование открытой базы: файл скопировали, пока кто-то работал, и теперь «рабочая» оказалась копия с половиной записанных страниц.
- ☁️ Синхронизация облачными клиентами (Яндекс Диск, OneDrive и подобные), которые подменяют файл, пока он открыт.
Если ошибка появилась сразу после переноса базы на флешку или в облачную папку, сначала проверьте исходный файл на старом месте. Нередко повреждена только копия.
Как понять масштаб проблемы до ремонта
Прежде чем запускать исправление, выясните, что именно сломано и есть ли запасной вариант. От этого зависит, какой способ выбрать.
- Запишите точный текст сообщения. Кроме
Файл базы данных поврежден, рядом часто встречаютсяОшибка формата потока,Нарушение целостности структуры конфигурацииилиОшибка при выполнении операции с информационной базой. Первое и третье указывают на файл данных, второе — скорее на конфигурацию. - Проверьте, открывается ли конфигуратор. Если конфигуратор запускается, а режим «1С:Предприятие» нет, шансы на исправление высокие.
- Посмотрите размер файла
1Cv8.1CD. Нулевой или подозрительно маленький размер (например, 0 КБ вместо 2 ГБ) означает, что данных в файле фактически нет и чинить нечего: нужна резервная копия. - Проверьте, где лежат резервные копии: выгрузки
.dt, архивы папки базы, теневые копии Windows («Предыдущие версии» в свойствах папки), копии облачного хранилища. - Проверьте диск. Свободное место — не меньше двойного размера базы. Для поиска сбойных секторов запустите
chkdskна разделе с базой (для системного раздела проверка пройдёт при перезагрузке).
Ниже — короткая схема, по которой удобно выбрать путь.
Если ошибка только у одного пользователя
Когда остальные работают нормально, база почти наверняка цела. Повреждён кеш конфигурации на конкретном компьютере. Его можно очистить, запустив 1С с параметром /ClearCache, или удалить папки кеша в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8 при закрытой 1С. Папки с длинными именами-идентификаторами создадутся заново при следующем входе.
Проверка и ремонт утилитой chdbfl.exe
chdbfl.exe — штатная утилита платформы для физической проверки файловой базы. Она проверяет внутреннюю структуру 1Cv8.1CD и умеет исправлять найденные ошибки. Конфигуратор для её работы не нужен, поэтому она помогает даже тогда, когда база вообще не запускается.
Перед запуском сделайте копию всей папки базы. Исправление может удалить нечитаемые записи, и без копии их уже не вернуть.
Порядок работы
- Убедитесь, что базу закрыли все пользователи. Проверить это можно по отсутствию файла блокировки
1Cv8.1CLв папке базы или по тому, что файл1Cv8.1CDудаётся переименовать. - Скопируйте папку базы в отдельное место, например
D:\backup\buh_copy. - Откройте каталог установленной платформы:
C:\Program Files\1cv8\<номер версии>\bin\(для 32-битной платформы —C:\Program Files (x86)\1cv8\...). Берите утилиту той же версии платформы, на которой работает база. - Запустите
chdbfl.exe. - В поле имени файла укажите путь к
1Cv8.1CD. - Сначала запустите проверку без флажка исправления ошибок — так вы увидите, сколько проблем и какого рода.
- Затем установите флажок «Исправлять обнаруженные ошибки» и запустите ещё раз.
- Дождитесь окончания. На базе в несколько гигабайт это может занять от десятков минут до нескольких часов — не прерывайте процесс.
- Откройте базу в конфигураторе и выполните тестирование (следующий раздел).
Если chdbfl.exe после исправления сообщает, что удалены записи из таблиц данных, часть документов или справочников могла пропасть. Сверьте ключевые остатки с последним отчётом или копией, прежде чем продолжать работу.
Если утилита сама падает
Бывает, что chdbfl.exe вылетает или останавливается на одном и том же месте. Что можно попробовать:
- 🔄 запустить утилиту из более новой версии платформы (файл совместим, но держите копию);
- 💽 перенести копию базы на другой, заведомо исправный диск и повторить;
- 🧹 освободить место на диске: утилите нужен запас под временные данные.
Если ничего не помогло, база повреждена слишком сильно для штатных средств. Остаётся резервная копия или специализированный ремонт файла.
Тестирование и исправление в конфигураторе
После chdbfl.exe файл физически читается, но логика данных может быть нарушена: битые ссылки, рассогласованные итоги регистров. Это лечит режим «Тестирование и исправление». Он требует монопольного доступа к базе — все пользователи должны выйти.
Путь: запустите базу в режиме «Конфигуратор» → меню Администрирование → Тестирование и исправление....
Какие флажки ставить
| Проверка | Что делает | Когда ставить |
|---|---|---|
| Реиндексация таблиц информационной базы | Перестраивает индексы | Всегда при ошибке повреждения |
| Проверка логической целостности | Ищет несогласованные служебные данные | Всегда |
| Проверка ссылочной целостности | Ищет ссылки на несуществующие объекты | Всегда |
| Пересчёт итогов | Пересчитывает итоги регистров | Если «поехали» остатки |
| Сжатие таблиц информационной базы | Убирает пустые страницы, уменьшает файл | После успешного ремонта |
| Реструктуризация таблиц | Пересоздаёт таблицы целиком | Если предыдущие шаги не помогли |
Режим «Тестирование и исправление» предлагает два варианта: «Только тестирование» и «Тестирование и исправление». Начните с первого — увидите объём проблем, ничего не меняя.
Для битых ссылок выберите действие. Безопаснее всего «Создавать объекты»: программа создаст пустые элементы-заглушки, на которые ссылаются документы, и потом их можно заполнить вручную. Вариант с очисткой ссылок или удалением объектов необратим.
Запуск из командной строки
Тестирование можно запустить без интерфейса — удобно на ночь или для базы, которая открывается с трудом:
"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals -BadRefCreate /Out "D:\Bases\check.log"
Результат проверки окажется в файле, указанном в /Out. Ключи -IBCompression (сжатие) и -Rebuild (реструктуризация) добавляйте отдельным запуском, когда основные ошибки уже исправлены.
Восстановление базы 1С из резервной копии
Если ремонт не помог или после него пропали важные данные, база восстанавливается из копии. Вариантов три.
Выгрузка .dt
- Создайте новую пустую информационную базу (без конфигурации) в списке баз.
- Откройте её в конфигураторе.
- Выберите
Администрирование→Загрузить информационную базу...и укажите файл.dt. - После загрузки проверьте последние документы и учтите, что всё введённое после даты выгрузки придётся внести заново.
Архив папки базы
Если копировалась папка с 1Cv8.1CD, просто распакуйте её в новое место и добавьте базу в список. Важно, чтобы файл копировали при закрытой базе — иначе копия может оказаться повреждённой тем же образом.
Резервные копии из самой программы
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) для файловой базы есть раздел Администрирование → Обслуживание → Резервное копирование и восстановление. Там видно, куда программа складывала копии и когда сделана последняя. Оттуда же можно запустить восстановление.
Не выбрасывайте повреждённую базу после восстановления из копии. Если chdbfl.exe всё-таки её откроет, документы за «потерянный» период можно перенести обработкой выгрузки-загрузки данных, а не вбивать вручную.
Сравнение способов
| Способ | Когда подходит | Риски |
|---|---|---|
| chdbfl.exe | База не открывается или ошибка физическая | Возможна потеря нечитаемых записей |
| Тестирование и исправление | Конфигуратор открывается | Необратимы варианты с удалением объектов |
| Загрузка .dt | Есть свежая выгрузка | Потеря данных после даты выгрузки |
| Архив папки базы | Копия делалась при закрытой базе | Копия открытой базы может быть битой |
Ошибка повреждения базы в клиент-серверном варианте
В серверной базе нет файла 1Cv8.1CD: данные хранит СУБД (MS SQL Server, PostgreSQL). Поэтому chdbfl.exe здесь бесполезна, а лечение идёт в два слоя.
Проверка на стороне СУБД
- 🗄️ MS SQL Server — команда
DBCC CHECKDBдля базы, обычно через SQL Server Management Studio. Она покажет физические повреждения страниц. - 🐘 PostgreSQL — встроенной полной проверки нет. Практический способ — сделать дамп
pg_dumpв отдельный файл: если дамп падает на конкретной таблице, она и повреждена. Для проверки индексов есть расширениеamcheck.
-- MS SQL Server: только проверка, без исправления
DBCC CHECKDB ('buh_base') WITH NO_INFOMSGS;
Параметры исправления DBCC CHECKDB с потерей данных запускайте только после полной копии базы и лучше с участием администратора СУБД.
Проверка на стороне 1С
После того как СУБД исправна, запускайте «Тестирование и исправление» из конфигуратора — так же, как для файловой базы. Монопольный режим нужен и здесь.
Повреждённые служебные файлы кластера
Иногда ошибка приходит не из данных базы, а из служебных файлов сервера 1С: сеансовых данных и кеша кластера в каталоге srvinfo. Признак — сбой возникает у всех пользователей сразу, а проверка СУБД чистая. Лечится очисткой сеансовых данных (папки snccntx* внутри каталога кластера).
Для этого придётся остановить службу «Агент сервера 1С:Предприятия». Все сеансы пользователей оборвутся, несохранённые данные пропадут. Делайте это вне рабочего времени и предупредите людей заранее. Остальные файлы в srvinfo, включая реестр кластера, не удаляйте.
Как не допустить повторного повреждения
Ремонт без устранения причины даст повтор через неделю-месяц. Минимальный набор мер:
- 🔋 ИБП для компьютера или сервера, где лежит база, с корректным завершением работы при пропадании питания.
- 🌐 Перевод сетевой файловой базы на веб-публикацию или сервер 1С, если в ней регулярно работают 3–5 человек и больше. Файловая база по общей папке на таком количестве пользователей ломается заметно чаще.
- 🛡️ Исключение папки базы из проверки антивирусом — и для расширения
.1CD, и для каталога целиком. - ☁️ Никаких облачных клиентов синхронизации на папке с рабочей базой.
- 💾 Мониторинг диска: SMART для SSD и HDD, предупреждение при заполнении раздела.
- 🧹 Регулярное «Тестирование и исправление» раз в месяц-квартал с реиндексацией и сжатием — это заодно уменьшает размер файла.
Автоматические резервные копии
Самая надёжная страховка — копии по расписанию, которые реально проверяются. Варианты для файловой базы:
- Встроенное резервное копирование
в разделе
Администрирование→Обслуживание: задайте расписание, каталог (лучше на другом диске) и число хранимых копий. - Скрипт по планировщику Windows, который ночью выгружает
.dt:
"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /DumpIB "E:\Backup\buh_%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%.dt" /Out "E:\Backup\dump.log"
Выгрузка .dt требует, чтобы в базе не было пользователей, поэтому ставьте задание на ночь. Формат даты в имени файла зависит от региональных настроек Windows — проверьте, что получилось после первого запуска.
- Для серверной базы — резервное копирование средствами СУБД (план обслуживания в MS SQL Server,
pg_dumpпо расписанию для PostgreSQL). Оно работает без отключения пользователей.