1С пишет «Файл базы данных поврежден»: лечим базу без потери данных
Содержание
Если 1С пишет Файл базы данных поврежден, сначала скопируйте файл 1Cv8.1CD в отдельную папку, затем запустите утилиту chdbfl.exe из каталога bin платформы с флажком исправления ошибок. Если после неё база открывается — сделайте в Конфигураторе тестирование и исправление с реиндексацией таблиц.
Ошибка бывает только у файловых баз: вся информационная база лежит в одном файле 1Cv8.1CD, и любой обрыв записи портит его страницы. Ниже порядок действий от безопасного к радикальному, способ найти виновника и меры, после которых сообщение больше не появится.
Подготовка: что проверить и что скопировать до лечения
Не начинайте ремонт сразу. Утилиты исправления меняют файл, и неудачная попытка может сделать хуже. Есть пять дел на 10–15 минут, которые потом окупаются.
Убедитесь, что база никем не занята
- Попросите всех пользователей выйти из программы.
- На компьютере, где лежит база, откройте Диспетчер задач и проверьте, нет ли процессов
1cv8.exeили1cv8c.exe. - Если база лежит в сетевой папке, проверьте открытые файлы на сервере:
Управление компьютером → Общие папки → Открытые файлы. Там видно, кто держит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\. Берите утилиту той же версии, на которой работает база.
Как запустить проверку
- Запустите
chdbfl.exeот имени администратора. - В поле имени файла укажите путь к
1Cv8.1CD(файл, а не папку). - Сначала запустите проверку без флажка исправления. Так вы увидите масштаб проблемы, ничего не меняя.
- Если найдены ошибки, установите флажок «Исправлять обнаруженные ошибки» и запустите ещё раз.
- Дождитесь окончания. На базе в 10–20 ГБ проверка может идти больше часа, окно в это время кажется зависшим — не закрывайте его.
После исправления откройте базу в режиме Предприятие. Если открылась — переходите к следующему разделу, лечение на этом не заканчивается.
Если утилита сообщает, что исправила ошибки, запустите её повторно. Вторая проверка должна пройти чисто. Если ошибки снова находятся, файл повреждён глубоко, и нужны способы из раздела «Если стандартное лечение не помогло».
Что делает утилита при исправлении: удаляет или обнуляет повреждённые записи. Значит, часть данных может пропасть — например, несколько документов или строк регистров. Поэтому после неё обязательна проверка логической целостности.
Тестирование, исправление и переиндексация в Конфигураторе
chdbfl чинит «физику» файла. Логические связи — ссылки документов на справочники, итоги регистров — проверяются в Конфигураторе.
Запуск режима
- Сделайте ещё одну копию папки базы, уже после
chdbfl. - Откройте базу в режиме Конфигуратор.
- Выберите
Администрирование → Тестирование и исправление.
Для этого режима нужен монопольный доступ: в базе не должно быть других пользователей.
Какие флажки ставить
| Флажок | Что делает | Когда нужен |
|---|---|---|
| Реиндексация таблиц информационной базы | Пересоздаёт индексы таблиц | Всегда после повреждения файла |
| Проверка логической целостности | Ищет нарушения структуры записей | Всегда |
| Проверка ссылочной целостности | Ищет «битые» ссылки на удалённые объекты | Всегда после chdbfl |
| Пересчёт итогов | Пересчитывает итоги регистров | Если отчёты показывают странные остатки |
| Сжатие таблиц информационной базы | Убирает пустое место из файла | По желанию, увеличивает время |
| Реструктуризация таблиц | Пересоздаёт таблицы целиком | Крайняя мера, очень долго |
Внизу окна выберите режим «Тестирование и исправление» (а не «Только проверка»).
Что выбрать для битых ссылок
Для ссылок на несуществующие объекты безопаснее вариант «Создавать объекты». Программа создаст пустые элементы-заглушки, и вы увидите, какие документы ссылались на пропавшие данные. Вариант «Очищать ссылки» молча обнуляет поля — потом трудно понять, что там было.
Для частичной потери данных объектов выбирайте «Не изменять» или «Восстанавливать объекты». Удаление объектов оставляйте на крайний случай.
Заглушки получают имена вида «Объект не найден» с кодом ссылки. После проверки найдите их поиском по списку справочника и восстановите реквизиты по первичке.
После завершения сохраните протокол из окна сообщений. Он показывает, какие таблицы и документы пострадали.
Если стандартное лечение не помогло
Бывает, что chdbfl завершается ошибкой, а Конфигуратор не открывает базу. Варианты ниже — по возрастанию сложности.
Выгрузка и загрузка через .dt
Если базу удаётся открыть в Конфигураторе, выгрузите её: Администрирование → Выгрузить информационную базу. Затем создайте новую пустую базу и загрузите туда файл: Администрирование → Загрузить информационную базу.
При загрузке платформа строит файл 1Cv8.1CD заново. Это убирает накопленные дефекты структуры, которые не видит chdbfl. Если выгрузка падает на конкретной таблице, имя таблицы в сообщении подскажет, какой объект повреждён.
Восстановление из резервной копии
Если копия есть, восстановите её в новую папку, а не поверх повреждённой базы. Так вы сможете сравнить данные и перенести то, что успели ввести после даты копии. Данные за пропущенные дни переносят обработкой «Выгрузка и загрузка данных XML» или вручную по первичке.
Сторонние утилиты и специалисты
Существуют сторонние программы для чтения структуры 1Cv8.1CD вне платформы. Они позволяют вытащить отдельные таблицы из файла, который платформа уже не открывает. Работают с ними только с копией файла, и это задача для специалиста: данные потом нужно корректно загрузить обратно.
Ищем, кто и когда повредил базу: журнал регистрации
Если причину не найти, база сломается снова. Журнал регистрации помогает понять, в какой момент шла запись.
Где хранится журнал
Журнал лежит в папке 1Cv8Log рядом с файлом базы. Открыть его можно двумя путями:
- в Конфигураторе:
Администрирование → Журнал регистрации; - в режиме Предприятие (БП 3.0, ЗУП 3.1, УТ 11):
Администрирование → Обслуживание → Журнал регистрации.
Если сама база не открывается, восстановите копию на день раньше и подложите к ней папку 1Cv8Log из повреждённой базы. Журнал отдельный от 1Cv8.1CD и часто остаётся читаемым.
Что искать в журнале
- Установите отбор по дате и времени: последний час перед появлением ошибки.
- Отберите события с уровнем «Ошибка».
- Посмотрите события «Сеанс. Начало» и «Сеанс. Завершение» по каждому пользователю. Сеанс, который начался, но так и не завершился, указывает на компьютер, где программа оборвалась.
- Обратите внимание на тяжёлые операции в эти минуты: закрытие месяца, загрузку банковской выписки, обмен с другой базой, обновление конфигурации.
Типичные виновники
- ⚡ отключение электричества или перезагрузка ПК во время записи;
- 🖧 обрыв сети, когда база лежит в общей папке, особенно по Wi-Fi;
- 🛡️ антивирус, который проверяет
1Cv8.1CDв момент записи; - ☁️ облачная синхронизация (Яндекс Диск, OneDrive, Google Drive) — она копирует открытый файл и может вернуть его старую версию;
- ❌ снятие процесса
1cv8.exeв Диспетчере задач во время проведения документов; - 💽 сбоящий жёсткий диск или накопитель с исчерпанным ресурсом.
Когда пора переходить на клиент-серверный вариант
Файловая база держит всё в одном файле и не умеет откатывать незаконченные операции после сбоя. В клиент-серверном варианте данные хранит СУБД (Microsoft SQL Server или PostgreSQL). У неё есть журнал транзакций: после аварии незавершённые изменения откатываются, и база остаётся согласованной.
Признаки, что файловая база не справляется
- 👥 одновременно работают больше 5–10 пользователей;
- 🌐 база лежит в общей сетевой папке, а сотрудники подключаются из разных помещений;
- 🔁 повреждения повторяются чаще раза в квартал;
- 📈 файл
1Cv8.1CDвырос до десятков гигабайт.
Как перейти
- Установите сервер 1С:Предприятия и СУБД на отдельный компьютер или сервер.
- В консоли администрирования серверов 1С создайте информационную базу.
- В исходной файловой базе выгрузите данные:
Конфигуратор → Администрирование → Выгрузить информационную базу. - Подключитесь Конфигуратором к новой серверной базе и загрузите файл
.dt. - Пропишите новую базу в списке баз у пользователей.
Для клиент-серверного варианта нужны серверная лицензия 1С и лицензия выбранной СУБД (PostgreSQL распространяется бесплатно).
Промежуточный вариант для небольшой фирмы — оставить файловую базу, но перевести пользователей на работу через удалённый рабочий стол или веб-публикацию. Тогда файл открывают процессы на одном компьютере, и обрыв сети у сотрудника не портит базу.
Профилактика: как больше не видеть это сообщение
Сценарий лечения у вас уже есть. Ниже — меры, которые убирают причины.
Железо и сеть
- 🔋 Поставьте ИБП на компьютер или сервер, где лежит база, и настройте корректное выключение при разряде батареи.
- 🖧 Не держите файловую базу на сетевом диске, к которому подключаются по Wi-Fi.
- 💽 Раз в квартал проверяйте здоровье диска (SMART). Накопитель с растущим числом переназначенных секторов меняйте заранее.
Антивирус и синхронизация
- 🛡️ Добавьте папку с базой в исключения антивируса. Как минимум файлы с расширением
.1CDи папку1Cv8Log. - ☁️ Выведите базу из папок, которые синхронизируют облачные сервисы. Резервные копии в облако можно, рабочий файл — нельзя.
Порядок работы пользователей
- ⏹️ Закрывайте 1С через меню, а не через Диспетчер задач.
- 🌙 Не оставляйте программу открытой на ночь, если в это время идёт перезагрузка с обновлениями Windows.
Регулярные копии и обслуживание
Делайте выгрузку в .dt или копию 1Cv8.1CD каждый день, когда в базе никого нет. Храните копии минимум за 7–14 дней: повреждение замечают не сразу, и вчерашняя копия может быть уже испорченной.
Раз в месяц запускайте chdbfl в режиме проверки без исправления. Если она находит ошибки на «здоровой» базе — это ранний сигнал, что с диском или сетью что-то не так.