Восстановление базы 1С после повреждения: chdbfl, Конфигуратор, копии

· 9 мин

Содержание

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

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

Как понять, что повреждена именно база, а не что-то другое

Сообщение об ошибке при запуске ещё не значит, что испорчен файл с данными. Похожие симптомы дают сбойный кэш, журнал регистрации и даже сеть. Начните с того, чтобы отделить одно от другого.

Признаки повреждения самой базы:

  • 🔴 при входе или открытии списка появляется Файл базы данных поврежден;
  • 🔴 при загрузке конфигурации или открытии объекта — Ошибка формата потока;
  • 🔴 Конфигуратор сообщает о нарушении целостности структуры конфигурации;
  • 🔴 документы открываются с «битыми» ссылками вида <Объект не найден> (123:a1b2...);
  • 🔴 отчёты по остаткам расходятся с оборотами за период без видимой причины.

Признаки, что база цела, а проблема рядом:

  • 🟡 ошибка появляется только у одного пользователя — скорее всего, испорчен его локальный кэш;
  • 🟡 база открывается с другого компьютера — дело в клиенте, а не в файле;
  • 🟡 падает только просмотр журнала регистрации — повреждены файлы в папке 1Cv8Log.
Диагностика: выберите симптом

Откуда берутся повреждения

Почти всегда причина внешняя. Файл ломается, когда запись на диск прерывается на середине:

  • ⚡ отключение питания или аварийная перезагрузка компьютера во время работы;
  • 🌐 файловая база лежит в сетевой папке, а связь с ней обрывается;
  • 🛡️ антивирус проверяет 1Cv8.1CD в момент записи;
  • 💾 на диске закончилось место или появились сбойные сектора;
  • ❌ процесс 1С снят через диспетчер задач посреди проведения или обновления.

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

Шаг 0. Копия поврежденного файла до любых действий

Не запускайте никаких исправлений, пока не сделали копию. Это единственный способ вернуться назад, если исправление что-то удалит.

  1. Попросите всех пользователей выйти из базы.
  2. Убедитесь, что процессов 1cv8.exe и 1cv8c.exe, работающих с этой базой, не осталось.
  3. Откройте каталог базы. Путь видно в окне запуска: выделите базу в списке, путь отображается внизу окна.
  4. Скопируйте весь каталог целиком в другое место, лучше на другой диск.

В каталоге файловой базы лежат:

Файл или папкаЧто этоНужен ли в копии
1Cv8.1CDВсе данные и конфигурацияДа, обязательно
1Cv8LogЖурнал регистрацииЖелательно
1Cv8.cdnФайл блокировки, пока база открытаНет

Если файл весит десятки гигабайт, а места мало, копируйте хотя бы 1Cv8.1CD. Журнал регистрации данные не хранит, его потеря неприятна, но не критична.

Шаг 1. Утилита chdbfl.exe: как восстановить файл базы 1С на низком уровне

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

Утилита входит в поставку платформы и лежит рядом с 1cv8.exe:

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

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

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

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

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

Что делать по итогам:

  • ✅ ошибок нет — физически файл цел, переходите к шагу 2;
  • ✅ ошибки исправлены — откройте базу и всё равно выполните шаг 2;
  • ❌ утилита падает или не открывает файл — переходите к восстановлению из копии.

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

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

Путь: Конфигуратор → Администрирование → Тестирование и исправление...

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

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

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

Режим и действия при ошибках

Сначала выберите режим «Тестирование» — программа только покажет проблемы. Если их немного и они понятны, повторите в режиме «Тестирование и исправление».

Для ссылок на несуществующие объекты программа предлагает три действия:

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

Для частичной потери данных объекта выбор похожий: создавать, удалять или не изменять. Удаление объектов — крайняя мера, начинайте с создания.

После исправления найдите заглушки в справочниках: обычно у них пустое наименование или служебный текст вроде «Объект не найден». Их нужно сопоставить с настоящими объектами или пометить на удаление.

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

Для регламентной проверки ночью удобен пакетный режим:

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

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

Шаг 3. Восстановление базы 1С из резервной копии

Если оба шага не помогли или исправление съело слишком много данных, остаётся копия. Вариантов два.

Из выгрузки .dt. Создайте пустую базу, откройте её в Конфигураторе и выполните Администрирование → Загрузить информационную базу.... Загрузка полностью заменяет содержимое базы, поэтому грузите в новую, а не поверх поврежденной.

Из копии каталога. Если у вас копировался 1Cv8.1CD, просто положите файл в новую папку и добавьте её в список баз.

