Повреждение файла базы 1С: проверка, исправление и защита данных

· 10 мин

Содержание

Если файл базы 1С поврежден, сначала скопируйте всю папку базы целиком, а уже потом запускайте утилиту chdbfl.exe из каталога платформы. Не помогла — «Тестирование и исправление» в конфигураторе. Не помогло и это — восстановление из резервной копии или перенос данных через выгрузку в .dt.

Способы различаются риском. chdbfl.exe правит только внутреннюю структуру файла и почти ничего не трогает в данных. Тестирование в конфигураторе уже может удалить или «досоздать» объекты. Резервная копия надёжнее всего, но вы теряете всё, что ввели после её создания. Поэтому идите от безопасного к радикальному.

Сначала диагностика: что именно сломалось

Файловая база 1С 8.3 — это один файл 1Cv8.1CD в каталоге базы. Рядом лежит папка 1Cv8Log с журналом регистрации. Путь к каталогу видно в окне запуска 1С: выделите базу в списке, внизу окна отобразится строка вида File="D:\Base\Buh".

Типичные сообщения при повреждении:

  • 🔴 Файл базы данных поврежден
  • 🔴 Ошибка формата потока
  • 🔴 Нарушена целостность структуры конфигурации
  • 🔴 программа закрывается без сообщения при открытии определённого документа или отчёта

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

Быстрая локализация за 10 минут

  1. Запустите базу с параметром /ClearCache (в свойствах базы в окне запуска, поле «Дополнительные параметры запуска»). Ошибка пропала — дело было в кэше.
  2. Откройте базу под другим пользователем Windows или на другом компьютере. Если там всё работает, проблема в профиле пользователя.
  3. Проверьте, открывается ли конфигуратор. Конфигуратор запускается, а режим «1С:Предприятие» нет — повреждены скорее данные, чем структура файла.
  4. Посмотрите, на чём падает база: на любом действии или на конкретном документе, справочнике, отчёте. Точечный сбой — признак повреждения одной таблицы.
Диагностика: выберите симптом

Первое правило: копия до любых исправлений

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

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

Что именно копировать:

  • 📁 файл 1Cv8.1CD — сами данные;
  • 📁 папку 1Cv8Log — журнал регистрации, он пригодится, чтобы найти момент сбоя;
  • 📁 остальные файлы из каталога базы, если они там есть.

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

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

Как восстановить файл базы утилитой chdbfl.exe

chdbfl.exe входит в состав платформы и лежит в каталоге bin установленной версии, например:

C:\Program Files\1cv8\8.3.24.1548\bin\chdbfl.exe

Номер версии в пути у вас будет свой. Берите утилиту той же версии платформы, с которой работает база.

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

  1. Завершите все сеансы 1С с этой базой: и режим «1С:Предприятие», и конфигуратор. Утилита работает только с файлом, который никто не держит открытым.
  2. Запустите chdbfl.exe.
  3. В поле с именем файла укажите путь к 1Cv8.1CD.
  4. Сначала запустите проверку без галочки «Исправлять обнаруженные ошибки». Утилита покажет список проблем, ничего не меняя.
  5. Если ошибки найдены, поставьте галочку и запустите ещё раз.
  6. После завершения откройте базу и проверьте документы, на которых раньше был сбой.

На базе в 10–20 ГБ проверка идёт от нескольких минут до часа, в зависимости от диска. Не прерывайте её: остановка посреди записи способна добавить новых повреждений.

Сохраните текст, который выдала утилита. В нём видно, какие таблицы пострадали, — это пригодится, если позже придётся обращаться к специалисту.

Что chdbfl умеет и чего не умеет

УмеетНе умеет
Исправлять внутреннюю структуру файла 1Cv8.1CDВосстанавливать данные, которые физически потеряны
Работать, когда 1С вообще не запускаетсяИсправлять логические ошибки учёта
Обходиться без монопольного входа в конфигураторРаботать с клиент-серверными базами

Тестирование и исправление в конфигураторе

Если chdbfl.exe отработал, а ошибки остались, переходите к встроенной проверке. Она нужна, когда файл формально цел, но внутри есть битые ссылки, ошибки индексов или итогов.

