Повреждение файла 1Cv8.1CD: лечение chdbfl, тестирование и откат на копию

· 9 мин

Содержание

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

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

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

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

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

Типичные причины:

  • ⚡ внезапное отключение питания или «жёсткая» перезагрузка во время работы;
  • 🌐 обрыв сети, когда база лежит в общей папке, особенно при работе по Wi-Fi или VPN;
  • 💽 сбойные сектора, исчерпанный ресурс SSD, переполненный диск;
  • 🛡️ антивирус, который проверяет 1Cv8.1CD прямо во время записи;
  • ☁️ синхронизация папки базы облачным клиентом (Яндекс Диск, OneDrive, Google Drive): он копирует файл кусками, пока 1С в него пишет;
  • 🔪 принудительное завершение процесса 1cv8.exe через диспетчер задач.

Сообщения, которые обычно говорят о физическом повреждении файла:

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

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

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

Перед исправлением: копия файла и проверка диска

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

Не запускайте никакое исправление, пока не скопировали 1Cv8.1CD в другое место.

Порядок подготовки:

  1. Попросите всех выйти из базы. Проверьте, что на компьютерах пользователей и на сервере нет процессов 1cv8.exe и 1cv8c.exe, открытых с этой базой.
  2. Узнайте путь к базе. В окне запуска выделите её — внизу появится строка вида File="D:\Bases\Buh".
  3. Скопируйте всю папку базы целиком на другой диск или флешку. Минимум — файл 1Cv8.1CD.
  4. Проверьте свободное место: для лечения и последующих операций нужно не меньше двух объёмов файла базы.
  5. Проверьте диск. В командной строке от имени администратора: chkdsk D: /f (буква — ваш диск). Для системного диска Windows предложит проверку при следующей загрузке.

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

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

Как исправить файл базы данных 1С утилитой chdbfl.exe

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

Где найти: C:\Program Files\1cv8\<номер версии>\bin\chdbfl.exe. Для 32-разрядной платформы — C:\Program Files (x86)\1cv8\<номер версии>\bin\. Берите утилиту той же версии платформы, на которой работает база.

Пошагово:

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

Утилита работает на уровне страниц и таблиц. Испорченные записи она может удалить: тогда база откроется, но часть документов или строк пропадёт. Поэтому после неё обязательно проверяют данные.

Сначала можно запустить проверку без галочки «Исправлять». Так вы увидите масштаб: пара ошибок в индексах — одно, сотни повреждённых записей в таблицах документов — повод сразу думать о резервной копии.

Тестирование и исправление информационной базы в конфигураторе

Когда база открывается, следующий шаг — встроенное тестирование. Оно чинит то, что chdbfl не видит: битые ссылки, неверные итоги, рассогласование индексов.

Как запустить:

  1. Откройте базу в режиме «Конфигуратор».
  2. Меню Администрирование → Тестирование и исправление....
  3. Отметьте проверки (см. таблицу ниже).
  4. Выберите режим «Тестирование и исправление».
  5. Нажмите «Выполнить».

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

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

Для битых ссылок программа спрашивает, что делать: создавать объекты-заглушки, очищать ссылки или ничего не менять. Безопаснее создавать объекты. Потом вы найдёте их по пометке и разберётесь вручную, а не потеряете данные молча.

Запуск тестирования из командной строки

Если базу нужно проверять регулярно или ночью, тестирование запускают параметром /IBCheckAndRepair:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /IBCheckAndRepair -ReIndex -LogIntegrity -RecalcTotals /Out "D:\Logs\check.log"

Номер версии в пути замените на свою. Режим только проверки без исправления — ключ -TestOnly. Результат пишется в файл из /Out.

Если база не открывается: копия, выгрузка .dt и «Предыдущие версии»

Когда обе утилиты не помогли, восстанавливайте данные. Источники — от самого свежего к самому старому.

Резервные копии средствами конфигурации

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

Выгрузка в DT

Файл .dt — выгрузка базы средствами платформы. Восстановление:

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

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

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

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

