Диск с базой 1С перестал читаться: снимаем образ, достаём 1CD и проверяем данные

· 11 мин

Содержание

Если сломался жёсткий диск с базой 1С, первое действие — выключить компьютер и больше не включать с этим диском, пока не снят посекторный образ. Восстанавливают данные с образа, а не с живого диска: каждый лишний запуск Windows, проверка chkdsk или попытка «просто скопировать папку» добивает повреждённые сектора. Файловая база 1С — это один файл 1Cv8.1CD, и шансы вернуть его целиком высокие, если не торопиться.

Частое заблуждение — что базу спасёт любая программа восстановления файлов. На деле порядок такой: оценить состояние диска, снять образ, достать из образа файл базы, проверить его утилитой chdbfl.exe и тестированием в Конфигураторе. Для клиент-серверной базы на MS SQL или PostgreSQL цепочка другая — ищут не 1CD, а файлы СУБД или её бэкапы.

Диагностика: насколько всё плохо с диском

От первых 10 минут зависит, удастся ли восстановить файлы 1С самостоятельно или диск нужно сразу нести в лабораторию.

Признаки физической неисправности, при которых диск немедленно обесточивают:

  • 🔊 стук, щелчки, скрежет, циклический звук «раскрутка — остановка»;
  • 🧊 диск не определяется в BIOS или определяется с нулевым объёмом;
  • 🔥 запах гари от платы электроники;
  • ⏳ система зависает на минуты при обращении к любому файлу.

Со стуком и щелчками диск не подключают снова «ещё разок проверить». Головки царапают пластины, и через несколько включений восстанавливать будет нечего. Такой диск — только в лабораторию.

Если звуков нет и диск виден, подключите его вторым накопителем к исправному компьютеру. Загружаться с повреждённого диска нельзя: Windows при старте пишет на системный раздел, а может и запустить проверку файловой системы.

Состояние смотрят по SMART. В Windows подойдёт CrystalDiskInfo, в Linux — smartctl:

sudo smartctl -a /dev/sdb

На что смотреть в отчёте:

АтрибутЧто означаетВывод
Reallocated Sectors CountСектора, уже заменённые резервнымиРастёт — диск деградирует
Current Pending SectorНестабильные сектора, ждут переназначенияБольше нуля — снимать образ немедленно
Uncorrectable Sector CountСектора, которые не читаютсяЧасть данных придётся вычитывать повторами
UDMA CRC Error CountОшибки передачи по кабелюСначала замените SATA-кабель

Если растут только ошибки CRC, проблема часто в кабеле или разъёме, а не в самом диске. Замена кабеля иногда возвращает доступ к базе без всякого восстановления.

С SSD отдельная история. Когда контроллер умер, накопитель пропадает целиком или показывает странный объём вроде 8 МБ — программными средствами это не лечится. А удалённые с SSD файлы почти не вернуть: команда TRIM очищает освободившиеся блоки.

Диагностика: выберите симптом

Посекторный образ повреждённого диска

Образ — это побайтная копия всего диска в файл или на другой диск. С ним можно делать что угодно и сколько угодно раз, не трогая оригинал.

Что подготовить заранее:

  1. Чистый исправный диск объёмом больше повреждённого. Под образ диска на 1 ТБ нужно минимум 1 ТБ свободного места.
  2. Загрузочную флешку с Linux, где есть GNU ddrescue, — подойдёт почти любой live-дистрибутив или SystemRescue.
  3. Отдельный порт SATA или надёжный переходник USB–SATA с внешним питанием.

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

# первый проход: без «скрёба» по битым местам
sudo ddrescue -n /dev/sdb /mnt/backup/disk.img /mnt/backup/disk.map

# второй проход: прямой доступ, три повтора по плохим секторам
sudo ddrescue -d -r3 /dev/sdb /mnt/backup/disk.img /mnt/backup/disk.map

Файл disk.map — журнал: в нём записано, какие участки уже прочитаны. Если диск отвалился посреди работы, перезапуск той же командой продолжит с места остановки.

Не перепутайте устройства. Источник (/dev/sdb в примере) — повреждённый диск, приёмник — файл на исправном диске. Если указать наоборот, ddrescue затрёт данные. Проверьте модель и объём командой lsblk -o NAME,SIZE,MODEL перед запуском.

Если нужен только раздел с базами, можно снимать образ раздела (/dev/sdb2), а не всего диска. Это быстрее и меньше нагружает умирающий накопитель.

Под Windows посекторный образ умеют снимать R-Studio, DMDE и аналоги с функцией «создать образ». Они тоже делают повторы по битым секторам, но с ddrescue проще управлять порядком чтения.

Как достать файлы 1С и базу данных из образа

