1С пишет «Файл базы данных поврежден»: лечим базу без потери данных

· 10 мин

Содержание

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

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

Подготовка: что проверить и что скопировать до лечения

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

Убедитесь, что база никем не занята

  1. Попросите всех пользователей выйти из программы.
  2. На компьютере, где лежит база, откройте Диспетчер задач и проверьте, нет ли процессов 1cv8.exe или 1cv8c.exe.
  3. Если база лежит в сетевой папке, проверьте открытые файлы на сервере: Управление компьютером → Общие папки → Открытые файлы. Там видно, кто держит 1Cv8.1CD.

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

Сделайте копию повреждённого файла

Скопируйте папку с базой целиком до любых действий. Не перемещайте, а именно копируйте: в папке, кроме 1Cv8.1CD, лежат журнал регистрации (1Cv8Log) и служебные файлы.

Копия нужна по двум причинам:

  • 🛟 если лечение пройдёт неудачно, у вас останется исходник для другой попытки;
  • 🔍 файл может понадобиться специалисту, который восстанавливает данные вручную.

Проверьте диск и свободное место

  • 💾 На диске с базой должно быть свободно не меньше двух объёмов файла 1Cv8.1CD. Утилиты и реиндексация создают временные копии таблиц.
  • 🧲 Запустите проверку диска: chkdsk D: /f (вместо D: — буква диска с базой). Если диск сыплет ошибками чтения, сначала перенесите копию базы на исправный носитель и лечите уже её.
  • 📄 Посмотрите размер файла. Файл размером 0 байт или в несколько килобайт лечить бесполезно — нужна резервная копия.

Найдите последнюю резервную копию

Узнайте, есть ли выгрузка .dt или копия 1Cv8.1CD за вчера или прошлую неделю. Если копия свежая, иногда быстрее восстановить её и перебить данные за день, чем часами лечить базу.

Лечение базы утилитой chdbfl

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

Где найти утилиту

Утилита лежит в каталоге установленной платформы:

C:\Program Files\1cv8\8.3.xx.xxxx\bin\chdbfl.exe

Вместо 8.3.xx.xxxx — номер вашей версии платформы. Если установлена 32-разрядная платформа на 64-разрядной Windows, ищите в C:\Program Files (x86)\1cv8\. Берите утилиту той же версии, на которой работает база.

Как запустить проверку

  1. Запустите chdbfl.exe от имени администратора.
  2. В поле имени файла укажите путь к 1Cv8.1CD (файл, а не папку).
  3. Сначала запустите проверку без флажка исправления. Так вы увидите масштаб проблемы, ничего не меняя.
  4. Если найдены ошибки, установите флажок «Исправлять обнаруженные ошибки» и запустите ещё раз.
  5. Дождитесь окончания. На базе в 10–20 ГБ проверка может идти больше часа, окно в это время кажется зависшим — не закрывайте его.

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

Если утилита сообщает, что исправила ошибки, запустите её повторно. Вторая проверка должна пройти чисто. Если ошибки снова находятся, файл повреждён глубоко, и нужны способы из раздела «Если стандартное лечение не помогло».

Что делает утилита при исправлении: удаляет или обнуляет повреждённые записи. Значит, часть данных может пропасть — например, несколько документов или строк регистров. Поэтому после неё обязательна проверка логической целостности.

Тестирование, исправление и переиндексация в Конфигураторе

chdbfl чинит «физику» файла. Логические связи — ссылки документов на справочники, итоги регистров — проверяются в Конфигураторе.

Запуск режима

  1. Сделайте ещё одну копию папки базы, уже после chdbfl.
  2. Откройте базу в режиме Конфигуратор.
  3. Выберите Администрирование → Тестирование и исправление.

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

Какие флажки ставить

