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