База 1С выдаёт ошибки структуры и не открывается: что делать
Содержание
Базу 1С не «чинят» поверх рабочей копии. Сначала копируют файл 1Cv8.1CD (или делают бэкап SQL-базы), и только потом запускают любое исправление. Нарушение целостности системы 1С 8.3 чаще всего означает повреждение самой информационной базы, а не платформы: сбилась структура таблиц, порвался индекс, потерялась запись.
Типичные тексты, с которых всё начинается: Ошибка в структуре файла базы данных, Обнаружены ошибки в структуре таблиц, Нарушена целостность базы данных, Файл базы данных повреждён. Лечат это по нарастающей: сначала встроенное тестирование, потом chdbfl.exe для файловой базы, для клиент-серверной — средства СУБД.
Что сломалось и какая у вас база
Первое, что нужно знать, — тип базы. От него зависит весь маршрут.
- 📁 Файловая. Каталог с файлом
1Cv8.1CD. Открывается без сервера 1С, путь виден в списке баз. - 🖥️ Клиент-серверная. В списке баз указано имя сервера и имя базы, данные лежат в PostgreSQL или MS SQL Server.
Откройте окно запуска 1С, выделите базу и нажмите «Изменить»: в первой строке будет либо «На данном компьютере или на компьютере в локальной сети» (файловая), либо «На сервере 1С:Предприятия» (клиент-серверная).
Затем определите, насколько всё плохо:
| Симптом | Что это обычно значит |
|---|---|
| База открывается, но отчёт или документ падает с ошибкой | Повреждена отдельная таблица или индекс |
| База не открывается, сообщение про структуру файла | Повреждён заголовок или служебные таблицы |
| Ошибки появились после сбоя питания или зависания | Запись оборвалась на середине |
Ошибки при загрузке .dt | Выгрузка сделана из уже битой базы |
Не запускайте проверку на единственном экземпляре файла. Сначала скопируйте 1Cv8.1CD в другое место и убедитесь, что копия открывается как файл целиком (размер совпадает с оригиналом). Если исправление пойдёт не так, вы вернётесь к исходному состоянию.
chdbfl.exe.chdbfl.exe. Клиент-серверная: проверка средствами СУБД, затем выгрузка в .dt с последующей загрузкой в новую базу.Тестирование и исправление средствами платформы
Это самый безопасный способ, с него и начинайте. Он встроен в Конфигуратор и работает как для файловых, так и для клиент-серверных баз.
Подготовка
- Все пользователи должны выйти из базы. Проверьте в консоли администрирования или в
Администрирование → Активные пользователи(если база ещё открывается). - Сделайте копию: для файловой базы — скопируйте каталог целиком, для серверной — бэкап средствами СУБД.
- Запустите «1С:Предприятие» в режиме Конфигуратор и откройте нужную базу.
Запуск
- В меню Конфигуратора выберите
Администрирование → Тестирование и исправление. - Включите нужные проверки:
- логическую целостность информационной базы;
- ссылочную целостность;
- реструктуризацию таблиц информационной базы;
- пересчёт итогов;
- сжатие таблиц информационной базы.
- В блоке «Режим» выберите «Тестирование и исправление». Если хотите сначала только посмотреть масштаб бед, поставьте «Только тестирование».
- Нажмите «Выполнить».
Для базы потребуется монопольный доступ: платформа сама предложит его, если в базе остался чей-то сеанс. Закройте сеансы и повторите.
Как читать результат
Окно с сообщениями покажет, что найдено и что исправлено. Нормальный исход: «Тестирование завершено» без ошибок или с перечнем исправленного.
Ссылочная целостность — отдельная история. Платформа может обнаружить «битые» ссылки на несуществующие объекты. Для них доступны два варианта: создавать объекты или очищать ссылки. Очистка безопаснее для учёта, но потеряет связь в документе; создание сохраняет ссылку, но в справочнике появится пустой элемент.
💡 Прогоните тестирование второй раз. Если во втором проходе ошибок нет, структура вернулась в норму. Если те же сообщения возвращаются — переходите к следующему способу.
Утилита chdbfl для файловой базы
chdbfl.exe лежит в каталоге bin установленной платформы, например C:\Program Files\1cv8\8.3.xx.xxxx\bin\chdbfl.exe (вместо xx.xxxx подставьте свой номер релиза). Она работает с файлом 1Cv8.1CD напрямую, без запуска платформы, поэтому помогает, когда Конфигуратор уже не может открыть базу
.
Утилита предназначена только для файловых баз. Для серверных она не подходит.
Порядок работы
- Закройте все программы и сеансы, которые держат файл базы. Проверьте, нет ли процессов
1cv8.exe,1cv8c.exeв диспетчере задач. - Сделайте копию
1Cv8.1CD. Это не формальность:chdbflпереписывает файл на месте. - Запустите
chdbfl.exeот имени администратора. - В поле «Имя файла» укажите путь к
1Cv8.1CD. - Поставьте флажок «Исправлять обнаруженные ошибки». Без него утилита только проверит файл.
- Нажмите «Выполнить» и дождитесь конца. На большой базе (десятки гигабайт) это может занять от получаса до нескольких часов.
После исправления
Утилита чинит низкоуровневую структуру файла, но не гарантирует, что данные в таблицах логически согласованы. Поэтому следом:
- Откройте базу в Конфигураторе и повторите
Администрирование → Тестирование и исправление. - Запустите базу в обычном режиме и проверьте последние документы: даты, суммы, проведённость.
- Выгрузите базу в
.dt(Администрирование → Выгрузить информационную базу) и загрузите в чистую новую базу. Это сбрасывает остатки мусорных структур.
Если chdbfl сообщает, что часть данных удалена или не может быть восстановлена, зафиксируйте это. Часть записей могла пропасть. Сверьте обороты и остатки с последним бэкапом до того, как пользователи продолжат вводить данные.
Когда и этого мало
Бывает, что chdbfl отработал, а база всё равно не открывается или тестирование снова находит ошибки. Тогда идут по запасному маршруту:
- Берут последний исправный бэкап и разворачивают его в отдельный каталог.
- Сравнивают, за какой период в повреждённой базе есть данные, которых нет в бэкапе.
- Если разрыв небольшой, документы за этот период вводят заново. Если большой, пробуют выгрузить из повреждённой базы нужные журналы документов в табличный вид и загрузить обработкой или перенести вручную.
- Не подключайте повреждённую базу обратно в рабочий контур, пока не прошла проверка на копии: пользователи продолжат вводить данные в испорченную структуру, и потери вырастут.
Если база нужна срочно, а бэкапа нет, обращайтесь к специалисту по восстановлению. Не запускайте исправление повторно десять раз подряд: каждый проход может удалять неисправимые записи.
Клиент-серверная база: проверка на уровне СУБД
Здесь chdbfl не поможет: данных в файле 1CD нет. База хранится в PostgreSQL или MS SQL Server, и сначала проверяют именно СУБД.
⚠️ Перед любой проверкой, которая требует остановить кластер или перезапустить службу, предупредите пользователей: сеансы оборвутся. Выбирайте нерабочее время.
Порядок действий
- Сделайте полный бэкап базы средствами СУБД и проверьте, что файл бэкапа читается.
- Запустите тестирование и исправление из Конфигуратора (раздел выше). Для серверной базы он штатно работает с монопольным доступом.
- Если Конфигуратор не помог или не открывает базу, проверьте саму СУБД.
MS SQL Server. Выполните DBCC CHECKDB по нужной базе. Команда проверяет физическую и логическую целостность и показывает найденные проблемы. Параметры исправления, которые удаляют данные, применяйте только на копии и только если нет свежего бэкапа: они могут стереть записи.
PostgreSQL. Проверьте журнал сервера на ошибки чтения страниц. Для индексов помогает REINDEX по повреждённой таблице или всей базе. Для освобождения места и обновления статистики используется VACUUM (с ANALYZE). Если есть признаки повреждения самих данных, надёжнее восстановиться из свежего бэкапа.
- Если СУБД чиста, а платформа всё равно видит ошибки, выгрузите базу в
.dtи загрузите в новую пустую базу на том же сервере. Старую оставьте до окончательной проверки.
Чего не делать: не удаляйте базу и кластер «чтобы пересоздать», пока не убедились, что бэкап читается и восстанавливается.
Аппаратные причины: откуда берётся порча
Если ошибка вернулась через неделю после лечения, дело не в базе. Искать нужно причину.
- 🔌 Отключение питания. Файловая база не любит жёсткого выключения: запись обрывается на середине. Помогает ИБП на компьютере, где лежит база, или на сервере.
- 💽 Диск. Битые сектора, износ SSD. Проверьте SMART диска, а на сервере — состояние массива RAID.
- 🌐 Сеть. Файловая база по сетевой папке или через Wi-Fi — частый источник порчи. При обрыве соединения запись не доходит до конца.
- 🛡️ Антивирус. Сканирует
1Cv8.1CDво время записи или блокирует файл. Добавьте каталог базы в исключения. - 👥 Много пользователей в файловой базе. Когда работает больше 10–15 человек, риск сбоя резко растёт. Это повод перенести базу на сервер.
- 🧠 Оперативная память. Редкий случай: сбойный модуль даёт случайные ошибки в разных местах. Проверьте память утилитой тестирования ОЗУ.
- 🗂️ Копирование на лету. Копировать файл, пока в нём работают, нельзя. Такая «копия» заведомо битая.
Сеть и диск проверяйте первыми: они причина большинства повторяющихся случаев.
Резервное копирование: что и как делать
Бэкап — единственное, что реально защищает от потери данных. Никакая утилита не вернёт то, что физически стёрто.
Какой бэкап нужен
| Способ | Что даёт | Ограничение |
|---|---|---|
Копия файла 1Cv8.1CD | Быстро, целиком | Только когда никто не работает |
Выгрузка .dt из Конфигуратора | Переносима между серверами и версиями | Нужен монопольный доступ, дольше |
| Бэкап средствами СУБД | Для серверных баз, возможна копия по расписанию | Нужен доступ администратора СУБД |
Практические правила
- Делайте копию ежедневно, а перед обновлением конфигурации, перед сворачиванием периода и перед «Удалением помеченных объектов» — отдельно.
- Храните копии не на том же диске, где лежит база. Минимум — второй физический диск; лучше сетевое хранилище или облако.
- Держите несколько поколений: 7 ежедневных, 4 еженедельных, 3 ежемесячных. Повреждение часто замечают не сразу, и вчерашняя копия уже может быть битой.
- Раз в квартал проверяйте восстановление: разверните копию в тестовую базу и откройте.
- Выгрузка
.dtиз повреждённой базы может пройти, но принести порчу с собой. Поэтому после загрузки в новую базу всё равно прогоните тестирование.
Частые вопросы
Можно ли запускать chdbfl на серверной базе?
1Cv8.1CD. Серверная база хранится в СУБД, и проверять её нужно средствами PostgreSQL или MS SQL Server.Потеряю ли я данные после исправления?
Тестирование зависло на проценте и стоит часами. Прерывать?
chdbfl.