ФлажокЧто делаетКогда нужен
Реиндексация таблиц информационной базыПересоздаёт индексы таблицВсегда после повреждения файла
Проверка логической целостностиИщет нарушения структуры записейВсегда
Проверка ссылочной целостностиИщет «битые» ссылки на удалённые объектыВсегда после chdbfl
Пересчёт итоговПересчитывает итоги регистровЕсли отчёты показывают странные остатки
Сжатие таблиц информационной базыУбирает пустое место из файлаПо желанию, увеличивает время
Реструктуризация таблицПересоздаёт таблицы целикомКрайняя мера, очень долго

Внизу окна выберите режим «Тестирование и исправление» (а не «Только проверка»).

Что выбрать для битых ссылок

Для ссылок на несуществующие объекты безопаснее вариант «Создавать объекты». Программа создаст пустые элементы-заглушки, и вы увидите, какие документы ссылались на пропавшие данные. Вариант «Очищать ссылки» молча обнуляет поля — потом трудно понять, что там было.

Для частичной потери данных объектов выбирайте «Не изменять» или «Восстанавливать объекты». Удаление объектов оставляйте на крайний случай.

Заглушки получают имена вида «Объект не найден» с кодом ссылки. После проверки найдите их поиском по списку справочника и восстановите реквизиты по первичке.

После завершения сохраните протокол из окна сообщений. Он показывает, какие таблицы и документы пострадали.

Если стандартное лечение не помогло

Бывает, что chdbfl завершается ошибкой, а Конфигуратор не открывает базу. Варианты ниже — по возрастанию сложности.

Выгрузка и загрузка через .dt

Если базу удаётся открыть в Конфигураторе, выгрузите её: Администрирование → Выгрузить информационную базу. Затем создайте новую пустую базу и загрузите туда файл: Администрирование → Загрузить информационную базу.

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

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

Если копия есть, восстановите её в новую папку, а не поверх повреждённой базы. Так вы сможете сравнить данные и перенести то, что успели ввести после даты копии. Данные за пропущенные дни переносят обработкой «Выгрузка и загрузка данных XML» или вручную по первичке.

Сторонние утилиты и специалисты

Существуют сторонние программы для чтения структуры 1Cv8.1CD вне платформы. Они позволяют вытащить отдельные таблицы из файла, который платформа уже не открывает. Работают с ними только с копией файла, и это задача для специалиста: данные потом нужно корректно загрузить обратно.

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

Ищем, кто и когда повредил базу: журнал регистрации

Если причину не найти, база сломается снова. Журнал регистрации помогает понять, в какой момент шла запись.

Где хранится журнал

Журнал лежит в папке 1Cv8Log рядом с файлом базы. Открыть его можно двумя путями:

  • в Конфигураторе: Администрирование → Журнал регистрации;
  • в режиме Предприятие (БП 3.0, ЗУП 3.1, УТ 11): Администрирование → Обслуживание → Журнал регистрации.

Если сама база не открывается, восстановите копию на день раньше и подложите к ней папку 1Cv8Log из повреждённой базы. Журнал отдельный от 1Cv8.1CD и часто остаётся читаемым.

Что искать в журнале

  1. Установите отбор по дате и времени: последний час перед появлением ошибки.
  2. Отберите события с уровнем «Ошибка».
  3. Посмотрите события «Сеанс. Начало» и «Сеанс. Завершение» по каждому пользователю. Сеанс, который начался, но так и не завершился, указывает на компьютер, где программа оборвалась.
  4. Обратите внимание на тяжёлые операции в эти минуты: закрытие месяца, загрузку банковской выписки, обмен с другой базой, обновление конфигурации.

Типичные виновники

  • ⚡ отключение электричества или перезагрузка ПК во время записи;
  • 🖧 обрыв сети, когда база лежит в общей папке, особенно по Wi-Fi;
  • 🛡️ антивирус, который проверяет 1Cv8.1CD в момент записи;
  • ☁️ облачная синхронизация (Яндекс Диск, OneDrive, Google Drive) — она копирует открытый файл и может вернуть его старую версию;
  • ❌ снятие процесса 1cv8.exe в Диспетчере задач во время проведения документов;
  • 💽 сбоящий жёсткий диск или накопитель с исчерпанным ресурсом.

