База 1С не открывается после сбоя: возвращаем данные из повреждённого файла

· 10 мин

Содержание

Восстановить файл 1С после сбоя можно в таком порядке: скопировать повреждённый 1Cv8.1CD в отдельную папку, прогнать его утилитой chdbfl.exe с галочкой исправления, затем в Конфигураторе выполнить Администрирование → Тестирование и исправление. Если база так и не открылась, данные возвращают из последней выгрузки .dt, резервной копии или теневой копии Windows.

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

Что сломалось: определяем тип повреждения по симптомам

Прежде чем что-то чинить, поймите, какой именно файл пострадал. «Файл 1С» у разных людей означает разное, и способ восстановления зависит от этого.

ФайлЧто этоКак восстанавливать
1Cv8.1CDФайловая база целиком: данные и конфигурацияchdbfl, тестирование и исправление, резервная копия
.dtВыгрузка базыЗагрузка в новую пустую базу; битый .dt не чинится
.cfФайл конфигурации без данныхПовторное сохранение из рабочей базы или из шаблонов
.epf, .erfВнешняя обработка или отчётИз исходной папки, почты, у разработчика
ibases.v8iСписок баз в окне запускаПересоздать список, сама база не пострадала

Дальше речь идёт в основном о файловой базе 1Cv8.1CD: именно она страдает при отключении питания, сбое диска и зависании антивируса.

Симптомы и вероятные причины

  • 🔴 Файл базы данных поврежден — нарушена внутренняя структура 1Cv8.1CD. Чаще всего это обрыв записи.
  • 🟠 Ошибка формата потока — испорчены служебные данные или кэш. Иногда помогает простая очистка кэша клиента, до тяжёлых мер дело не доходит.
  • 🟡 Нарушена целостность структуры конфигурации — пострадала часть файла, где хранится конфигурация.
  • 🟢 База пропала из списка, но файл 1Cv8.1CD на диске есть и имеет нормальный размер — повреждения нет, слетел только список баз.
  • ⚫ Файл весит 0 байт или исчез — внутренними средствами 1С тут ничего не сделать, нужна копия.
Диагностика: выберите симптом

Первичные меры до любых исправлений

  1. Закройте 1С у всех пользователей, которые работают с этой базой.
  2. Скопируйте всю папку базы целиком в другое место, например D:\1C_avaria\. Копия должна лежать отдельно от рабочей.
  3. Проверьте, есть ли в папке файл 1Cv8.1CL. Это файл блокировки. Если сеансов точно нет, а он остался после сбоя, его можно удалить.
  4. Проверьте свободное место на диске. При забитом диске база тоже «ломается», хотя файл цел.

Все дальнейшие действия выполняйте только после копии папки базы. Утилиты исправления удаляют то, что не смогли прочитать. Без копии второй попытки не будет.

Восстановление файла базы утилитой chdbfl

chdbfl.exe — штатная утилита платформы для проверки физической целостности файловой базы. Она работает с файлом напрямую и не требует запуска Конфигуратора. Это главный инструмент, когда база вообще не открывается.

Утилита лежит в каталоге установленной платформы, например:

C:\Program Files\1cv8\8.3.24.1586\bin\chdbfl.exe

Номер версии в пути у вас будет свой. Берите утилиту той же версии платформы, на которой работает база.

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

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

Утилита покажет список найденных ошибок и что с ними сделано. Если ошибок нет, а база всё равно не открывается, проблема не в физической структуре файла, переходите к Конфигуратору.

Сначала можно прогнать chdbfl без галочки исправления. Так вы увидите масштаб проблемы, ничего не трогая. Если ошибок десятки тысяч, разумнее сразу искать резервную копию.

Тестирование и исправление в режиме Конфигуратора

Если база после chdbfl открывается в Конфигураторе, следующий шаг — логическая проверка. Она чинит то, чего утилита не видит: битые ссылки, расхождения итогов, сломанные индексы.

Путь: Конфигуратор → Администрирование → Тестирование и исправление. Для этой операции нужен монопольный доступ к базе.

Какие галочки ставить

