Ремонт испорченной информационной базы 1С 8.3: от безопасной проверки до резервной копии
Содержание
Повреждённую базу данных 1С 8.3 восстанавливают в таком порядке: копия файла базы → Конфигуратор → Администрирование → Тестирование и исправление → утилита chdbfl.exe (только файловая база) → выгрузка и загрузка .dt → восстановление из резервной копии. Каждый следующий шаг радикальнее предыдущего, поэтому переходить к нему стоит, только если прошлый не помог.
Самостоятельно и без потери данных удаётся спасти большинство баз с повреждёнными индексами, итогами и битыми ссылками. Если же разрушена физическая структура файла 1Cv8.1CD или страницы таблиц СУБД, часть данных придётся брать из архива или восстанавливать вручную.
Как понять, что база действительно повреждена
Не каждая ошибка при запуске означает порчу базы. Часто виноват кэш, сеть или антивирус. Повреждение подозревают, когда сообщения повторяются у всех пользователей и на разных компьютерах.
Типичные признаки:
- 🛑 при открытии появляется
Файл базы данных поврежденилиНарушение целостности структуры конфигурации; - 🛑 на конкретном документе или справочнике падает
Ошибка формата потока; - 🛑 в списках видны строки вида
<Объект не найден> (123:a1b2c3...); - 🛑 остатки в отчётах не сходятся с документами, хотя проведение не менялось;
- 🛑 программа аварийно закрывается при открытии одного и того же объекта;
- 🛑 размер
1Cv8.1CDрезко изменился, а резервное копирование стало падать на чтении файла.
Сначала исключите простые причины. Очистите кэш клиента: запустите 1С с параметром /ClearCache или удалите каталоги базы в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8 (сеансы этой базы на компьютере должны быть закрыты). Проверьте, открывается ли база с другого рабочего места. Если ошибка исчезла — база цела.
Отчего портятся базы и почему от причины зависит способ ремонта
Причина подсказывает, где искать поломку. Логическую ошибку данных лечит встроенное тестирование, а физическое повреждение файла — только утилита или архив.
| Причина | Что обычно ломается | С чего начинать |
|---|---|---|
| Отключение питания, зависание компьютера во время записи | Страницы файла 1Cv8.1CD, индексы | chdbfl.exe, затем тестирование |
| Разрыв сети при работе с файловой базой по общей папке | Отдельные записи, итоги | Тестирование и исправление |
| Антивирус или резервное копирование, заблокировавшие файл на ходу | Структура файла | chdbfl.exe |
| Ошибки диска, переполненный том | Физические страницы | Проверка диска, затем chdbfl.exe или архив |
| Прерванное обновление конфигурации | Конфигурация базы данных | Резервная копия, сделанная перед обновлением |
| Сбой сервера СУБД | Таблицы и индексы СУБД | DBCC CHECKDB и средства СУБД |
| Удаление объектов напрямую, без контроля ссылок | Ссылочная целостность | Тестирование с исправлением ссылок |
Файловые базы страдают чаще клиент-серверных. Их запись идёт в один файл, и любой обрыв посреди операции оставляет его в неполном состоянии. Особенно рискованна работа с файловой базой по Wi-Fi или через VPN.
Подготовка: что сделать до любых исправлений
Все методы ниже меняют данные. Если что-то пойдёт не так, нужна точка отката.
- Попросите пользователей выйти из базы. Тестирование,
chdbfl.exeи загрузка.dtтребуют монопольного доступа. - Для файловой базы скопируйте всю папку базы, а не только
1Cv8.1CD, на другой диск. - Для клиент-серверной базы сделайте резервную копию средствами СУБД (полный бэкап в MS SQL Server или
pg_dumpв PostgreSQL). - Проверьте свободное место: на время тестирования и сжатия нужно не меньше двух объёмов базы.
- Если причина — диск, сначала проверьте его (
chkdskдля Windows) и перенесите копию базы на исправный носитель.
Ремонтируйте копию, а не единственный экземпляр базы. Утилиты исправляют ошибки удалением повреждённых записей. Без копии вернуть удалённое уже не получится.
Попытка сделать выгрузку в .dt до ремонта тоже полезна. Если выгрузка прошла, у вас есть полноценный архив. Если упала — сообщение об ошибке укажет на повреждённую таблицу.
Метод 1. Тестирование и исправление информационной базы в Конфигураторе
Это первый и самый безопасный способ восстановить базу 1С 8.3. Он работает и для файловых, и для клиент-серверных баз.
Запуск проверки
- Откройте базу в режиме Конфигуратора.
- Выберите
Администрирование → Тестирование и исправление. - Сначала отметьте только проверки и режим «Тестирование» без исправления. Так вы увидите масштаб проблемы.
- Если ошибки найдены, запустите повторно с режимом «Тестирование и исправление».
Какие флажки ставить
| Флажок | Что делает | Когда нужен |
|---|---|---|
| Реиндексация таблиц информационной базы | Перестраивает индексы | Медленные списки, ошибки поиска и сортировки |
| Проверка логической целостности | Проверяет структуру записей | Почти всегда |
| Проверка ссылочной целостности | Ищет ссылки на несуществующие объекты | «Объект не найден» в списках |
| Пересчёт итогов | Пересчитывает итоги регистров | Остатки не сходятся |
| Сжатие таблиц | Освобождает неиспользуемое место | После удаления данных, для файловой базы |
| Реструктуризация таблиц | Пересоздаёт таблицы | Тяжёлые случаи, занимает много времени |
Режимы для битых ссылок
Здесь решается судьба данных. При ссылках на несуществующие объекты доступны три варианта:
- ✅ Создавать объекты — программа создаёт пустые элементы-заглушки. Документы сохраняют ссылки, а вы потом заполняете или объединяете заглушки. Самый щадящий вариант.
- ⚠️ Очищать ссылки — поле в документе станет пустым. Данные о том, что там было, теряются.
- ℹ️ Не изменять — ошибки только попадут в протокол.
При частичной потере объектов выбор похожий: создавать объекты или удалять их. Для рабочей базы с бухгалтерией выбирайте «создавать». Удалённый документ вместе с движениями молча исчезнет из отчётов.
Запустить ту же проверку можно из командной строки, например ночью: 1cv8.exe DESIGNER /F "D:\Bases\Buh" /N Админ /P пароль /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals -BadRefCreate -BadDataCreate /Out "D:\log.txt". Для серверной базы вместо /F используют /S "сервер\база".
После завершения откройте протокол. Если в нём остались неисправленные ошибки или тестирование прервалось с сообщением о повреждении файла, переходите к следующему методу.
Метод 2. Утилита chdbfl.exe для файла 1Cv8.1CD
Если файловая база не открывается вообще, Конфигуратор до тестирования не дойдёт. На этот случай в поставке платформы есть утилита проверки физической целостности chdbfl.exe. Для клиент-серверных баз она не применяется.
Где взять: в каталоге установленной платформы, например C:\Program Files\1cv8\8.3.24.1342\bin\chdbfl.exe. Номер версии в пути у вас будет свой. Берите утилиту из той же версии платформы, которой вы открываете базу.
Порядок работы:
- Убедитесь, что никто не работает с базой. Утилита требует монопольного доступа.
- Запустите
chdbfl.exeот имени администратора. - В поле имени файла укажите путь к
1Cv8.1CD. - Отметьте флажок «Исправлять обнаруженные ошибки», если копия базы уже сделана.
- Нажмите «Выполнить» и дождитесь окончания. На базе в несколько гигабайт это может занять от десятков минут до нескольких часов.
- После утилиты обязательно выполните тестирование и исправление из метода 1.
chdbfl.exe правит физический уровень: страницы, размещение записей, индексы. Логическую целостность данных она не проверяет. Поэтому шаг 6 не пропускайте.
Если база клиент-серверная
Вместо chdbfl.exe проверку физического уровня делают средствами СУБД:
- в MS SQL Server —
DBCC CHECKDB, сначала без параметров исправления; - в PostgreSQL — проверка журнала сервера,
VACUUMиREINDEXдля повреждённых таблиц.
-- MS SQL Server: только проверка, без исправлений
DBCC CHECKDB ('buh_base') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Режим REPAIR_ALLOW_DATA_LOSS в DBCC CHECKDB удаляет повреждённые страницы и может оставить базу 1С в несогласованном состоянии. Используйте его только на копии и только если резервной копии СУБД нет. Перед этим базу переводят в однопользовательский режим, и все сеансы 1С обрываются.
Метод 3. Выгрузка в .dt и ручной разбор файла
Когда тестирование завершилось, но ошибки остались, помогает пересоздание базы через выгрузку.
Выгрузка и загрузка
- В Конфигураторе:
Администрирование → Выгрузить информационную базу, сохраните файл.dt. - Создайте новую пустую базу в другом каталоге или на сервере.
- В новой базе:
Администрирование → Загрузить информационную базу, укажите сохранённый.dt. - Запустите тестирование и исправление уже в новой базе.
При загрузке платформа строит все таблицы заново. Остатки повреждённой физической структуры не переносятся. Старую базу не удаляйте, пока не проверите отчёты в новой.
Если выгрузка падает на конкретной таблице, имя таблицы в сообщении подскажет, какой объект повреждён. Иногда помогает удалить этот объект средствами 1С (например, документ-«пустышку» после тестирования) и повторить выгрузку.
Сторонние инструменты для опытных пользователей
Если файл 1Cv8.1CD не открывают ни платформа, ни chdbfl.exe, остаются сторонние средства:
- Tool_1CD — бесплатная утилита для чтения файла
1CDнапрямую. Позволяет просмотреть таблицы, сохранить конфигурацию и выгрузить уцелевшие данные. - v8unpack — распаковывает и собирает контейнеры
.cf,.cfe,.epf. С файлом данных она не работает, зато помогает, когда повреждён именно файл конфигурации или внешняя обработка.
Эти инструменты не поддерживаются фирмой 1С. Работайте с ними только на копии файла. Результатом обычно становится не готовая база, а набор данных, который потом переносят в чистую базу обработками.
Метод 4. Восстановление из резервной копии
Если ремонт не дал рабочей базы, единственный путь без догадок — архив. Чем свежее копия, тем меньше работы.
| Вид копии | Как восстановить |
|---|---|
Файл .dt | Новая пустая база → Администрирование → Загрузить информационную базу |
| Копия папки файловой базы | Закрыть базу, заменить папку на копию целиком |
| Бэкап MS SQL Server или PostgreSQL | Восстановить средствами СУБД в новую базу, затем зарегистрировать её в кластере 1С |
| Автоматическая копия перед обновлением | Загрузить её .dt или файл так же, как выше |
Что делать с данными после даты копии:
- Определите период потерь: от даты архива до дня сбоя.
- Если повреждённая база хоть частично открывается, выгрузите из неё документы за этот период. Подойдёт типовая «Выгрузка и загрузка данных XML» с диска ИТС или ваш обмен.
- Остальное восстановите по первичке, выпискам банка и данным ЭДО. Документы ЭДО и выписки можно загрузить повторно.
- Сверьте остатки по ключевым счетам и регистрам с последними отчётами, сданными в налоговую.
Когда нужен специалист и сколько это стоит
Звать программиста 1С стоит, если:
chdbfl.exeзавершается с ошибкой или после неё база по-прежнему не открывается;- выгрузка
.dtпадает, а резервной копии нет; - клиент-серверная база
с ошибками
DBCC CHECKDB; - после тестирования пропали проводки или документы, и непонятно какие.
Ориентировочные цены у франчайзи и частных специалистов по рынку:
| Работа | Примерная стоимость |
|---|---|
| Диагностика, тестирование и исправление | 2 000–5 000 ₽ |
| Восстановление файловой базы с физическими повреждениями | 5 000–15 000 ₽ |
Извлечение данных из неоткрываемого 1CD, перенос в чистую базу | от 15 000 ₽ и выше, часто почасово |
| Восстановление клиент-серверной базы на уровне СУБД | от 10 000 ₽, зависит от объёма |
Цены зависят от региона, размера базы и срочности. Если есть договор сопровождения, первичная диагностика часто входит в него.
Профилактика: как не доводить базу до повреждения
Большинство поломок возникает из-за обрыва записи. Поэтому защищают в первую очередь питание, сеть и копии.
Копия, которую ни разу не пробовали развернуть, — не гарантия. Раз в квартал загрузите свежий архив в отдельную базу и откройте пару отчётов.
Для файловых баз больше чем на 5–10 одновременных пользователей подумайте о переходе на клиент-серверный вариант. СУБД пишет данные через журнал транзакций и переносит обрывы связи гораздо спокойнее.
Частые вопросы о ремонте базы 1С
Можно ли запускать chdbfl.exe, пока бухгалтер работает в базе?
Почему после тестирования в справочниках появились элементы «Объект не найден»?
Сколько времени идёт тестирование большой базы?
Поможет ли обновление платформы при повреждении базы?
chdbfl.exe иногда справляются там, где старая сборка падала.Восстановится ли конфигурация, если повреждена только она?
.cf той же конфигурации и релиза, загрузите его в Конфигураторе и обновите конфигурацию базы данных. Данные при этом остаются, но доработки, которых нет в .cf, пропадут.