Администрирование · 9 мин
Как исправить базу 1С: практическое руководство по восстановлению
Пошаговая инструкция по исправлению базы 1С: тестирование и исправление, утилита chdbfl.exe, проверка конфигурации, восстановление из резервной копии и типичные ошибки.
Повреждение базы 1С проявляется по-разному: программа не запускается, выдаёт ошибку «Файл базы данных поврежден», зависает при открытии документов или показывает нереальные итоги в отчётах. Причины обычно одни и те же — аварийное завершение работы (отключение электричества, сбой сети при файловой базе на общем ресурсе), нехватка места на диске, сбои жёсткого диска или некорректное прерывание обновления конфигурации.
Хорошая новость в том, что большинство повреждений файловых баз устраняется штатными средствами: встроенным механизмом «Тестирование и исправление» и служебной утилитой chdbfl.exe, которая входит в комплект поставки платформы. Для клиент-серверных баз (MS SQL, PostgreSQL) инструментарий другой, и лезть в него без понимания структуры СУБД опасно.
Главное правило, которое действует до любых исправлений: сначала сделайте копию базы. Любое исправление — это вмешательство в файл данных, и при неудачном исходе без копии откатиться будет некуда. Дальше разберём, как диагностировать проблему, какой инструмент выбрать и в каком порядке действовать.
Как понять, что база повреждена, и оценить масштаб проблемы
Не каждая ошибка 1С означает физическое повреждение файла базы. Часто «битая база» оказывается битым кэшем, проблемой с правами доступа или сетевой ошибкой. Прежде чем запускать исправление, убедитесь, что проблема именно в данных.
Типичные признаки реального повреждения: сообщение «Файл базы данных поврежден» с указанием пути к 1Cv8.1CD, ошибки вида «Ошибка формата потока» при обращении к конкретным объектам, аварийное завершение платформы при открытии определённых документов или журналов, расхождение итогов, которое не объясняется логикой учёта. Если же ошибка возникает только у одного пользователя или пропадает после очистки кэша — база, скорее всего, цела.
Проверьте целостность файла 1Cv8.1CD утилитой chdbfl
Очистите кэш: удалите базу из списка и добавьте заново
Завершите обновление в конфигураторе или восстановите копию
Проверьте размер базы, свободное место и фрагментацию
Первый шаг: резервная копия перед любыми исправлениями
Для файловой базы достаточно скопировать файл 1Cv8.1CD (и при желании весь каталог базы) в отдельную папку, пока все пользователи вышли из программы. Копировать файл при работающих пользователях нельзя — получите неконсистентную копию. Альтернатива — выгрузка в файл .dt через конфигуратор (Администрирование → Выгрузить информационную базу), но если база уже повреждена, выгрузка может оборваться с ошибкой.
Для клиент-серверной базы копию делают средствами СУБД (backup в MS SQL, pg_dump для PostgreSQL). Дополнительно полезно сделать выгрузку .dt из конфигуратора — она независима от СУБД и позволяет развернуть базу в другом окружении.
Исправление утилитой chdbfl.exe
Chdbfl.exe — штатная утилита проверки физической целостности файловых баз. Она находится в каталоге bin установленной платформы, например: C:\Program Files\1cv8\<версия>\bin\chdbfl.exe. Утилита работает напрямую с файлом 1Cv8.1CD и не требует запуска конфигуратора.
Порядок работы: закройте все сеансы 1С с этой базой, запустите chdbfl.exe, укажите путь к файлу 1Cv8.1CD, установите флажок «Исправлять обнаруженные ошибки» и нажмите «Выполнить». Сначала лучше запустить проверку без флажка исправления, чтобы оценить объём повреждений. Утилита проверяет низкоуровневую структуру файла: таблицы, индексы, свободные страницы — и исправляет то, что может исправить без потери логики данных.
Обратите внимание: chdbfl работает только с файловыми базами. Для клиент-серверных баз она бесполезна — там физическую целостность проверяют средствами СУБД (DBCC CHECKDB для MS SQL).
- 1Завершите все сеансы пользователей с базой
- 2Скопируйте файл 1Cv8.1CD в резервную папку
- 3Запустите chdbfl.exe из каталога bin платформы
- 4Укажите путь к 1Cv8.1CD и выполните проверку без исправления
- 5Если ошибки есть — повторите с флажком «Исправлять обнаруженные ошибки»
- 6Откройте базу в конфигураторе и запустите «Тестирование и исправление»
- 7Проверьте работу базы в пользовательском режиме
Тестирование и исправление в конфигураторе
Если chdbfl не нашёл физических повреждений, но ошибки остались, следующий шаг — конфигуратор: меню Администрирование → Тестирование и исправление. Этот механизм проверяет уже логическую структуру: ссылки на несуществующие объекты, целостность таблиц, соответствие данных метаданным.
В настройках доступны несколько проверок. «Реиндексация таблиц» перестраивает индексы — безопасная операция, часто ускоряет базу. «Проверка логической целостности» находит битые ссылки и несоответствия. «Проверка ссылочной целостности» ищет объекты, ссылающиеся на удалённые или отсутствующие записи — это самая частая причина ошибок вида «Объект не найден». «Пересчёт итогов» восстанавливает регистры накопления и бухгалтерии, если итоги «поплыли».
Ключевой выбор — режим обработки ошибок: «Не изменять» (только диагностика), «Очищать ссылки» (битые ссылки заменяются пустыми) или «Создавать объекты» (создаются пустые объекты-заглушки). Для первого прохода всегда выбирайте «Не изменять» и изучите протокол. Очистка ссылок безопаснее создания заглушек: заглушки потом приходится выискивать и удалять вручную.
Проверка конфигурации и восстановление после прерванного обновления
Отдельный класс проблем — ошибки после неудачного обновления конфигурации. Симптомы: база не открывается в режиме предприятия, требует завершить обновление, но обновление падает с ошибкой. В этом случае помогает проверка конфигурации: конфигуратор → Конфигурация → Проверка конфигурации с включённым пунктом «Логическая целостность» и, при необходимости, «Поиск некорректных ссылок».
Если обновление прервано, часто помогает повторный запуск «Обновление конфигурации базы данных» из конфигуратора — платформа продолжит с точки прерывания. Если конфигуратор тоже не открывается, остаётся восстановление из резервной копии и повторное обновление с предварительным устранением причины сбоя (нехватка места, разрыв сети).
Когда исправить не получается: восстановление из копии и крайние меры
Если ни chdbfl, ни тестирование и исправление не дали результата, самый надёжный путь — развернуть последнюю актуальную резервную копию и внести недостающие документы вручную. Потеря данных за несколько часов почти всегда дешевле, чем многочасовые попытки вытащить сильно повреждённую базу.
Промежуточный вариант — выгрузка повреждённой базы в .dt и загрузка в новую пустую базу: иногда при загрузке данные «пересобираются» и часть ошибок уходит. Также можно попробовать перенести данные обработкой «Выгрузка и загрузка данных XML» в чистую базу той же конфигурации, если повреждён только фрагмент данных.
Профилактика: как снизить риск повторного повреждения
Большинство повреждений файловых баз связано с инфраструктурой, а не с самой 1С. Настройте регулярное резервное копирование (хотя бы ежедневное копирование 1Cv8.1CD или выгрузку .dt по расписанию), поставьте источник бесперебойного питания на сервер с базой, следите за свободным местом на диске и состоянием самого диска (SMART).
Если база размещена на сетевом ресурсе и одновременно работает несколько пользователей, рассмотрите переход на клиент-серверный вариант или веб-серверную публикацию — файловый режим по сети наиболее уязвим к обрывам соединения. Регулярно (раз в месяц или квартал) запускайте тестирование в режиме «Не изменять» — это позволит обнаружить проблемы до того, как они станут критичными.
Что важно запомнить
Любое исправление начинается с резервной копии. Для файловых баз порядок такой: chdbfl → тестирование и исправление в конфигураторе → восстановление из копии, если не помогло. Профилактика — регулярные бэкапы, ИБП и контроль состояния диска.
Частые вопросы
Чем отличается chdbfl от «Тестирования и исправления»?
Chdbfl проверяет физическую структуру файла 1Cv8.1CD — страницы, таблицы, индексы на низком уровне. «Тестирование и исправление» работает с логикой данных: ссылочная целостность, итоги, соответствие метаданным. Обычно их применяют последовательно, а не вместо друг друга.
База лежит на SQL Server — chdbfl поможет?
Нет, утилита предназначена только для файловых баз. Для клиент-серверных баз физическую целостность проверяют средствами СУБД, например командой DBCC CHECKDB в MS SQL Server, а логическую — через «Тестирование и исправление» в конфигураторе.
Тестирование и исправление зависло — что делать?
На больших базах операция может идти несколько часов без видимого прогресса — это нормально. Прерывать процесс принудительно нельзя: файл останется в промежуточном состоянии. Дождитесь завершения; если процесс реально завис (нет нагрузки на диск и процессор несколько часов), восстанавливайте базу из копии, сделанной перед запуском.
Можно ли исправить базу, если резервной копии нет?
Можно попробовать, но сначала сделайте копию файла 1Cv8.1CD в текущем состоянии — даже повреждённый файл лучше сохранить до вмешательства. Затем действуйте по стандартной схеме: chdbfl, затем тестирование и исправление сначала в режиме диагностики.
После исправления в отчётах появились расхождения — это нормально?
Если при исправлении очищались битые ссылки или удалялись повреждённые записи, часть данных могла быть потеряна, и итоги изменятся. Сравните ключевые отчёты (ОСВ, взаиморасчёты) с данными из резервной копии и при необходимости восстановите документы вручную. Пересчёт итогов в режиме тестирования обычно выравнивает регистры.