ОпцияЧто делаетКогда нужна
Реиндексация таблицПерестраивает индексыПочти всегда при сбое
Проверка логической целостностиИщет нарушения структуры записейВсегда
Проверка ссылочной целостностиИщет ссылки на несуществующие объектыВсегда
Пересчёт итоговПересчитывает итоги регистровЕсли отчёты показывают странные суммы
Сжатие таблицУбирает пустое местоПо желанию, на чистой базе
Реструктуризация таблицПересоздаёт таблицы целикомЕсли без неё ошибки не уходят

Режим выбирайте «Тестирование и исправление». Отдельно программа спросит, что делать с битыми данными:

  • Ссылки на несуществующие объекты — безопаснее «Создавать объекты». В справочниках появятся элементы-заглушки, и вы увидите, где были потери. «Очищать ссылки» молча обнуляет поля.
  • Частичная потеря данных объектов — тоже «Создавать объекты». Удаление объектов уничтожает документы, которые ещё можно было бы разобрать.

После проверки откройте базу в пользовательском режиме и поищите в справочниках элементы с названиями вида «Объект не найден». По ним видно, какие документы задело.

То же самое из командной строки

Для больших баз удобнее запуск без интерфейса. Пример для файловой базы:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F"D:\Base\Buh" /N"Администратор" /P"пароль" /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals /Out"D:\check.log"

Результат проверки окажется в файле check.log. Если пользователь без пароля, параметр /P опустите.

Резервные копии и выгрузки XML: когда файл не спасти

Иногда после chdbfl и тестирования база всё равно не открывается или данные потеряны крупно. Тогда возвращаемся к копиям.

Выгрузка .dt

Если у вас есть свежий .dt, создайте новую пустую базу и в Конфигураторе выполните Администрирование → Загрузить информационную базу. Загрузка в существующую базу полностью заменит её содержимое, поэтому грузите в новую.

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

Выгрузка данных в XML

Бывает, что .dt выгрузить не удаётся: платформа спотыкается на одной испорченной таблице. Тогда данные переносят по частям через XML:

  1. Создайте новую базу на той же конфигурации того же релиза.
  2. В повреждённой базе откройте обработку «Выгрузка и загрузка данных XML» (её распространяют на диске ИТС как внешнюю обработку .epf).
  3. Выгрузите объекты по группам: справочники, затем документы по периодам. Таблицу, на которой выгрузка падает, пропустите.
  4. Загрузите файлы в новую базу той же обработкой.
  5. Перепроведите документы за затронутый период и сверьте остатки.

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

Копии без 1С

Если резервных копий нет совсем, проверьте:

  • 🗂 «Предыдущие версии» папки базы в Windows (свойства папки, одноимённая вкладка). Работает, если включена защита системы или теневое копирование на сервере.
  • ☁️ Облачный диск или NAS, если папка базы синхронизировалась.
  • 🧑‍💻 Копию у обслуживающей организации или в выгрузках для перехода на новую версию.

Восстановленный из теневой копии 1Cv8.1CD не подкладывайте поверх рабочего. Положите рядом, добавьте отдельной базой в список и сравните.

Особенности клиент-серверного варианта

В серверной базе нет файла 1Cv8.1CD: данные лежат в СУБД (MS SQL Server или PostgreSQL). Утилита chdbfl здесь не применяется. Логика другая.

Что делать по шагам

  1. Сделайте копию средствами СУБД до любых исправлений: для MS SQL — резервное копирование базы в .bak, для PostgreSQL — pg_dump.
  2. Проверьте целостность на стороне СУБД. В MS SQL это команда:
DBCC CHECKDB ('buh_base') WITH NO_INFOMSGS;

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

  1. Запустите тестирование и исправление в Конфигураторе, как для файловой базы. Режим работает и для серверных баз.
  2. Восстановите из копии СУБД. В SQL Server Management Studio — восстановление базы из .bak в новую базу, затем её регистрация в кластере 1С как отдельной информационной базы.

Когда виноват не файл, а кэш кластера

Ошибки вида Ошибка формата потока на сервере часто связаны с сеансовыми данными кластера, а не с базой. Лечится очисткой временных файлов кластера: остановить службу «Агент сервера 1С:Предприятия», удалить содержимое папок snccntx* в каталоге srvinfo\reg_1541, запустить службу снова.