Путь: откройте базу в конфигураторе, далее Администрирование → Тестирование и исправление. Для этого режима нужен монопольный доступ: все пользователи должны выйти из базы.

Какие проверки включать

  • 🔧 Реиндексация таблиц — перестраивает индексы. Безопасна, лечит медленный поиск и часть ошибок выборки.
  • 🔧 Проверка логической целостности — ищет несогласованные записи в таблицах.
  • 🔧 Проверка ссылочной целостности — находит ссылки на объекты, которых нет в базе.
  • 🔧 Пересчёт итогов — пересчитывает итоги регистров. Нужен, если отчёты показывают странные остатки.
  • 🔧 Сжатие таблиц — убирает пустое место в файле.

Режим и действия с битыми данными

Начните с режима «Только проверка». Он ничего не меняет и покажет масштаб проблемы. Потом включите «Тестирование и исправление» и выберите, что делать с найденным.

СитуацияВариантКогда выбиратьРиск
Ссылки на несуществующие объектыСоздавать объектыНужно сохранить документы, где есть такие ссылкиПоявятся пустые элементы-заглушки, их придётся заполнить
Ссылки на несуществующие объектыОчищать ссылкиСсылки заведомо мусорныеПоля в документах станут пустыми
Частичная потеря данных объектовУдалять объектыОбъект не восстановитьДокумент исчезнет вместе с движениями
ЛюбаяНе изменятьХотите только увидеть списокНет

Для бухгалтерской базы обычно выбирают «Создавать объекты». Так документы не теряют поля, а после проверки вы находите заглушки и вручную заполняете их.

Ту же проверку можно запустить без интерфейса, командной строкой. Это удобно, если база падает при открытии конфигуратора в обычном режиме:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Base\Buh" /N "Администратор" /P "" /IBCheckAndRepair -ReIndex -LogIntegrity -RecalcTotals /Out "D:\check_log.txt"

В файл check_log.txt попадёт протокол проверки. Если хотите сначала только посмотреть, добавьте ключ -TestOnly.

Резервная копия и выгрузка в DT

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

Восстановление из копии файла

Если у вас есть архив каталога базы, просто замените текущий 1Cv8.1CD файлом из архива. Повреждённый файл не удаляйте, переименуйте: из него, возможно, удастся вытащить свежие данные.

Восстановление из файла .dt

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

Пересборка базы через DT

Этот приём часто спасает базу, у которой после chdbfl.exe остались мелкие ошибки:

  1. В повреждённой базе выполните Администрирование → Выгрузить информационную базу.
  2. Загрузите полученный .dt в новую пустую базу.

При загрузке платформа записывает все таблицы заново, в чистый файл. Внутренний мусор и обрывки старой структуры в новый файл не переносятся.

Если выгрузка в .dt прерывается с ошибкой, это полезный сигнал: повреждена таблица, на которой она остановилась. Запустите тестирование и исправление, затем повторите выгрузку.

Когда данные спасти нельзя совсем, сохраните хотя бы конфигурацию: Конфигурация → Сохранить конфигурацию в файл. Файл .cf пригодится, если у вас доработанная конфигурация, а в копии данных она старее.

Почему повреждаются файлы баз 1С и как это предотвратить

Причину стоит найти, иначе через месяц всё повторится. Для этого посмотрите два журнала.

  • 📋 Журнал регистрации 1С (папка 1Cv8Log). Найдите последние записи перед сбоем: кто и что делал в эту минуту.
  • 📋 Журнал событий Windows, раздел «Система». Ищите ошибки дисков и файловой системы, внезапные выключения, отключение сетевого ресурса в то же время.

Частые причины

  • ⚡ Отключение питания или принудительная перезагрузка, когда база записывала данные.
  • 💽 Сбойные сектора на диске. Проверьте диск командой chkdsk D: /f и посмотрите SMART любой утилитой диагностики.
  • 🌐 Работа с базой по сети через общую папку при нестабильной сети или Wi-Fi. Обрыв соединения во время записи портит файл.
  • 🛡️ Антивирус проверяет 1Cv8.1CD в момент записи. Добавьте каталог баз в исключения.
  • ☁️ Облачная синхронизация (Яндекс.Диск, Dropbox и аналоги) копирует открытую базу. Держите базы вне синхронизируемых папок.
  • ✂️ Завершение процесса 1С через диспетчер задач во время проведения или обновления.