Если на диске включена защита системы или резервное копирование истории файлов, щёлкните правой кнопкой по папке базы → «Свойства» → вкладка «Предыдущие версии». Там могут быть копии 1Cv8.1CD за прошлые дни. Восстановите копию в другую папку и проверьте её chdbfl.

Что делать с данными после отката

Восстановленная копия — это база на дату копии. Всё, что вводили после, придётся завести заново. Чтобы понять объём, откройте повреждённую базу (если она хоть частично открывается после chdbfl) и сформируйте списки документов за период после даты копии. Их и перенесите.

Права доступа, сетевая папка и антивирус

Часть «повреждений» на деле — проблемы с доступом к файлу. Платформа не может нормально записать страницу и потом не может её прочитать.

Что проверить:

  • 🔐 Права на папку. Пользователям Windows, которые работают в базе, нужны права на чтение, запись, создание и удаление файлов во всей папке базы, а не только на 1Cv8.1CD. Платформа создаёт рядом служебные файлы.
  • 🌐 Путь к базе. Все пользователи должны подключаться по одному сетевому пути, например \\server\Bases\Buh. Одновременная работа через разные буквы дисков и разные пути к одной базе — лишний риск.
  • 📶 Тип подключения. Работа с файловой базой через Wi-Fi или VPN по общей папке — частая причина повреждений. Для удалённых пользователей лучше терминальный доступ или публикация на веб-сервере.
  • 🛡️ Антивирус. Добавьте папку базы в исключения проверки в реальном времени. Антивирус, который блокирует файл на запись, — классика.
  • ☁️ Облачная синхронизация. Не держите базу в папке, которую синхронизирует облачный клиент. Резервные архивы — можно, рабочий файл — нет.
  • 💾 Атрибут «Только чтение». После копирования с флешки или из архива у файла может остаться этот атрибут. Снимите его в свойствах файла.

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

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

Лечение без устранения причины даёт передышку на неделю. Минимальный набор мер:

МераЧто даёт
Источник бесперебойного питания на компьютере или сервере с базойНет обрыва записи при скачке питания
Ежедневное резервное копирование на другой дискОткат максимум на сутки
Еженедельная выгрузка в .dtНезависимая от формата файла копия
Исключение папки базы из антивируса и облачных клиентовНикто не трогает файл во время записи
Проверка SMART и chkdsk раз в месяцВидно умирающий диск до потери данных
Тестирование с -TestOnly по ночамРанний сигнал о проблемах в данных
Регламент обслуживания файловой базы
Выполнено: 0 / 7

Отдельно о размере. Чем больше файл, тем дольше любая операция и тем выше цена сбоя. Когда файловая база перерастает десятки гигабайт или в ней одновременно работают больше 10–15 человек, стоит подумать о переходе на клиент-серверный вариант. В нём сбой питания на рабочем месте пользователя базу не повреждает.

Проверку копий не пропускайте. Раз в квартал разверните последнюю копию в отдельную папку и откройте её. Копия, которую ни разу не проверяли, может оказаться пустой или такой же битой.

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

Можно ли запускать chdbfl.exe, если в базе работают пользователи?
Нет. Утилита требует, чтобы файл не был открыт. При работающих пользователях она либо не запустится, либо испортит базу ещё сильнее.
Пропадут ли данные после chdbfl?
Могут. Если запись разрушена, утилита удаляет её, чтобы база открылась. Поэтому всегда сначала копируйте файл, а после лечения сверяйте последние документы и остатки.
Где взять chdbfl.exe, если в папке bin её нет?
Она входит в состав платформы 1С 8.3. Если файла нет, переустановите платформу с тем же номером версии, оставив отмеченными все компоненты.
Помогает ли переименовать или удалить старые файлы рядом с 1Cv8.1CD?
Служебные файлы в папке базы трогают только при закрытой базе. Сам файл данных — только 1Cv8.1CD, его не удаляют и не переименуют без копии.
Что делать, если повреждена клиент-серверная база?
Там нет файла 1Cv8.1CD, а chdbfl не применяется. Проверяют базу средствами СУБД и тестированием в конфигураторе, а восстанавливают из бэкапа СУБД или выгрузки .dt.