Остановка службы обрывает сеансы всех пользователей всех баз на этом сервере. Делайте это в нерабочее время и предупредите коллег заранее.

Сторонние инструменты: когда штатных средств не хватает

Если chdbfl и Конфигуратор бессильны, а резервной копии нет, остаются внешние инструменты.

  • 🔧 Tool_1CD — бесплатная утилита энтузиастов для чтения 1Cv8.1CD без платформы. Позволяет просмотреть таблицы и вытащить из файла конфигурацию, даже если сама 1С отказывается открывать базу.
  • 💾 Программы восстановления файлов с диска — когда 1Cv8.1CD удалён или диск физически сбоит. Сначала снимите образ диска, потом восстанавливайте с образа.
  • 🧰 Профильные сервисы восстановления баз 1С — платная работа специалистов. Имеет смысл, когда в базе годы учёта, а копий нет.

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

Если повреждена только конфигурация, а данные целы, попробуйте в Конфигураторе Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД. Это откатывает несохранённые изменения основной конфигурации к той, что реально применена в базе.

Если ничего не помогло

Остаётся собрать максимум данных из всех источников:

  • последняя доступная копия или .dt, даже месячной давности;
  • выгрузки отчётности, отправленной через 1С-Отчётность: декларации и отчёты сохранились у контролирующих органов и оператора;
  • банковские выписки из клиент-банка за пропавший период — их загружают заново;
  • первичка от контрагентов в ЭДО, которую можно повторно загрузить из сервиса обмена.

Восстановить «дырку» в несколько недель по этим источникам реально за 2–3 дня работы бухгалтера. Это неприятно, но не катастрофа.

Профилактика: автоматические резервные копии

Самый быстрый способ «восстановить файл 1С» — достать его из вчерашней копии. Настройте её до следующего сбоя.

Встроенное копирование в типовых конфигурациях

В БП 3.0, ЗУП 3.1 и других конфигурациях на БСП для файловых баз есть встроенный механизм: Администрирование → Обслуживание → Резервное копирование и восстановление. Задайте расписание, каталог и число хранимых копий. Копирование выполняется при работе пользователя в базе, поэтому подходит для небольших офисов.

Копирование по расписанию Windows

Надёжнее выгружать .dt ночью планировщиком Windows. Простейший bat-файл:

@echo off
set d=%date:~6,4%-%date:~3,2%-%date:~0,2%
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F"D:\Base\Buh" /N"Администратор" /P"пароль" /DumpIB"E:\Backup\buh_%d%.dt" /Out"E:\Backup\log_%d%.txt"

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

Правила хранения копий

ПравилоЗачем
Копии на другом диске или в облакеСбой диска уносит и базу, и копии на нём
Хранить 7–14 последних копийПовреждение замечают не сразу
Раз в месяц пробно загружать копиюБитый .dt выясняется в момент аварии
ИБП для компьютера с базойОбрыв питания во время записи портит файл базы
Защита базы от потери данных
Выполнено: 0 / 5

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

Можно ли восстановить базу 1С, если файл 1Cv8.1CD случайно удалён?
Да, если на диск после удаления почти ничего не записывали. Сразу прекратите работу с диском и восстановите файл программой восстановления данных на другой носитель.
Что делать, если chdbfl пишет «Ошибок не обнаружено», а база не открывается?
Физически файл цел. Очистите кэш клиента, проверьте права на папку базы и запустите тестирование и исправление в Конфигураторе.
Почему после исправления в справочниках появились элементы «Объект не найден»?
Это заглушки на месте потерянных данных. Найдите документы, которые на них ссылаются, и восстановите правильные значения вручную или из первички.
Подойдёт ли копия .dt из другого релиза конфигурации?
Загрузить её можно, база примет релиз из копии. Чтобы вернуться к актуальному, обновите конфигурацию заново штатным способом.
Помогает ли сжатие таблиц при повреждении базы?
Нет, сжатие только убирает пустое место. Использовать его стоит на проверенной и исправленной базе.