Ошибка «Файл базы данных поврежден»: проверка chdbfl, тестирование и восстановление

· 10 мин

Содержание

Сообщение Файл базы данных поврежден означает, что платформа 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. Запишите точный текст сообщения. Кроме Файл базы данных поврежден, рядом часто встречаются Ошибка формата потока, Нарушение целостности структуры конфигурации или Ошибка при выполнении операции с информационной базой. Первое и третье указывают на файл данных, второе — скорее на конфигурацию.
  2. Проверьте, открывается ли конфигуратор. Если конфигуратор запускается, а режим «1С:Предприятие» нет, шансы на исправление высокие.
  3. Посмотрите размер файла 1Cv8.1CD. Нулевой или подозрительно маленький размер (например, 0 КБ вместо 2 ГБ) означает, что данных в файле фактически нет и чинить нечего: нужна резервная копия.
  4. Проверьте, где лежат резервные копии: выгрузки .dt, архивы папки базы, теневые копии Windows («Предыдущие версии» в свойствах папки), копии облачного хранилища.
  5. Проверьте диск. Свободное место — не меньше двойного размера базы. Для поиска сбойных секторов запустите chkdsk на разделе с базой (для системного раздела проверка пройдёт при перезагрузке).

Ниже — короткая схема, по которой удобно выбрать путь.

Диагностика: выберите симптом

Если ошибка только у одного пользователя

Когда остальные работают нормально, база почти наверняка цела. Повреждён кеш конфигурации на конкретном компьютере. Его можно очистить, запустив 1С с параметром /ClearCache, или удалить папки кеша в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8 при закрытой 1С. Папки с длинными именами-идентификаторами создадутся заново при следующем входе.

Проверка и ремонт утилитой chdbfl.exe

chdbfl.exe — штатная утилита платформы для физической проверки файловой базы. Она проверяет внутреннюю структуру 1Cv8.1CD и умеет исправлять найденные ошибки. Конфигуратор для её работы не нужен, поэтому она помогает даже тогда, когда база вообще не запускается.

Перед запуском сделайте копию всей папки базы. Исправление может удалить нечитаемые записи, и без копии их уже не вернуть.

Порядок работы

  1. Убедитесь, что базу закрыли все пользователи. Проверить это можно по отсутствию файла блокировки 1Cv8.1CL в папке базы или по тому, что файл 1Cv8.1CD удаётся переименовать.
  2. Скопируйте папку базы в отдельное место, например D:\backup\buh_copy.
  3. Откройте каталог установленной платформы: C:\Program Files\1cv8\<номер версии>\bin\ (для 32-битной платформы — C:\Program Files (x86)\1cv8\...). Берите утилиту той же версии платформы, на которой работает база.
  4. Запустите chdbfl.exe.
  5. В поле имени файла укажите путь к 1Cv8.1CD.
  6. Сначала запустите проверку без флажка исправления ошибок — так вы увидите, сколько проблем и какого рода.
  7. Затем установите флажок «Исправлять обнаруженные ошибки» и запустите ещё раз.
  8. Дождитесь окончания. На базе в несколько гигабайт это может занять от десятков минут до нескольких часов — не прерывайте процесс.
  9. Откройте базу в конфигураторе и выполните тестирование (следующий раздел).

Если 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

  1. Создайте новую пустую информационную базу (без конфигурации) в списке баз.
  2. Откройте её в конфигураторе.
  3. Выберите Администрирование → Загрузить информационную базу... и укажите файл .dt.
  4. После загрузки проверьте последние документы и учтите, что всё введённое после даты выгрузки придётся внести заново.

Архив папки базы

Если копировалась папка с 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, предупреждение при заполнении раздела.
  • 🧹 Регулярное «Тестирование и исправление» раз в месяц-квартал с реиндексацией и сжатием — это заодно уменьшает размер файла.

Автоматические резервные копии

Самая надёжная страховка — копии по расписанию, которые реально проверяются. Варианты для файловой базы:

  1. Встроенное резервное копирование в разделе Администрирование → Обслуживание: задайте расписание, каталог (лучше на другом диске) и число хранимых копий.
  2. Скрипт по планировщику 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 — проверьте, что получилось после первого запуска.

  1. Для серверной базы — резервное копирование средствами СУБД (план обслуживания в MS SQL Server, pg_dump по расписанию для PostgreSQL). Оно работает без отключения пользователей.
Резервное копирование настроено правильно, если
Выполнено: 0 / 5

Частые вопросы

Можно ли запускать chdbfl.exe, пока пользователи работают в базе?
Нет. Утилита требует, чтобы файл не был открыт никем. Если база занята, проверка не запустится или даст ложные результаты.
Подходит ли chdbfl.exe для серверной базы?
Нет, она работает только с файлом 1Cv8.1CD. Серверную базу проверяют средствами СУБД и режимом «Тестирование и исправление» в конфигураторе.
Почему после исправления база стала меньше по размеру?
При исправлении и сжатии удаляются пустые и нечитаемые страницы. Небольшое уменьшение — норма; если файл уменьшился в разы, сверьте данные с резервной копией.
Сколько времени идёт проверка базы на 10 ГБ?
Зависит от диска: на SSD — обычно до часа, на медленном HDD или сетевом диске — несколько часов. Прерывать процесс нельзя.
Поможет ли выгрузка в .dt и загрузка обратно?
Иногда да: при выгрузке-загрузке база пересобирается заново. Но если повреждённые записи не читаются, выгрузка прервётся с ошибкой — тогда сначала chdbfl.exe и тестирование.