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