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

· 10 мин

Содержание

Восстановить базу 1С можно четырьмя способами: утилитой chdbfl.exe (только файловые базы), режимом «Тестирование и исправление» в конфигураторе, загрузкой резервной копии .dt и средствами самой СУБД — MS SQL или PostgreSQL. Выбор зависит от того, где лежат данные и что именно сломалось: файл базы, структура таблиц, конфигурация или кэш на компьютере пользователя.

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

Что сломалось: диагностика перед восстановлением базы

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

  • 📁 Файловая база — скопируйте весь каталог базы (главное — файл 1Cv8.1CD) при закрытой программе у всех пользователей.
  • 🗄️ Клиент-серверная база — сделайте резервную копию средствами СУБД, а не выгрузку .dt: выгрузка из повреждённой базы может не пройти.

Дальше определите тип проблемы по симптому.

СимптомВероятная причинаС чего начать
Ошибка формата потока при запуске у одного пользователяПовреждён локальный кэшОчистка кэша, база цела
Файл базы данных поврежден, база не открываетсяСбой записи в 1Cv8.1CDchdbfl.exe
Отчёты показывают неверные остатки, ошибки при проведенииСбиты итоги или индексыТестирование и исправление
Нарушение целостности структуры конфигурацииПовреждена конфигурацияВосстановление конфигурации из .cf
Ошибки СУБД в тексте сообщения (SQL Server, PostgreSQL)Повреждены страницы данных на сервереПроверка средствами СУБД
Пропали данные после ошибочной обработкиЛогическая порча, не физическаяРезервная копия

Если ошибка воспроизводится только на одном компьютере, а с другого база открывается нормально, — база, скорее всего, цела. Закройте 1С и удалите содержимое папок %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8 (кроме файлов с настройками списка баз) или запустите программу с параметром /ClearCache.

Где хранится база и что с ней случилось?

Утилита chdbfl: восстановление файловой базы

chdbfl.exe — штатная утилита платформы для проверки физической целостности файла 1Cv8.1CD. Она лежит в каталоге bin установленной версии, например C:\Program Files\1cv8\8.3.24.1342\bin\. Отдельно её ставить не нужно.

Утилита работает только с файловыми базами. Для серверной базы она бесполезна: там данные хранятся в таблицах СУБД, а не в одном файле.

Порядок запуска

  1. Попросите всех пользователей выйти из базы. Если кто-то останется, утилита не получит доступ к файлу.
  2. Сделайте копию каталога базы.
  3. Запустите chdbfl.exe от имени администратора Windows.
  4. В поле «Имя файла БД» укажите путь к 1Cv8.1CD.
  5. Сначала запустите проверку без исправления — так вы увидите масштаб проблемы.
  6. Если ошибки найдены, установите флажок «Исправлять обнаруженные ошибки» и запустите повторно.
  7. После завершения откройте базу в конфигураторе и выполните тестирование и исправление (следующий раздел).

Версия утилиты должна совпадать с версией платформы, на которой работает база, или быть не ниже её. Утилита из старой версии может не понять формат файла.

На больших базах (десятки гигабайт) проверка идёт часами. Не прерывайте её: обрыв на этапе исправления может повредить файл сильнее, чем было.

Что chdbfl не исправит

  • 🧩 логические ошибки — неверные остатки, «висящие» ссылки на удалённые объекты;
  • ⚙️ повреждённую конфигурацию;
  • 🖥️ ошибки кэша на компьютере пользователя;
  • 💾 физически сбойный диск — сначала снимите копию файла с диска на исправный носитель.

Тестирование и исправление в конфигураторе

Это главный инструмент для логических ошибок и для серверных баз. Открывается так: запустите базу в режиме «Конфигуратор» и выберите Администрирование → Тестирование и исправление. Нужен монопольный доступ — все пользователи должны выйти.

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