Профилактика

Защита файловой базы от повреждений
Выполнено: 0 / 7

Копию, которую ни разу не пробовали развернуть, считайте условной. Раз в квартал загрузите .dt в тестовую базу и откройте пару отчётов.

Клиент-серверная база: другой порядок действий

В клиент-серверном варианте данные лежат не в 1Cv8.1CD, а в СУБД: MS SQL Server или PostgreSQL. Утилита chdbfl.exe здесь не применяется.

Что делать

  1. Проверьте саму базу средствами СУБД. В MS SQL Server это команда DBCC CHECKDB:
DBCC CHECKDB ('buh_base') WITH NO_INFOMSGS;
  1. Если СУБД ошибок не нашла, запустите Администрирование → Тестирование и исправление в конфигураторе. Режим работает и для клиент-серверных баз.
  2. Если СУБД сообщает о повреждении страниц, восстанавливайте базу из резервной копии СУБД. Ремонт с потерей данных средствами СУБД применяют только когда копии нет, и это задача администратора СУБД.

Для PostgreSQL простой способ проверить, читаются ли все таблицы, — сделать полную копию через pg_dump. Если копирование падает на какой-то таблице, она и повреждена.

Повреждение кэша сервера, а не данных

Иногда ошибки вида Ошибка формата потока в клиент-серверном варианте вызывает испорченный сеансовый кэш кластера, а данные в СУБД целы. Тогда проверка СУБД ошибок не находит, а сбой есть у всех пользователей.

Чтобы очистить кэш кластера, нужно остановить службу сервера 1С. При этом оборвутся все сеансы всех баз на сервере, а несохранённые данные пользователей пропадут. Делайте это вне рабочего времени и предупредите пользователей заранее. Перед удалением файлов кэша скопируйте каталог служебных файлов кластера.

Когда пора звать специалиста

Самостоятельные попытки лучше остановить, если:

  • 🚩 диск физически неисправен: утилиты падают с ошибками чтения, SMART показывает переназначенные сектора;
  • 🚩 chdbfl.exe завершается аварийно или не меняет результат после нескольких запусков;
  • 🚩 выгрузка в .dt прерывается каждый раз на разных таблицах;
  • 🚩 резервной копии нет или она слишком старая, а терять период работы нельзя;
  • 🚩 тестирование и исправление предлагает удалить сотни документов.

Специалист по восстановлению данных снимает образ диска и работает с ним, а не с оригиналом. Для файла 1Cv8.1CD существуют сторонние утилиты, которые читают таблицы напрямую в обход платформы и вытаскивают уцелевшие записи. Эту работу лучше доверить тому, кто уже делал её.

Чтобы специалист быстрее разобрался, подготовьте:

  • копию повреждённого файла и папку 1Cv8Log;
  • точный текст ошибки и протокол chdbfl.exe;
  • версию платформы и конфигурации;
  • последнюю резервную копию, даже старую.

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

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

Можно ли работать в базе после chdbfl, если ошибки исправлены?
Можно, но сначала проверьте документы, на которых был сбой, и сформируйте оборотно-сальдовую ведомость. Если цифры совпадают с ожидаемыми, работайте дальше.
Почему после проверки в справочниках появились пустые элементы?
Это заглушки, которые платформа создала при варианте «Создавать объекты». Найдите их по пустому наименованию и заполните или замените на правильные.
Влияет ли размер файла базы на риск повреждения?
Сам размер нет. Но большой файл дольше записывается, и сбой питания или сети чаще застаёт его в момент записи.
Можно ли запускать chdbfl на копии, а не на рабочем файле?
Да, это лучший вариант. Проверьте и исправьте копию, убедитесь, что база открывается, и только потом подменяйте рабочий файл.
Нужно ли переустанавливать платформу при ошибке формата потока?
Обычно нет. Сначала очистите кэш и проверьте файл базы. Переустановка помогает только если повреждены файлы самой платформы.