Образ открывают программой восстановления данных: R-Studio, DMDE, TestDisk или их аналогами. Программа сама разбирает файловую систему NTFS, даже если Windows не может её смонтировать.

Что искать в первую очередь:

  • 📦 1Cv8.1CD — сама файловая база: все справочники, документы, проводки;
  • 📁 1Cv8Log — журнал регистрации, полезен, чтобы понять, что успели ввести;
  • 💾 файлы .dt — выгрузки базы, если их когда-то делали;
  • 🗂 архивы .zip из папки автоматического резервного копирования;
  • 📄 .cf и .cfe — конфигурация и расширения, если в базе были доработки.

Путь к базе видно в окне запуска 1С: выделите базу в списке, внизу будет строка вида File="D:\Bases\Buh". Если окно запуска недоступно, этот путь хранится в файле ibases.v8i в профиле пользователя, папка %APPDATA%\1C\1CEStart.

Если файловая система не читается

Когда разметка разрушена и папки не видны, остаётся поиск по сигнатурам. Файл базы 1С 8 начинается с текстовой метки 1CDBMSV8 — по ней программы восстановления находят начало файла в «сыром» пространстве диска.

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

Сравните найденные версии

Часто находятся сразу несколько файлов 1Cv8.1CD: рабочая база, старая копия, тестовая. Сравнивайте их по размеру и дате изменения. Рабочая база обычно самая большая и самая свежая.

Что нашлосьКак поступить
Целый 1Cv8.1CD без битых секторовСкопировать на исправный диск и проверить
1Cv8.1CD с нечитаемыми участкамиПроверить chdbfl.exe, затем тестированием
Только свежий .dt или архив бэкапаЗагрузить его в новую пустую базу
И база, и бэкапСравнить: сколько данных потеряно в каждом варианте

Проверка и лечение восстановленной базы

Работают только с копией. Оставьте нетронутый экземпляр восстановленного файла в отдельной папке — если лечение испортит базу, будет откуда начать заново.

Шаг 1. Утилита chdbfl.exe

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

  1. Закройте все сеансы с этой базой.
  2. Запустите chdbfl.exe, укажите путь к копии 1Cv8.1CD.
  3. Сначала проверьте без исправления.
  4. Если ошибки есть, отметьте флажок исправления обнаруженных ошибок и запустите ещё раз.

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

Шаг 2. Тестирование и исправление в Конфигураторе

Откройте базу в режиме Конфигуратора и выберите Администрирование → Тестирование и исправление. Для повреждённой после сбоя диска базы обычно включают:

  • ✅ реиндексацию таблиц информационной базы;
  • ✅ проверку логической целостности;
  • ✅ проверку ссылочной целостности;
  • ✅ пересчёт итогов;
  • ✅ сжатие таблиц.

В блоке «Тестирование и исправление» укажите, что делать с битыми ссылками и частично потерянными объектами. Безопаснее создавать объекты вместо удалённых: так вы увидите, где именно пропали данные, и сможете их восстановить вручную.

Тестирование с исправлением требует монопольного доступа к базе, и на большой базе идёт часами. Запускайте его на копии, когда никто не работает, и не прерывайте процесс.

Шаг 3. Выгрузка в .dt и обратная загрузка

Если база открылась, сделайте выгрузку: Администрирование → Выгрузить информационную базу. Затем создайте новую пустую базу и загрузите туда этот .dt. Такая перекладка заново строит все таблицы и часто убирает «хвосты», которые остались после тестирования.

Шаг 4. Проверка учётных данных

Технически целая база ещё не значит, что данные полные. Пройдитесь по последним дням перед поломкой:

  1. Сверьте последние документы по журналу регистрации — что было введено, а что пропало.
  2. Сформируйте оборотно-сальдовую ведомость и сравните остатки по 50, 51, 60, 62 с выписками банка и данными контрагентов.
  3. Найдите объекты с пометкой «Объект не найден» — их создало тестирование вместо потерянных.

Базы на MS SQL и PostgreSQL: другой порядок

В клиент-серверном варианте файла 1CD нет. Данные лежат в СУБД, а сервер 1С хранит только реестр кластера со списком баз. Если сломался диск сервера, восстанавливают в первую очередь СУБД.

MS SQL Server

Варианты в порядке предпочтения:

  1. Есть бэкап .bak. Восстановите его на исправном сервере командой RESTORE DATABASE или через SQL Server Management Studio. Если велось резервное копирование журнала транзакций, восстановите цепочку журналов до момента сбоя.
  2. Из образа достали файлы .mdf и .ldf. Подключите их к экземпляру SQL Server той же или более новой версии через присоединение базы (attach).
  3. Есть только .mdf, журнал потерян. Присоединение с пересозданием журнала возможно, если база была корректно закрыта. После аварии это часто не срабатывает.