Внизу окна выберите режим. Начните с «Тестирование» — программа покажет ошибки, ничего не меняя. Затем повторите с «Тестирование и исправление».

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

  • 🔗 Ссылки на несуществующие объекты — «Создавать объекты» (появятся объекты-заглушки, которые потом можно заполнить), «Очищать ссылки» или «Не изменять».
  • 🧱 Частичная потеря данных объектов — «Создавать заглушки», «Удалять объекты» или «Не изменять».

Выбирайте «Создавать объекты». Удаление ссылок необратимо: документ потеряет контрагента или номенклатуру, и восстановить связь потом можно только из резервной копии. Созданные заглушки легко найти и заменить на правильные объекты.

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

На серверах удобно запускать проверку ночью по расписанию. Пример для файловой базы:

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

Для серверной базы вместо /F укажите /S "сервер\имя_базы". Если нужен только отчёт без изменений, добавьте ключ -TestOnly. Полный список ключей — в справке по параметрам командной строки, которая открывается в конфигураторе.

Восстановление базы 1С из DT-выгрузки

Файл .dt — выгрузка всей информационной базы: конфигурация, данные, пользователи. Это самый простой способ вернуть базу в рабочее состояние, если копия есть и потеря данных с момента её создания допустима.

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

Как не потерять свежие данные

  1. Создайте новую пустую базу в списке баз (без конфигурации).
  2. Загрузите .dt в неё, а не в рабочую базу.
  3. Сравните: какие документы в повреждённой базе ещё читаются, а каких нет в копии.
  4. Перенесите недостающее — вручную, через обмен или универсальную обработку выгрузки-загрузки данных XML.
  5. Только после проверки заменяйте рабочую базу.

Выгрузка .dt не заменяет полноценный бэкап для серверных баз. Выгрузить базу на 100 ГБ можно, но загрузка идёт долго, а при нехватке памяти падает. Для серверов основной способ — копии средствами СУБД.

Загрузить .dt можно и из командной строки ключом /RestoreIB, а выгрузить — ключом /DumpIB. Так строят простые сценарии резервного копирования файловых баз.

Средства MS SQL и PostgreSQL для серверных баз

В клиент-серверном варианте 1С хранит данные в СУБД. Физические повреждения (сбой страниц, проблемы диска) исправляются на уровне СУБД, а 1С видит только последствия.

MS SQL Server

Проверка базы:

DBCC CHECKDB ('buh_2024') WITH NO_INFOMSGS, ALL_ERRORMSGS;

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

RESTORE DATABASE buh_restore
FROM DISK = 'E:\Backup\buh_2024_full.bak'
WITH MOVE 'buh_2024' TO 'E:\Data\buh_restore.mdf',
     MOVE 'buh_2024_log' TO 'E:\Data\buh_restore_log.ldf',
     RECOVERY;

Логические имена файлов (buh_2024, buh_2024_log) у вас будут свои — посмотрите их командой RESTORE FILELISTONLY FROM DISK = '...'.

При модели восстановления FULL и регулярных копиях журнала транзакций базу можно вернуть на конкретный момент — например, за минуту до ошибочной обработки. Модель SIMPLE так не умеет: только на момент полной или разностной копии.

Режим REPAIR_ALLOW_DATA_LOSS у DBCC CHECKDB — крайняя мера. Он требует однопользовательского режима базы (все сеансы 1С будут разорваны) и удаляет повреждённые страницы вместе с данными. После него обязательно тестирование и исправление в 1С, а лучше — восстановление из копии.

PostgreSQL

Для PostgreSQL используйте сборку от 1С или сертифицированную для работы с платформой. Логическая копия и восстановление:

pg_dump -U postgres -Fc -f D:\Backup\buh.backup buh
pg_restore -U postgres -d buh_restore D:\Backup\buh.backup

Перед pg_restore создайте пустую базу buh_restore. Для возврата на момент времени нужен архив WAL и базовая копия (pg_basebackup) — это настраивается заранее, задним числом не включишь.

