Повреждённая информационная база 1С 8.3: диагностика, chdbfl, тестирование и откат на копию
Содержание
Чтобы починить базу 1С, сначала скопируйте её целиком, затем для файловой базы запустите утилиту chdbfl.exe из папки платформы, а после неё — Конфигуратор → Администрирование → Тестирование и исправление. Если и это не помогает, выгрузите базу в файл .dt и загрузите в новую пустую базу. Восстановление из резервной копии — последний шаг, когда данные внутри уже не спасти.
Порядок важен. Каждый следующий способ сильнее вмешивается в данные, поэтому ремонт идёт от безопасного к радикальному. Всё ниже относится к платформе 8.3 и к любой типовой конфигурации: БП 3.0, ЗУП 3.1, УТ 11 чинятся одинаково, потому что повреждение живёт на уровне платформы и таблиц, а не прикладного решения.
Признаки того, что база 1С повреждена
Повреждение редко видно сразу. Чаще база открывается, но отдельные действия падают с ошибкой. Типичные симптомы:
- 🛑 при запуске:
Файл базы данных поврежденилиОшибка формата потока; - 🧩 в списках и документах вместо реквизитов
<Объект не найден> (42:a1b2...)— битая ссылка; - 📉 остатки в отчётах не сходятся с движениями, хотя документы проведены правильно — сбились итоги регистров;
- 🐢 база внезапно стала открываться в разы дольше, а файл
1Cv8.1CDвырос без видимой причины; - ❌ при открытии конфигурации:
Нарушение целостности структуры конфигурации; - 💥 программа закрывается без сообщения на одном и том же документе или отчёте.
Не всякая ошибка — порча базы. Ошибка формата потока часто лечится очисткой кэша, а не ремонтом таблиц. Поэтому сначала отделите «сломался клиент» от «сломались данные».
Подготовка к ремонту: копия и монопольный режим
Любой способ ремонта может удалить часть данных. Без полной копии базы ремонт не начинайте. Если что-то пойдёт не так, вы вернётесь к исходной точке, а не к худшему состоянию.
Как скопировать файловую базу
- Попросите всех пользователей выйти из базы. Проверьте, что в каталоге нет активных сеансов: в папке базы не должно быть файлов, которые не удаётся скопировать.
- Скопируйте весь каталог базы, а не только
1Cv8.1CD. Путь к каталогу виден в окне запуска внизу, под списком баз. - Проверьте, что размер копии совпадает с оригиналом.
Выгрузку в .dt (Конфигуратор → Администрирование → Выгрузить информационную базу) на повреждённой базе делать стоит, но как дополнение. Она может оборваться на битых данных, а копия файла — нет.
Как скопировать клиент-серверную базу
Делайте полный бэкап средствами СУБД: в MS SQL Server — через Backup Database в SQL Server Management Studio, в PostgreSQL — через pg_dump. Копия на уровне СУБД надёжнее выгрузки .dt, потому что не зависит от того, прочитает ли 1С повреждённые таблицы.
Тестирование, исправление и загрузка .dt требуют монопольного доступа. Все сеансы пользователей будут закрыты, несохранённые документы пропадут. Запланируйте ремонт на нерабочее время и предупредите людей заранее.
Ремонт файла базы утилитой chdbfl
Утилита chdbfl.exe проверяет физическую структуру файла 1Cv8.1CD: страницы, таблицы, индексы. Она работает только с файловыми базами и запускается без самой 1С. Это первый инструмент, если база не открывается вообще.
Где найти и как запустить
- Откройте папку установленной платформы:
C:\Program Files\1cv8\8.3.xx.xxxx\bin\, где8.3.xx.xxxx— номер вашей версии. - Запустите
chdbfl.exe. Лучше от имени администратора. - В поле «Имя файла БД» укажите путь к
1Cv8.1CD. - Включите флажок «Исправлять обнаруженные ошибки».
- Нажмите «Выполнить» и дождитесь окончания. На базе 5–10 ГБ это занимает от нескольких минут до получаса.
Утилита пишет в окно, что нашла и что исправила. Если ошибок нет, а база всё равно падает — проблема не в физической структуре файла, переходите к следующему разделу.
💡 Номер версии платформы, в папке которой лежит chdbfl.exe, должен быть не ниже того, на котором работала база. Если установлено несколько версий, берите утилиту из папки самой новой.
Тестирование и исправление информационной базы в Конфигураторе
Это главный встроенный инструмент ремонта. Он работает и с файловыми, и с клиент-серверными базами. Открывается так: Конфигуратор → Администрирование → Тестирование и исправление.
Какие флажки включать
| Режим | Что делает | Когда нужен |
|---|---|---|
| Реиндексация таблиц информационной базы | Перестраивает индексы | Медленные отборы, ошибки поиска |
| Проверка логической целостности | Проверяет внутреннюю структуру таблиц | Почти всегда |
| Проверка ссылочной целостности | Ищет ссылки на несуществующие объекты | <Объект не найден> в документах |
| Пересчёт итогов | Пересчитывает итоги регистров | Неверные остатки в отчётах |
| Сжатие таблиц информационной базы | Убирает пустое место из таблиц | Раздутый файл базы |
| Реструктуризация таблиц информационной базы | Пересоздаёт таблицы целиком | Тяжёлые повреждения; самый долгий режим |
Ниже есть переключатель «Только проверка» и «Тестирование и исправление». Первый прогон делайте в режиме проверки: увидите масштаб проблемы, ничего не меняя.
Что выбрать для битых ссылок
При проверке ссылочной целостности программа спросит, что делать со ссылками на несуществующие объекты:
- Создавать объекты — на месте потерянного элемента появится заглушка. Документы сохранят связь, вы потом найдёте заглушки и заполните их вручную.
- Удалять ссылки — реквизит станет пустым. Быстро, но информация о том, что там было, пропадёт.
- Не изменять — только отчёт, без правки.
Для учётной базы выбирайте «Создавать объекты». Пустой реквизит в проведённом документе — это сломанные движения. Заглушка хотя бы показывает, что именно потерялось.
Похожий выбор есть для частично потерянных объектов: создать, удалить или не трогать. Удаление здесь опаснее — исчезает весь объект.
Запуск из командной строки
Для регламентной проверки по расписанию тот же режим запускается пакетно:
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /IBCheckAndRepair -LogAndRefsIntegrity -RecalcTotals -BadRefCreate /Out "D:\Logs\check.log"
Для клиент-серверной базы вместо /F укажите /S "сервер\имя_базы". Полный список ключей — в справке платформы по параметрам командной строки. Пароль в bat-файле храните только там, где к файлу нет доступа у посторонних.
Ручной ремонт базы 1С, когда автоматика не справилась
Если тестирование не помогло или само падает на середине, остаются два пути: пересобрать базу через .dt и, для клиент-серверного варианта, ремонт на стороне СУБД.
Пересборка через выгрузку в .dt
Выгрузите базу в .dt и загрузите в новую. При загрузке платформа создаёт таблицы с нуля, поэтому многие скрытые повреждения структуры просто исчезают.
- В Конфигураторе:
Администрирование → Выгрузить информационную базу, сохраните файл.dt. - Создайте новую пустую базу в окне запуска («Добавить» → «Создание новой информационной базы» → без конфигурации).
- Откройте новую базу в Конфигураторе:
Администрирование → Загрузить информационную базу, выберите файл. - Запустите базу в режиме «1С:Предприятие» и проверьте ключевые отчёты: оборотно-сальдовую ведомость, остатки товаров, расчёты с контрагентами.
Если выгрузка обрывается с ошибкой, сначала прогоните chdbfl и тестирование, затем повторите выгрузку. Обрыв на одном и том же месте подсказывает, какая таблица повреждена: имя объекта обычно есть в тексте ошибки.
Клиент-серверная база: ремонт средствами СУБД
У клиент-серверной базы данные хранит СУБД, и часть повреждений лежит ниже уровня 1С. Тут нужен администратор сервера баз данных.
MS SQL Server. Проверку запускают командой:
DBCC CHECKDB ('имя_базы') WITH NO_INFOMSGS;
Если команда сообщает об ошибках согласованности, восстановление с параметрами REPAIR_REBUILD или REPAIR_ALLOW_DATA_LOSS требует однопользовательского режима базы. Режим REPAIR_ALLOW_DATA_LOSS удаляет повреждённые страницы вместе с данными — его применяют, только когда свежей копии нет. После ремонта на стороне СУБД обязательно прогоните тестирование и исправление в Конфигураторе: SQL Server чинит свои страницы, но не знает о ссылках между объектами 1С.
PostgreSQL. Для перестройки индексов используют REINDEX DATABASE имя_базы;, для служебной очистки — VACUUM ANALYZE;. Перед этим остановите работу пользователей. Глубокие повреждения файлов кластера PostgreSQL обычно лечатся только восстановлением из копии.
Перезапуск службы сервера 1С или СУБД оборвёт все сеансы на всех базах этого сервера, а не только на ремонтируемой. Делайте это вне рабочего времени.
Когда остаётся только восстановление из резервной копии
Бывает, что ремонт формально проходит, но данных уже нет: удалены тысячи объектов, итоги не сходятся, документы пусты. Тогда честнее откатиться на копию и потерять день работы, чем месяц разбираться с заглушками.
Признаки того, что пора откатываться:
- 🔁 тестирование создало сотни объектов-заглушек;
- 📄 после ремонта пропали проведённые документы за период;
- 🧮 оборотно-сальдовая ведомость не совпадает с последней сданной отчётностью.
Как откатиться без потери свежих данных:
- Восстановите копию в отдельную базу, не поверх рабочей.
- Сравните период: что успели ввести между датой копии и сбоем.
- Документы этого периода перенесите из повреждённой базы обработкой выгрузки в XML или введите вручную, если их немного.
- Только после сверки переключите пользователей на восстановленную базу.
💡 Повреждённую базу не удаляйте ещё хотя бы месяц. Из неё может понадобиться достать отдельный документ или справочник.
Профилактика: как не доводить базу до ремонта
Большинство повреждений файловой базы связано с тем, что запись в 1Cv8.1CD оборвалась на середине. Отсюда и меры:
- 🔌 ИБП на сервере или компьютере с базой. Отключение питания во время записи — классическая причина
Файл базы данных поврежден. - 🌐 Файловая база — не по Wi-Fi и не через VPN. Обрывы связи с сетевой папкой портят файл. Для удалённой работы публикуйте базу на веб-сервере или переходите на клиент-серверный вариант.
- 👥 Файловая база рассчитана на небольшую нагрузку. Когда в ней одновременно работают больше 5–10 человек, растут блокировки и риск сбоев.
- 🛡️ Исключите каталог базы из проверки антивирусом. Сканирование файла во время записи мешает платформе.
- 💾 Автоматическая копия каждый день, плюс хранение копий не на том же диске, где база. Проверяйте копию: раз в месяц разверните её в тестовую базу.
- 🧹 Регламентное тестирование раз в месяц или квартал: реиндексация, логическая целостность, пересчёт итогов через пакетный запуск ночью.
- ⏏️ Не завершайте процесс
1cv8.exeв диспетчере задач во время проведения или закрытия месяца.
Типичные ошибки при восстановлении базы 1С
- Ремонт без копии. Тестирование в режиме исправления меняет данные необратимо. Если результат хуже исходного, вернуться некуда.
- Все флажки сразу на большой базе. Реструктуризация и сжатие на базе 50 ГБ идут часами. Начинайте с проверки и нужных режимов, тяжёлые добавляйте, только если первые не помогли.
- «Удалять ссылки» по умолчанию. Реквизиты обнуляются, движения документов становятся неверными, и это выясняется уже при сдаче отчётности.
- Ремонт копии вместо оригинала и наоборот. Перед запуском
chdbflпроверьте путь к файлу: у многих в списке баз висят одноимённые копии. - Очистка кэша как «ремонт». Удаление папок в
%APPDATA%безопасно для данных, но не чинит саму базу. Если ошибка на всех компьютерах — дело не в кэше.
Частые вопросы
Можно ли починить базу 1С, если Конфигуратор не открывается?
chdbfl.exe работает без запуска 1С. После неё Конфигуратор обычно открывается, и можно продолжить тестированием.