Повреждённая база 1С 8.3: какой инструмент выбрать под ваш случай
Содержание
Восстановить базу 1С можно четырьмя способами: утилитой chdbfl.exe (только файловые базы), режимом «Тестирование и исправление» в конфигураторе, загрузкой резервной копии .dt и средствами самой СУБД — MS SQL или PostgreSQL. Выбор зависит от того, где лежат данные и что именно сломалось: файл базы, структура таблиц, конфигурация или кэш на компьютере пользователя.
База не открывается, отчёты падают с ошибкой, после отключения света программа пишет Файл базы данных поврежден. Первое желание — сразу запустить исправление. Не надо: сначала копия, потом диагностика, потом самый мягкий инструмент. Ниже порядок, при котором шансы сохранить данные максимальные.
Что сломалось: диагностика перед восстановлением базы
Первое правило одно для всех случаев: сделайте копию базы в текущем, повреждённом состоянии. Любой инструмент исправления может удалить «битые» записи безвозвратно. Если результат не устроит, нужно иметь точку, к которой можно вернуться.
- 📁 Файловая база — скопируйте весь каталог базы (главное — файл
1Cv8.1CD) при закрытой программе у всех пользователей. - 🗄️ Клиент-серверная база
— сделайте резервную копию средствами СУБД, а не выгрузку
.dt: выгрузка из повреждённой базы может не пройти.
Дальше определите тип проблемы по симптому.
| Симптом | Вероятная причина | С чего начать |
|---|---|---|
Ошибка формата потока при запуске у одного пользователя | Повреждён локальный кэш | Очистка кэша, база цела |
Файл базы данных поврежден, база не открывается | Сбой записи в 1Cv8.1CD | chdbfl.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\. Отдельно её ставить не нужно.
Утилита работает только с файловыми базами. Для серверной базы она бесполезна: там данные хранятся в таблицах СУБД, а не в одном файле.
Порядок запуска
- Попросите всех пользователей выйти из базы. Если кто-то останется, утилита не получит доступ к файлу.
- Сделайте копию каталога базы.
- Запустите
chdbfl.exeот имени администратора Windows. - В поле «Имя файла БД» укажите путь к
1Cv8.1CD. - Сначала запустите проверку без исправления — так вы увидите масштаб проблемы.
- Если ошибки найдены, установите флажок «Исправлять обнаруженные ошибки» и запустите повторно.
- После завершения откройте базу в конфигураторе и выполните тестирование и исправление (следующий раздел).
Версия утилиты должна совпадать с версией платформы, на которой работает база, или быть не ниже её. Утилита из старой версии может не понять формат файла.
На больших базах (десятки гигабайт) проверка идёт часами. Не прерывайте её: обрыв на этапе исправления может повредить файл сильнее, чем было.
Что 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 — выгрузка всей информационной базы: конфигурация, данные, пользователи. Это самый простой способ вернуть базу в рабочее состояние, если копия есть и потеря данных с момента её создания допустима.
Загрузка выполняется в конфигураторе: Администрирование → Загрузить информационную базу. Загрузка полностью заменяет текущую базу: всё, что было введено после создания выгрузки, пропадёт.
Как не потерять свежие данные
- Создайте новую пустую базу в списке баз (без конфигурации).
- Загрузите
.dtв неё, а не в рабочую базу. - Сравните: какие документы в повреждённой базе ещё читаются, а каких нет в копии.
- Перенесите недостающее — вручную, через обмен или универсальную обработку выгрузки-загрузки данных XML.
- Только после проверки заменяйте рабочую базу.
Выгрузка .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С.
- Создайте новую информационную базу или измените существующую, указав восстановленную базу данных на сервере СУБД.
- Запустите конфигуратор и выполните тестирование и исправление хотя бы с пересчётом итогов.
Восстанавливайте копию в базу с новым именем, а не поверх рабочей. Если копия тоже окажется битой, у вас останется хотя бы текущее состояние.
Ручное восстановление конфигурации и данных
Когда автоматические инструменты не справились, данные спасают по частям.
Повреждена только конфигурация
- 📦 Есть файл
.cfтого же релиза — в конфигураторе выберитеКонфигурация → Загрузить конфигурацию из файла, затем обновите конфигурацию базы данных. Данные при этом сохраняются, если структура объектов совпадает. - 🔄 Основная конфигурация испорчена, а конфигурация базы данных цела — используйте
Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД. Несохранённые изменения основной конфигурации пропадут. - 🛠️ Доработанная конфигурация без копии — загрузите типовой
.cfтого же релиза, а доработки восстановите сравнением со старой выгрузкой или из хранилища, если оно было.
Повреждены данные, копии нет
- Сделайте выгрузку всего, что ещё читается: справочники, остатки, документы за текущий период.
- Создайте новую базу на чистой конфигурации того же релиза.
- Перенесите данные универсальной обработкой выгрузки-загрузки XML или вводом остатков на дату.
- Для сильно повреждённого
1Cv8.1CDесть сторонние утилиты, которые читают таблицы файла напрямую и позволяют вытащить конфигурацию и данные. Работайте только с копией файла.
Сторонние инструменты не поддерживаются фирмой 1С. Используйте их только для чтения и извлечения данных, никогда — для записи в рабочую базу.
Если файл не открывается ничем, а данные критичны, дешевле обратиться к специалисту по восстановлению 1С, чем терять учёт за год. Ориентировочно такая работа стоит от нескольких тысяч до десятков тысяч рублей в зависимости от объёма и степени повреждения.
Профилактика: стратегия резервного копирования
Почти все аварии, которые заканчиваются потерей данных, — это аварии без свежей копии. Сам сбой обычно случается из-за отключения питания, обрыва сети при работе с базой в общей папке, сбойного диска или антивируса, который блокирует файл базы.
Как защитить базу
- 🔌 Источник бесперебойного питания на компьютере или сервере, где лежит база.
- 🌐 Файловую базу по сети открывайте только по стабильному проводному подключению. Через Wi-Fi и VPN лучше работать через веб-клиент или терминал.
- 🛡️ Исключите каталог базы и файл
1Cv8.1CDиз проверки антивирусом в реальном времени. - 👥 Больше 5–10 одновременных пользователей — повод перейти на клиент-серверный вариант.
Правило 3-2-1
Три копии, на двух разных носителях, одна — вне офиса (облако или другой сервер). Копия на том же диске, что и база, спасает от ошибки пользователя, но не от поломки диска.
| Вариант базы | Чем копировать | Как часто |
|---|---|---|
| Файловая, 1–5 пользователей | Встроенное копирование: Администрирование → Обслуживание → Резервное копирование и восстановление или скрипт с копированием каталога | Ежедневно, хранить 7–14 копий |
| Файловая, критичная | Скрипт /DumpIB по расписанию + копия каталога | Ежедневно + перед обновлением |
| MS SQL | Планы обслуживания: полная копия + журнал транзакций | Полная — раз в сутки, журнал — каждые 15–60 минут |
| PostgreSQL | pg_dump или pg_basebackup + архив WAL | Раз в сутки + непрерывный WAL |
Копию нужно проверять. Раз в месяц разворачивайте её в тестовую базу и открывайте. Копия, которую ни разу не пробовали восстановить, — это надежда, а не копия.
Перед каждым обновлением конфигурации и платформы делайте внеочередную копию. Это занимает минуты, а при неудачном обновлении позволяет откатиться за то же время.
Частые вопросы
Можно ли запустить chdbfl, пока пользователи работают?
1Cv8.1CD. Попросите всех выйти из базы и только потом запускайте проверку.Что лучше для бэкапа серверной базы: DT или средства СУБД?
Можно ли загрузить DT из файловой базы в серверную?
.dt не зависит от варианта работы, поэтому так переносят базу с файлового режима на сервер. Версия платформы, на которую загружаете, должна быть не ниже той, из которой выгружали.