База 1С не открывается из-за повреждённого 1Cv8.1CD: как спасти данные

· 11 мин

Содержание

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

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

Сообщение бывает в разных вариантах. Чаще всего встречаются такие:

  • Файл базы данных поврежден
  • Ошибка СУБД: Файл базы данных поврежден с указанием пути к 1Cv8.1CD
  • Ошибка формата потока — нередко соседствует с повреждением файла
  • Нарушение целостности структуры конфигурации

Всё это касается файлового варианта работы. В клиент-серверной базе файла 1Cv8.1CD нет: данные хранит СУБД (MS SQL, PostgreSQL), и её повреждения лечат средствами самой СУБД.

Почему повреждается файл базы данных 1С

Файл 1Cv8.1CD — это одна большая страничная структура. Если запись страницы оборвалась на середине, ссылки внутри файла начинают указывать в пустоту. Поводов для такого обрыва несколько.

  • ⚡ Отключение питания. Компьютер выключился, пока 1С записывала проведение документа, закрытие месяца или обновление конфигурации .
  • 🔪 Принудительное завершение. Процесс 1cv8.exe сняли через диспетчер задач во время записи. Особенно опасно во время обновления и реструктуризации.
  • 🌐 Работа по сети через общую папку. Несколько пользователей открывают один файл по SMB, и сеть рвётся посреди записи. Это самая частая история в небольших офисах.
  • 🛡 Антивирус. Проверяет 1Cv8.1CD в момент записи и блокирует файл на доли секунды.
  • ☁ Облачная синхронизация. База лежит в папке Яндекс Диска, OneDrive или Dropbox. Клиент синхронизации подменяет файл версией с другого компьютера или из облака.
  • 💽 Неисправный диск или память. Сбойные секторы, умирающий SSD, ошибки оперативной памяти. В этом случае база будет портиться снова и снова, сколько её ни лечи.
  • 📦 Закончилось место на диске. Запись не прошла до конца, файл остался в несогласованном состоянии.

Если база ломается второй раз за месяц, ищите причину в железе или в сети, а не в 1С. Повторяющееся повреждение — почти всегда симптом.

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

Первые шаги: как оценить повреждение и не сделать хуже

Главное правило — не лечите единственный экземпляр файла. Сначала сделайте копию 1Cv8.1CD. Утилита исправления переписывает страницы и может удалить повреждённые записи безвозвратно. Если что-то пойдёт не так, копия даст вторую попытку.

Шаг 1. Закройте все сеансы

Все пользователи должны выйти из базы. Если кто-то останется, его сеанс помешает проверке, а при принудительном завершении он потеряет несохранённые данные. Делайте это вне рабочего времени или предупредите коллег заранее.

Как убедиться, что базой никто не пользуется:

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

Шаг 2. Скопируйте каталог базы

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

Шаг 3. Проверьте диск

Если диск неисправен, лечение базы на нём бессмысленно: через неделю всё повторится. Проверка из командной строки, запущенной от имени администратора:

:: Только проверка, без исправления (буква диска — ваша)
chkdsk D:

:: Проверка с исправлением ошибок файловой системы
:: Для системного диска потребуется перезагрузка
chkdsk D: /f

Состояние самого накопителя смотрите по SMART: подойдёт любая утилита, которая показывает атрибуты диска, например CrystalDiskInfo. Переназначенные и нестабильные секторы — сигнал переносить базу на другой диск до лечения.

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

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

chdbfl.exe — штатная утилита платформы для проверки физической целостности файловой базы. Она ставится вместе с 1С и лежит в каталоге bin конкретной версии платформы:

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

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

Шаг 1. Проверка без исправления

  1. Запустите chdbfl.exe двойным щелчком.
  2. В поле с именем файла базы укажите путь к 1Cv8.1CD. Кнопка с тремя точками рядом открывает проводник.
  3. Флажок «Исправлять обнаруженные ошибки» пока не ставьте.
  4. Нажмите «Выполнить» и дождитесь окончания. На базе в несколько гигабайт проверка идёт от нескольких минут до часа.

Утилита выведет список найденных проблем. Если ошибок нет, а 1С всё равно ругается, повреждение логическое, а не физическое: переходите к тестированию в Конфигураторе (следующий раздел).

Шаг 2. Проверка с исправлением

  1. Убедитесь, что копия каталога базы сделана.
  2. Снова запустите chdbfl.exe и укажите тот же файл.
  3. Поставьте флажок «Исправлять обнаруженные ошибки».
  4. Нажмите «Выполнить».

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

Запустите chdbfl повторно после исправления. Иногда вторая проверка находит то, что открылось только после первого прохода. Повторяйте, пока утилита не скажет, что ошибок нет.

Если chdbfl зависает или закрывается

  • Проверьте свободное место: утилите нужен запас на диске не меньше размера самой базы.
  • Попробуйте chdbfl.exe из более свежей версии платформы, установленной на том же компьютере. Саму базу при этом в новой версии не открывайте, пока не убедитесь, что ваша конфигурация её поддерживает.
  • Скопируйте файл на другой компьютер и запустите проверку там. Это исключает проблемы с памятью и диском исходной машины.

Тестирование и исправление базы в Конфигураторе

chdbfl лечит физическую структуру файла. После неё в базе часто остаются логические ошибки: битые ссылки, неверные итоги регистров, рассогласованные индексы. Их исправляет режим тестирования в Конфигураторе.

Перед тестированием сделайте выгрузку базы. В Конфигураторе: Администрирование → Выгрузить информационную базу. Получится файл .dt — полноценный архив данных и конфигурации. Если выгрузка падает с ошибкой, база ещё не вылечена: возвращайтесь к chdbfl или к резервной копии.

