Повреждённая информационная база 1С 8.3: диагностика, chdbfl, тестирование и откат на копию

· 9 мин

Содержание

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

Порядок важен. Каждый следующий способ сильнее вмешивается в данные, поэтому ремонт идёт от безопасного к радикальному. Всё ниже относится к платформе 8.3 и к любой типовой конфигурации: БП 3.0, ЗУП 3.1, УТ 11 чинятся одинаково, потому что повреждение живёт на уровне платформы и таблиц, а не прикладного решения.

Признаки того, что база 1С повреждена

Повреждение редко видно сразу. Чаще база открывается, но отдельные действия падают с ошибкой. Типичные симптомы:

  • 🛑 при запуске: Файл базы данных поврежден или Ошибка формата потока;
  • 🧩 в списках и документах вместо реквизитов <Объект не найден> (42:a1b2...) — битая ссылка;
  • 📉 остатки в отчётах не сходятся с движениями, хотя документы проведены правильно — сбились итоги регистров;
  • 🐢 база внезапно стала открываться в разы дольше, а файл 1Cv8.1CD вырос без видимой причины;
  • ❌ при открытии конфигурации: Нарушение целостности структуры конфигурации;
  • 💥 программа закрывается без сообщения на одном и том же документе или отчёте.

Не всякая ошибка — порча базы. Ошибка формата потока часто лечится очисткой кэша, а не ремонтом таблиц. Поэтому сначала отделите «сломался клиент» от «сломались данные».

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

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

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

Как скопировать файловую базу

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

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

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

Делайте полный бэкап средствами СУБД: в MS SQL Server — через Backup Database в SQL Server Management Studio, в PostgreSQL — через pg_dump. Копия на уровне СУБД надёжнее выгрузки .dt, потому что не зависит от того, прочитает ли 1С повреждённые таблицы.

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

Ремонт файла базы утилитой chdbfl

Утилита chdbfl.exe проверяет физическую структуру файла 1Cv8.1CD: страницы, таблицы, индексы. Она работает только с файловыми базами и запускается без самой 1С. Это первый инструмент, если база не открывается вообще.

Где найти и как запустить

  1. Откройте папку установленной платформы: C:\Program Files\1cv8\8.3.xx.xxxx\bin\, где 8.3.xx.xxxx — номер вашей версии.
  2. Запустите chdbfl.exe. Лучше от имени администратора.
  3. В поле «Имя файла БД» укажите путь к 1Cv8.1CD.
  4. Включите флажок «Исправлять обнаруженные ошибки».
  5. Нажмите «Выполнить» и дождитесь окончания. На базе 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 и загрузите в новую. При загрузке платформа создаёт таблицы с нуля, поэтому многие скрытые повреждения структуры просто исчезают.

  1. В Конфигураторе: Администрирование → Выгрузить информационную базу, сохраните файл .dt.
  2. Создайте новую пустую базу в окне запуска («Добавить» → «Создание новой информационной базы» → без конфигурации).
  3. Откройте новую базу в Конфигураторе: Администрирование → Загрузить информационную базу, выберите файл.
  4. Запустите базу в режиме «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С или СУБД оборвёт все сеансы на всех базах этого сервера, а не только на ремонтируемой. Делайте это вне рабочего времени.

Когда остаётся только восстановление из резервной копии

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

Признаки того, что пора откатываться:

  • 🔁 тестирование создало сотни объектов-заглушек;
  • 📄 после ремонта пропали проведённые документы за период;
  • 🧮 оборотно-сальдовая ведомость не совпадает с последней сданной отчётностью.

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

  1. Восстановите копию в отдельную базу, не поверх рабочей.
  2. Сравните период: что успели ввести между датой копии и сбоем.
  3. Документы этого периода перенесите из повреждённой базы обработкой выгрузки в XML или введите вручную, если их немного.
  4. Только после сверки переключите пользователей на восстановленную базу.

💡 Повреждённую базу не удаляйте ещё хотя бы месяц. Из неё может понадобиться достать отдельный документ или справочник.

Профилактика: как не доводить базу до ремонта

Большинство повреждений файловой базы связано с тем, что запись в 1Cv8.1CD оборвалась на середине. Отсюда и меры:

  • 🔌 ИБП на сервере или компьютере с базой. Отключение питания во время записи — классическая причина Файл базы данных поврежден.
  • 🌐 Файловая база — не по Wi-Fi и не через VPN. Обрывы связи с сетевой папкой портят файл. Для удалённой работы публикуйте базу на веб-сервере или переходите на клиент-серверный вариант.
  • 👥 Файловая база рассчитана на небольшую нагрузку. Когда в ней одновременно работают больше 5–10 человек, растут блокировки и риск сбоев.
  • 🛡️ Исключите каталог базы из проверки антивирусом. Сканирование файла во время записи мешает платформе.
  • 💾 Автоматическая копия каждый день, плюс хранение копий не на том же диске, где база. Проверяйте копию: раз в месяц разверните её в тестовую базу.
  • 🧹 Регламентное тестирование раз в месяц или квартал: реиндексация, логическая целостность, пересчёт итогов через пакетный запуск ночью.
  • ⏏️ Не завершайте процесс 1cv8.exe в диспетчере задач во время проведения или закрытия месяца.

Типичные ошибки при восстановлении базы 1С

  • Ремонт без копии. Тестирование в режиме исправления меняет данные необратимо. Если результат хуже исходного, вернуться некуда.
  • Все флажки сразу на большой базе. Реструктуризация и сжатие на базе 50 ГБ идут часами. Начинайте с проверки и нужных режимов, тяжёлые добавляйте, только если первые не помогли.
  • «Удалять ссылки» по умолчанию. Реквизиты обнуляются, движения документов становятся неверными, и это выясняется уже при сдаче отчётности.
  • Ремонт копии вместо оригинала и наоборот. Перед запуском chdbfl проверьте путь к файлу: у многих в списке баз висят одноимённые копии.
  • Очистка кэша как «ремонт». Удаление папок в %APPDATA% безопасно для данных, но не чинит саму базу. Если ошибка на всех компьютерах — дело не в кэше.

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

Можно ли починить базу 1С, если Конфигуратор не открывается?
Для файловой базы — да: chdbfl.exe работает без запуска 1С. После неё Конфигуратор обычно открывается, и можно продолжить тестированием.
Сколько длится тестирование и исправление?
На базе в 2–3 ГБ с базовыми флажками — 10–30 минут. Реструктуризация больших баз занимает несколько часов.
Помогает ли обновление платформы при повреждении базы?
Само по себе нет. Но утилиту chdbfl и тестирование лучше запускать из версии платформы не ниже той, в которой работала база.
Пропадут ли данные после тестирования?
В режиме «Только проверка» — нет. В режиме исправления могут удалиться битые записи и объекты, поэтому и нужна копия.
Чем отличается chdbfl от тестирования в Конфигураторе?
chdbfl проверяет физическую структуру файла базы. Тестирование в Конфигураторе — логику данных 1С: ссылки, итоги, индексы. Для файловой базы обычно нужны оба.