К статье
Практический материал

Администрирование · 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. 1
    Попросите всех пользователей выйти из программы и проверьте, что не осталось зависших процессов 1cv8.exe
  2. 2
    Закройте конфигуратор и агенты, обращающиеся к базе, отключите регламентные задания
  3. 3
    Скопируйте файл 1Cv8.1CD (и весь каталог базы) в отдельную папку или на другой диск — это страховочная копия
  4. 4
    Проверьте свободное место на диске: для восстановления нужно не меньше объёма самой базы
  5. 5
    Проверьте диск на ошибки штатными средствами ОС, чтобы исключить аппаратную причину

Если база лежит на сетевом диске, на время восстановления скопируйте её на локальный диск компьютера, где будет выполняться работа. Это исключит влияние сети и ускорит процесс: chdbfl и тестирование-исправление на больших базах работают часами.

Также проверьте наличие свежих резервных копий: dt-выгрузок, SQL-бэкапов, копий каталога базы. Если есть копия за прошлый день, а восстановление затягивается, иногда рациональнее развернуть копию и вручную повторить утренние документы, чем сутки ждать результата ремонта.

Восстановление утилитой chdbfl.exe

chdbfl.exe — штатная утилита проверки физической целостности файловой базы. Она устанавливается вместе с платформой и лежит в каталоге bin конкретной версии платформы, например: C:\Program Files\1cv8\<номер версии>\bin\chdbfl.exe.

Порядок работы с утилитой:

  1. Запустите chdbfl.exe и укажите путь к файлу 1Cv8.1CD.
  2. Установите флажок «Исправлять обнаруженные ошибки».
  3. Нажмите «Выполнить» и дождитесь завершения — на больших базах это занимает значительное время, прерывать процесс нельзя.
  4. По окончании изучите отчёт: утилита покажет, какие таблицы были повреждены и что удалось исправить.

Утилита работает на уровне физических страниц файла: она не знает о логике данных и может удалить повреждённые записи целиком. Поэтому после chdbfl обязательно проверяйте базу в конфигураторе и сверяйте ключевые данные — обороты, остатки, остатки по регистрам.

Тестирование и исправление в конфигураторе

После chdbfl (или вместо него, если база открывается) запустите штатный механизм: конфигуратор → меню «Администрирование» → «Тестирование и исправление». Инструмент работает на уровне логической структуры и умеет больше, чем chdbfl.

Рекомендуемый набор проверок для первого прохода:

  • «Реиндексация таблиц информационной базы» — перестраивает индексы, часто устраняет ошибки чтения;
  • «Проверка логической целостности информационной базы» — основной режим, находит битые ссылки и нарушения структуры таблиц;
  • «Проверка ссылочной целостности» — выявляет объекты со ссылками на несуществующие записи.

Режим «Проверка физической целостности» в файловом варианте фактически дублирует chdbfl — его можно пропустить, если утилита уже отработала. Пункт «Сжатие таблиц» на первом проходе лучше не включать: он сильно удлиняет процесс, а при повреждённой базе добавляет риск.

Для ссылочной целостности конфигуратор предложит варианты обработки битых ссылок: создать объекты-заглушки, очистить ссылки или удалить объекты. Для рабочей базы безопаснее создавать объекты-заглушки — потом по ним можно понять, какие данные потеряны, и восстановить вручную.

Типичные ошибки при восстановлении
01
Запуск восстановления без копии файла — при неудаче данные теряются окончательно
02
Прерывание chdbfl или тестирования-исправления кнопкой «Отмена» — файл остаётся в промежуточном состоянии и разрушается сильнее
03
Пропуск проверки данных после восстановления — база открывается, но обороты и остатки не сходятся с реальностью
04
Возврат базы на тот же сбойный диск или нестабильную сетевую папку — повторное разрушение через несколько дней
05
Одновременный запуск нескольких инструментов восстановления на одном файле

Выгрузка и загрузка через dt как финальная проверка

Если база после восстановления открывается в конфигураторе, выполните полную выгрузку в файл .dt («Администрирование» → «Выгрузить информационную базу»), а затем загрузите её в новую пустую базу. Этот приём выполняет две функции.

Во-первых, выгрузка dt — это стресс-тест: если файл выгрузился без ошибок, значит, все таблицы читаются целиком. Во-вторых, загрузка в новую базу создаёт файл с чистой, заново построенной структурой — без фрагментации и остатков повреждённых областей. Многие администраторы после серьёзного разрушения переводят работу именно на такую пересобранную базу.

Учтите ограничение: dt-выгрузка возможна только из конфигуратора и требует монопольного доступа. На объёмных базах процесс занимает много времени и требует свободного места под файл выгрузки.

Маршрут решения

Как выбрать действие

База не открывается ни в режиме предприятия, ни в конфигуратореЗапускайте chdbfl.exe на копии файла, затем повторите попытку открытия
База открывается, но выдаёт ошибки при работеВыполните тестирование и исправление с реиндексацией и проверкой логической целостности
Восстановление прошло, но данные вызывают сомненияСделайте выгрузку dt и загрузку в новую базу, сверьте обороты и остатки
Ни один инструмент не помогВосстанавливайте из резервной копии или передавайте файл профильным специалистам по восстановлению 1С
База серверная (SQL)Не трогайте файлы вручную — используйте средства СУБД (DBCC CHECKDB для MS SQL) и бэкапы