Порядок тестирования:

  1. Откройте базу в Конфигураторе. Режим тестирования требует монопольного доступа, поэтому в базе не должно быть других пользователей.
  2. Выберите Администрирование → Тестирование и исправление.
  3. Отметьте проверки (они описаны в таблице ниже).
  4. Выберите режим «Тестирование и исправление». Для битых ссылок разумный выбор — создавать объекты (тогда они появятся в справочниках с пометкой «объект не найден» и их можно разобрать вручную), а не очищать ссылки.
  5. Нажмите «Выполнить» и дождитесь окончания. Протокол проверки выводится в окне служебных сообщений.
ПроверкаЧто делаетКогда нужна
Реиндексация таблицПерестраивает индексыПочти всегда после сбоя
Проверка логической целостностиИщет нарушения внутренней структуры данныхВсегда после chdbfl
Проверка ссылочной целостностиНаходит ссылки на несуществующие объектыЕсли после лечения пропали документы или элементы справочников
Пересчёт итоговЗаново считает итоги регистровЕсли отчёты и остатки «поехали»
Сжатие таблицУбирает удалённые записи, уменьшает файлПо желанию, после основной проверки
Реструктуризация таблицПересоздаёт таблицы базыСамый тяжёлый режим, долгий; когда остальное не помогло

Те же проверки можно запустить из командной строки, например по расписанию ночью:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F "D:\Base\Buh" /N "Администратор" /P "пароль" /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals /Out "D:\Logs\check.txt"

Параметр /Out пишет протокол в текстовый файл. Без него не узнаете, что именно нашла проверка.

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

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

Копия в формате .dt

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

Копия файла 1Cv8.1CD

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

Копия, которую делала сама программа

В БП 3.0 и других типовых конфигурациях на БСП для файловых баз есть встроенное резервное копирование : Администрирование → Обслуживание → Резервное копирование и восстановление. Если оно было настроено, в выбранной папке лежат архивы с датой в имени. Восстановить из такого архива можно там же, командой восстановления, или загрузить его вручную, как обычную выгрузку.

Как вернуть данные, внесённые после копии

Копия недельной давности означает неделю потерянной работы. Варианты:

  • 📄 Ввести заново по первичке: банковские выписки загрузить повторно из клиент-банка, документы поступления и реализации — по бумагам или из ЭДО.
  • 🔁 Перенести из вылеченной базы. Если chdbfl всё же открыла повреждённую базу, но доверия к ней нет, документы за последние дни можно перенести в восстановленную копию обработкой выгрузки-загрузки данных XML. Это работа для опытного специалиста: при переносе легко получить дубли.

Как не допустить повреждения файловой базы

Файловый вариант надёжен, пока под ним стабильные питание, диск и сеть. Большинство повреждений предотвращает несколько простых мер.

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

Отдельно о росте нагрузки. Файловый вариант рассчитан на небольшое число одновременных пользователей и надёжную локальную сеть. Если по одной базе через общую папку работают несколько человек, в том числе по Wi-Fi или через VPN, риск обрыва записи заметно выше. Решения:

ВариантКогда подходитЧто даёт
Публикация базы на веб-сервереНесколько пользователей, удалённая работаКлиенты не пишут в файл напрямую по сети
Терминальный сервер (RDP)Удалённые сотрудники, слабые компьютерыРабота с базой идёт локально на сервере
Клиент-серверный вариант (MS SQL, PostgreSQL)Много пользователей, большая базаДанные хранит СУБД со своими механизмами восстановления
Облачная 1С у провайдераНет своего администратораКопии и железо — забота провайдера

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

Когда нужна помощь специалиста

Самостоятельно лечить базу разумно, пока chdbfl отрабатывает до конца, а Конфигуратор открывает базу. Зовите специалиста по восстановлению 1С, если:

  • 🚫 chdbfl закрывается с ошибкой на любой машине и любой версии платформы;
  • 🚫 после лечения пропал заметный объём документов, а резервной копии нет или она очень старая;
  • 🚫 файл 1Cv8.1CD имеет нулевой размер или явно меньше, чем был;
  • 🚫 повреждение связано с неисправным диском, и файл не копируется целиком;
  • 🚫 база в клиент-серверном варианте, а ошибки идут от СУБД.

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

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

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

Можно ли работать в базе, если ошибка появилась один раз и пропала?
Лучше не рисковать. Сделайте копию и запустите chdbfl в режиме проверки: это занимает минуты. Скрытое повреждение может проявиться позже, при закрытии месяца или обновлении, когда потерь будет больше.
Пропадут ли данные после chdbfl?
Целые записи утилита не трогает. Удаляются только те, которые физически не читаются. Сколько их, зависит от масштаба повреждения: иногда ничего, иногда несколько документов за день сбоя.
Почему выгрузка в .dt не проходит, хотя база открывается?
При выгрузке платформа читает все таблицы подряд и натыкается на повреждённые страницы, до которых при обычной работе дело не доходит. Это признак, что лечение chdbfl нужно повторить.
Помогает ли очистка кэша или удаление базы из списка и повторное добавление?
Нет. И кэш, и список баз хранятся отдельно от 1Cv8.1CD. Эти действия помогают при других ошибках запуска, но не при повреждении файла данных.
Бывает ли такая ошибка в клиент-серверной базе?
В таком виде — нет, файла 1Cv8.1CD там нет. Похожие сообщения могут приходить от самой СУБД, и тогда целостность проверяют её средствами, а в 1С — через тестирование в Конфигураторе.