После подключения проверьте базу:

DBCC CHECKDB (N'buh_base') WITH NO_INFOMSGS;

Если DBCC CHECKDB находит ошибки, режим REPAIR_ALLOW_DATA_LOSS удаляет повреждённые страницы вместе с данными. Применяйте его только на копии и только когда нет бэкапа.

PostgreSQL

Для PostgreSQL рабочая резервная копия — дамп pg_dump или физический бэкап через pg_basebackup. Если удалось достать каталог данных кластера целиком, его запускают на той же основной версии PostgreSQL, что стояла на сервере. Другая основная версия каталог не примет.

Регистрация базы в кластере 1С

Когда база в СУБД поднята, её нужно снова зарегистрировать в кластере 1С. В консоли администрирования серверов создайте информационную базу, укажите сервер СУБД, имя существующей базы данных и снимите флажок создания новой базы в СУБД. После этого сделайте выгрузку в .dt — пусть свежая копия лежит отдельно.

Если сервер 1С и СУБД стоят на одной машине и диск сломался там, остановите службы и не перезапускайте их на повреждённом диске. Пользователи всё равно отключены, а лишняя запись в журнал СУБД может затереть страницы, которые ещё можно было вычитать.

Профилактика: как не потерять базу 1С при поломке диска

Восстановление с образа — лотерея. Бэкап — гарантия. Минимальная схема для небольшой фирмы:

ЧтоКак частоКуда
Выгрузка .dt или копия 1CDЕжедневно, ночьюВторой физический диск или NAS
Архив за неделюРаз в неделюОблако или внешний диск вне офиса
Копия перед обновлением конфигурацииПеред каждым обновлениемРядом с базой и на внешний носитель
Бэкап СУБД (.bak, дамп)Ежедневно полный, журнал — чащеОтдельный сервер или хранилище

Практические приёмы:

  • 💾 В типовых конфигурациях для файловой базы есть встроенное автоматическое резервное копирование: Администрирование → Обслуживание → Резервное копирование и восстановление. Укажите каталог на другом физическом диске, не на том, где лежит база.
  • 🪞 RAID 1 спасает от отказа одного диска, но не от удаления данных, шифровальщика или ошибки пользователя. Это не замена бэкапу.
  • 📈 Настройте мониторинг SMART. Рост переназначенных секторов — повод заменить диск до того, как он умрёт.
  • 🔁 Раз в квартал разворачивайте бэкап в тестовую базу и открывайте её. Непроверенный бэкап часто оказывается пустым или битым.
  • 🔌 Копирование 1CD «на лету» во время работы пользователей даёт несогласованный файл. Копируйте при закрытой базе или делайте выгрузку .dt.
Проверка схемы резервного копирования
Выполнено: 0 / 6

Частые ошибки при восстановлении

  • ❌ Запуск chkdsk на умирающем диске. Проверка файловой системы пишет на диск и «исправляет» разметку по-своему. Часть файлов после неё оказывается в папке FOUND.000 под именами вида FILE0001.CHK, а куски базы могут пропасть.
  • ❌ Восстановление на тот же диск. Найденный файл записывают поверх места, где лежали другие удалённые данные. Сохраняйте только на другой накопитель.
  • ❌ Многократные попытки скопировать папку проводником. Каждый заход на битые сектора ухудшает состояние диска. Один образ лучше десяти копирований.
  • ❌ Лечение единственного экземпляра. Если chdbfl.exe или тестирование пойдут не так, вернуться будет некуда.
  • ❌ Вскрытие диска дома. Пыль на пластинах делает дальнейшее восстановление дороже или невозможным.

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

Сколько стоит восстановление в лаборатории?
Ориентировочно: логические повреждения — от нескольких тысяч рублей, замена головок или платы — примерно от 15–20 тысяч рублей и выше. Окончательную цену называют после бесплатной или платной диагностики.
Можно ли открыть восстановленную базу на другой версии платформы?
Да, если номер версии платформы не ниже той, на которой работала база. Конфигурация при этом не меняется, меняется только программа, которая открывает файл.
Что делать, если нашёлся только старый бэкап?
Загрузите его, а недостающий период восстановите по первичке: банковским выпискам, документам из ЭДО, кассовым отчётам. Банковские выписки загружаются в 1С заново, документы ЭДО можно повторно получить у оператора.
Помогут ли теневые копии Windows?
Иногда. Если на разделе была включена защита системы, в свойствах папки на вкладке «Предыдущие версии» может найтись копия базы. На повреждённом диске их тоже достают из образа.
Восстановится ли база, если диск отформатировали?
При быстром форматировании HDD данные физически остаются, и файл базы часто находят программой восстановления. После полного форматирования или на SSD с TRIM шансы близки к нулю.