После восстановления в СУБД

  1. Откройте консоль администрирования серверов 1С.
  2. Создайте новую информационную базу или измените существующую, указав восстановленную базу данных на сервере СУБД.
  3. Запустите конфигуратор и выполните тестирование и исправление хотя бы с пересчётом итогов.

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

Ручное восстановление конфигурации и данных

Когда автоматические инструменты не справились, данные спасают по частям.

Повреждена только конфигурация

  • 📦 Есть файл .cf того же релиза — в конфигураторе выберите Конфигурация → Загрузить конфигурацию из файла, затем обновите конфигурацию базы данных. Данные при этом сохраняются, если структура объектов совпадает.
  • 🔄 Основная конфигурация испорчена, а конфигурация базы данных цела — используйте Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД. Несохранённые изменения основной конфигурации пропадут.
  • 🛠️ Доработанная конфигурация без копии — загрузите типовой .cf того же релиза, а доработки восстановите сравнением со старой выгрузкой или из хранилища, если оно было.

Повреждены данные, копии нет

  1. Сделайте выгрузку всего, что ещё читается: справочники, остатки, документы за текущий период.
  2. Создайте новую базу на чистой конфигурации того же релиза.
  3. Перенесите данные универсальной обработкой выгрузки-загрузки XML или вводом остатков на дату.
  4. Для сильно повреждённого 1Cv8.1CD есть сторонние утилиты, которые читают таблицы файла напрямую и позволяют вытащить конфигурацию и данные. Работайте только с копией файла.

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

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

Профилактика: стратегия резервного копирования

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

Как защитить базу

  • 🔌 Источник бесперебойного питания на компьютере или сервере, где лежит база.
  • 🌐 Файловую базу по сети открывайте только по стабильному проводному подключению. Через Wi-Fi и VPN лучше работать через веб-клиент или терминал.
  • 🛡️ Исключите каталог базы и файл 1Cv8.1CD из проверки антивирусом в реальном времени.
  • 👥 Больше 5–10 одновременных пользователей — повод перейти на клиент-серверный вариант.

Правило 3-2-1

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

Вариант базыЧем копироватьКак часто
Файловая, 1–5 пользователейВстроенное копирование: Администрирование → Обслуживание → Резервное копирование и восстановление или скрипт с копированием каталогаЕжедневно, хранить 7–14 копий
Файловая, критичнаяСкрипт /DumpIB по расписанию + копия каталогаЕжедневно + перед обновлением
MS SQLПланы обслуживания: полная копия + журнал транзакцийПолная — раз в сутки, журнал — каждые 15–60 минут
PostgreSQLpg_dump или pg_basebackup + архив WALРаз в сутки + непрерывный WAL

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

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

Регламент резервного копирования
Выполнено: 0 / 6

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

Можно ли запустить chdbfl, пока пользователи работают?
Нет. Утилите нужен монопольный доступ к файлу 1Cv8.1CD. Попросите всех выйти из базы и только потом запускайте проверку.
Что лучше для бэкапа серверной базы: DT или средства СУБД?
Средства СУБД. Они быстрее, позволяют вернуться на момент времени и не зависят от работоспособности 1С. Выгрузку DT делайте дополнительно перед обновлениями.
Можно ли загрузить DT из файловой базы в серверную?
Да. Выгрузка .dt не зависит от варианта работы, поэтому так переносят базу с файлового режима на сервер. Версия платформы, на которую загружаете, должна быть не ниже той, из которой выгружали.
Почему после восстановления остатки в отчётах неверные?
Чаще всего не пересчитаны итоги регистров. Выполните тестирование и исправление с флажком «Пересчёт итогов».
Сколько длится тестирование и исправление?
На файловой базе в 2–3 ГБ — обычно до часа. На серверных базах в сотни гигабайт с реструктуризацией — часы и больше, поэтому запускайте проверку на выходных или ночью.