Когда пора переходить на клиент-серверный вариант

Файловая база держит всё в одном файле и не умеет откатывать незаконченные операции после сбоя. В клиент-серверном варианте данные хранит СУБД (Microsoft SQL Server или PostgreSQL). У неё есть журнал транзакций: после аварии незавершённые изменения откатываются, и база остаётся согласованной.

Признаки, что файловая база не справляется

  • 👥 одновременно работают больше 5–10 пользователей;
  • 🌐 база лежит в общей сетевой папке, а сотрудники подключаются из разных помещений;
  • 🔁 повреждения повторяются чаще раза в квартал;
  • 📈 файл 1Cv8.1CD вырос до десятков гигабайт.

Как перейти

  1. Установите сервер 1С:Предприятия и СУБД на отдельный компьютер или сервер.
  2. В консоли администрирования серверов 1С создайте информационную базу.
  3. В исходной файловой базе выгрузите данные: Конфигуратор → Администрирование → Выгрузить информационную базу.
  4. Подключитесь Конфигуратором к новой серверной базе и загрузите файл .dt.
  5. Пропишите новую базу в списке баз у пользователей.

Для клиент-серверного варианта нужны серверная лицензия 1С и лицензия выбранной СУБД (PostgreSQL распространяется бесплатно).

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

Профилактика: как больше не видеть это сообщение

Сценарий лечения у вас уже есть. Ниже — меры, которые убирают причины.

Железо и сеть

  • 🔋 Поставьте ИБП на компьютер или сервер, где лежит база, и настройте корректное выключение при разряде батареи.
  • 🖧 Не держите файловую базу на сетевом диске, к которому подключаются по Wi-Fi.
  • 💽 Раз в квартал проверяйте здоровье диска (SMART). Накопитель с растущим числом переназначенных секторов меняйте заранее.

Антивирус и синхронизация

  • 🛡️ Добавьте папку с базой в исключения антивируса. Как минимум файлы с расширением .1CD и папку 1Cv8Log.
  • ☁️ Выведите базу из папок, которые синхронизируют облачные сервисы. Резервные копии в облако можно, рабочий файл — нельзя.

Порядок работы пользователей

  • ⏹️ Закрывайте 1С через меню, а не через Диспетчер задач.
  • 🌙 Не оставляйте программу открытой на ночь, если в это время идёт перезагрузка с обновлениями Windows.

Регулярные копии и обслуживание

Делайте выгрузку в .dt или копию 1Cv8.1CD каждый день, когда в базе никого нет. Храните копии минимум за 7–14 дней: повреждение замечают не сразу, и вчерашняя копия может быть уже испорченной.

Раз в месяц запускайте chdbfl в режиме проверки без исправления. Если она находит ошибки на «здоровой» базе — это ранний сигнал, что с диском или сетью что-то не так.

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

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

Можно ли работать в базе, если ошибка появилась один раз и пропала?
Работать можно, но в тот же день проверьте базу утилитой chdbfl без исправления. Повреждение может сидеть в таблице, к которой вы просто ещё не обращались.
Потеряются ли данные после chdbfl?
Могут потеряться записи, которые лежали на повреждённых страницах файла. Обычно это немного документов или строк регистров. Проверка ссылочной целостности с вариантом «Создавать объекты» покажет, что именно пропало.
Есть ли chdbfl для серверной базы?
Нет. Утилита работает только с файлом 1Cv8.1CD. В серверной базе целостность проверяют средствами СУБД и режимом «Тестирование и исправление» в Конфигураторе.
Помогает ли обновление платформы?
Само по себе обновление файл не лечит. Но лечить базу лучше утилитой и Конфигуратором той версии платформы, с которой база работает обычно.
Сколько времени занимает восстановление?
Для базы в 2–5 ГБ проверка chdbfl и тестирование с реиндексацией вместе занимают примерно 30–90 минут. Большие базы и медленные диски увеличивают время в разы.