Особенности для серверных баз на SQL

В клиент-серверном варианте файл 1Cv8.1CD отсутствует, а chdbfl неприменим. Диагностика ведётся средствами СУБД: для MS SQL Server это команда DBCC CHECKDB, для PostgreSQL — проверка журналов и, при необходимости, pg_resetwal в тяжёлых случаях. Прямое вмешательство в таблицы SQL в обход 1С крайне рискованно: структура метаданных хранится в специфическом виде, и ручные правки почти гарантированно усугубят ситуацию.

Безопасная последовательность для серверной базы: остановить работу пользователей → сделать бэкап средствами СУБД в текущем (даже повреждённом) состоянии → выполнить диагностику СУБД → при подтверждённых повреждениях восстановить из последнего целого бэкапа → прогнать тестирование и исправление в конфигураторе уже на восстановленной базе.

Перед любыми работами по восстановлению полезно записать точный текст ошибки и момент её появления: при открытии базы, при проведении конкретного документа, при обращении к конкретному отчёту. Это сильно сужает круг повреждённых таблиц и помогает понять, что именно потеряно, если часть данных восстановить не удастся.
ПЗ
Практическое замечание

Проверка результата и профилактика повторного разрушения

То, что база открылась, ещё не означает, что она здорова. После восстановления обязательно выполните контрольные проверки: сформируйте оборотно-сальдовую ведомость и сверьте с последней заведомо корректной копией или распечаткой, проверьте остатки по складам и кассе, проведите несколько тестовых документов, откройте журналы, в которых чаще всего работали пользователи.

Контрольные точки

Как проверить результат восстановления

Открытие базы в режиме предприятия и конфигураторе
Норма

Открывается быстро, без сообщений об ошибках

Тревожный признак

Ошибки чтения таблиц, зависания при запуске

Оборотно-сальдовая ведомость
Норма

Остатки совпадают с данными до аварии

Тревожный признак

Пустые или искажённые обороты по счетам

Выгрузка dt
Норма

Файл выгружается полностью без ошибок

Тревожный признак

Выгрузка обрывается на конкретной таблице

Проведение новых документов
Норма

Документы проводятся, движения формируются

Тревожный признак

Ошибки записи регистров, битые ссылки

Чтобы ситуация не повторилась, устраните первопричину: поставьте источник бесперебойного питания на компьютер с базой, откажитесь от работы по Wi-Fi и нестабильным сетевым папкам, добавьте каталог базы в исключения антивируса, настройте автоматические резервные копии (ежедневные dt-выгрузки или SQL-бэкапы) и контролируйте свободное место на диске. Для баз с несколькими пользователями серьёзно рассмотрите переход на клиент-серверный вариант — он принципиально устойчивее к таким разрушениям.

Итог

Что важно запомнить

При сообщении «разрушена структура базы данных» сначала остановите работу и сделайте копию файла базы. Восстанавливайте по нарастающей: chdbfl → тестирование и исправление → выгрузка/загрузка dt. После восстановления сверьте данные и устраните причину сбоя, иначе разрушение повторится.

Частые вопросы

Можно ли восстановить базу, если резервной копии нет вообще?

Да, шансы есть: chdbfl и тестирование-исправление нередко возвращают базу к жизни даже при серьёзных повреждениях. Но часть записей из повреждённых таблиц может быть потеряна безвозвратно, поэтому после восстановления обязательна сверка остатков и оборотов с бумажными документами или смежными системами.

chdbfl завис на несколько часов — прерывать или ждать?

Если жёсткий диск активно работает (индикатор активности, рост временных файлов), процесс идёт — прерывать его опасно, файл останется в промежуточном состоянии. Для базы в десятки гигабайт многочасовая работа нормальна. Прерывание оправдано только при полном отсутствии дисковой активности длительное время.

База восстановилась, но некоторые документы пропали. Что делать?

Если перед восстановлением вы делали копию повреждённого файла, можно попробовать извлечь недостающие данные из неё — например, открыть копию после частичного ремонта и перенести документы через выгрузку-загрузку данных в XML. Если копии нет, документы придётся вводить заново по первичке.

Поможет ли переустановка платформы 1С?

Нет. Платформа — это только программа, а разрушена сама база данных. Переустановка платформы не затрагивает файл 1Cv8.1CD и не исправляет его структуру. Исключение — редкие случаи, когда ошибку вызывает повреждённый кэш метаданных: тогда помогает очистка кэша в каталоге пользователя, а не переустановка.

Ошибка появляется только у одного пользователя — база разрушена?

Скорее всего, нет. Если у остальных пользователей база работает нормально, проблема локальная: повреждённый кэш метаданных на конкретном компьютере, сетевые сбои или права доступа. Начните с очистки кэша (удаление базы из списка и повторное добавление) и проверки сетевого подключения этого рабочего места.

Как защитить файловую базу от разрушения в будущем?

Минимальный набор: источник бесперебойного питания, ежедневные автоматические копии (dt или копирование каталога в нерабочее время), исключение каталога базы из проверки антивируса, запрет работы через Wi-Fi и облачные синхронизаторы каталога базы. При росте числа пользователей переходите на клиент-серверный вариант — он переносит целостность данных на уровень СУБД.