Потерянные с момента копии документы придётся ввести заново. Помогут:

  • 📄 бумажные первичные документы и банковские выписки;
  • 📧 документы в ЭДО — входящие можно загрузить повторно;
  • 🔁 данные из поврежденной базы, если она хоть как-то открывается: документы за последние дни можно перенести обработкой выгрузки-загрузки.

Если копии нет

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

Особенности для серверной базы 1С

В клиент-серверном варианте файла 1Cv8.1CD нет — данные хранятся в СУБД (MS SQL Server или PostgreSQL). Поэтому chdbfl.exe здесь бесполезен.

Порядок для серверной базы другой:

  1. Сделайте резервную копию средствами СУБД — это ваш шаг 0.
  2. Проверьте целостность самой базы данных средствами СУБД.
  3. Выполните тестирование и исправление в Конфигураторе, как описано выше.

Проверка на стороне СУБД:

СУБДЧем проверять
MS SQL ServerDBCC CHECKDB для базы данных
PostgreSQLрасширение amcheck или утилита pg_amcheck (PostgreSQL 14 и новее), затем REINDEX
-- MS SQL Server: только проверка, без исправлений
DBCC CHECKDB ('buh_base') WITH NO_INFOMSGS;

Режимы DBCC CHECKDB с возможной потерей данных запускайте только после полной копии и только когда восстановление из бэкапа СУБД невозможно. Это решение администратора СУБД, а не бухгалтера.

Отдельная история — повреждение сеансовых данных и кэша кластера. Симптом: ошибки появляются у всех баз на сервере сразу, а не у одной. Очистка кэша сервера требует остановки службы агента 1С. Все пользователи всех баз на этом сервере будут отключены, поэтому делайте это вне рабочего времени и после предупреждения коллег.

Технологический журнал и журнал регистрации: где искать причину

Повторяющееся повреждение без явной причины — повод посмотреть логи.

Журнал регистрации

Лежит в папке 1Cv8Log в каталоге базы. В Конфигураторе открывается через Администрирование → Журнал регистрации. Отберите события с уровнем «Ошибка» за дни перед сбоем: видно, кто работал и на какой операции всё оборвалось.

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

Технологический журнал

Включается файлом logcfg.xml в каталоге conf платформы. Он пишет события на уровне процессов: исключения, падения, длинные операции. Для поиска причины порчи базы достаточно собирать исключения:

<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\1C_TechLog" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <property name="all"/>
  </log>
</config>

Параметр history — сколько часов хранить логи. Не оставляйте журнал включённым надолго: на нагруженной базе он быстро занимает гигабайты.

Системные журналы Windows

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

Профилактика: как не доводить до повреждения файла

Исправить базу можно не всегда. Предотвратить порчу проще.

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

Пояснения к самым важным пунктам:

  • 🗂️ Глубина копий. Повреждение часто замечают не сразу. Если хранится только вчерашняя копия, в ней уже может сидеть та же ошибка.
  • 🔁 Проверка восстановления. Копия, которую ни разу не разворачивали, — это надежда, а не копия.
  • 🌐 Сетевая папка. Файловый вариант по сети с 5–10 пользователями и нестабильной связью — частая причина порчи. Если пользователей больше, стоит задуматься о серверном варианте или о публикации через веб-сервер.
  • 🛡️ Антивирус. Исключение для каталога базы и временных папок 1С снижает и риск порчи, и тормоза.

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

Частые вопросы о восстановлении поврежденной базы

Можно ли запускать chdbfl.exe, пока пользователи работают?
Нет. Утилите нужен монопольный доступ к файлу 1Cv8.1CD. Если файл занят, проверка не запустится или даст неверный результат.
Сколько длится тестирование и исправление?
Зависит от размера базы и выбранных флажков. Небольшая база проверяется за минуты, база на десятки гигабайт с реструктуризацией — несколько часов.
Исправление удалило документы. Как их вернуть?
Только из копии, сделанной до исправления. Разверните её отдельной базой и перенесите недостающие документы обработкой выгрузки-загрузки данных.
Почему после исправления остатки всё равно не сходятся?
Проверьте, был ли включён пересчёт итогов. Если был, расхождение может быть учётным, а не техническим — например, из-за непроведённых документов или нарушенной последовательности.
Поможет ли сжатие таблиц уменьшить размер базы?
Да, для файловой базы сжатие убирает пустые страницы, и файл 1Cv8.1CD становится меньше. Особенно заметно после массового удаления объектов.