База 1С не открывается после сбоя: возвращаем данные из повреждённого файла
Содержание
Восстановить файл 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С у всех пользователей, которые работают с этой базой.
- Скопируйте всю папку базы целиком в другое место, например
D:\1C_avaria\. Копия должна лежать отдельно от рабочей. - Проверьте, есть ли в папке файл
1Cv8.1CL. Это файл блокировки. Если сеансов точно нет, а он остался после сбоя, его можно удалить. - Проверьте свободное место на диске. При забитом диске база тоже «ломается», хотя файл цел.
Все дальнейшие действия выполняйте только после копии папки базы. Утилиты исправления удаляют то, что не смогли прочитать. Без копии второй попытки не будет.
Восстановление файла базы утилитой chdbfl
chdbfl.exe — штатная утилита платформы для проверки физической целостности файловой базы. Она работает с файлом напрямую и не требует запуска Конфигуратора. Это главный инструмент, когда база вообще не открывается.
Утилита лежит в каталоге установленной платформы, например:
C:\Program Files\1cv8\8.3.24.1586\bin\chdbfl.exe
Номер версии в пути у вас будет свой. Берите утилиту той же версии платформы, на которой работает база.
Как запустить проверку
- Убедитесь, что к базе никто не подключён.
- Запустите
chdbfl.exe. - В поле имени файла укажите путь к
1Cv8.1CD. - Поставьте галочку «Исправлять обнаруженные ошибки».
- Нажмите «Выполнить» и дождитесь окончания. На базе в несколько гигабайт это может занять от нескольких минут до часа.
Утилита покажет список найденных ошибок и что с ними сделано. Если ошибок нет, а база всё равно не открывается, проблема не в физической структуре файла, переходите к Конфигуратору.
Сначала можно прогнать 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:
- Создайте новую базу на той же конфигурации того же релиза.
- В повреждённой базе откройте обработку «Выгрузка и загрузка данных XML» (её распространяют на диске ИТС как внешнюю обработку
.epf). - Выгрузите объекты по группам: справочники, затем документы по периодам. Таблицу, на которой выгрузка падает, пропустите.
- Загрузите файлы в новую базу той же обработкой.
- Перепроведите документы за затронутый период и сверьте остатки.
Это долго, но позволяет вытащить всё, кроме испорченных таблиц, даже из сильно повреждённого файла.
Копии без 1С
Если резервных копий нет совсем, проверьте:
- 🗂 «Предыдущие версии» папки базы в Windows (свойства папки, одноимённая вкладка). Работает, если включена защита системы или теневое копирование на сервере.
- ☁️ Облачный диск или NAS, если папка базы синхронизировалась.
- 🧑💻 Копию у обслуживающей организации или в выгрузках для перехода на новую версию.
Восстановленный из теневой копии 1Cv8.1CD не подкладывайте поверх рабочего. Положите рядом, добавьте отдельной базой в список и сравните.
Особенности клиент-серверного варианта
В серверной базе нет файла 1Cv8.1CD: данные лежат в СУБД (MS SQL Server или PostgreSQL). Утилита chdbfl здесь не применяется. Логика другая.
Что делать по шагам
- Сделайте копию средствами СУБД до любых исправлений: для MS SQL — резервное копирование
базы в
.bak, для PostgreSQL —pg_dump. - Проверьте целостность на стороне СУБД. В MS SQL это команда:
DBCC CHECKDB ('buh_base') WITH NO_INFOMSGS;
Если команда сообщает об ошибках, восстанавливайте из последнего .bak. Ключ REPAIR_ALLOW_DATA_LOSS в DBCC удаляет повреждённые страницы вместе с данными, поэтому применяйте его только на копии и как крайнюю меру.
- Запустите тестирование и исправление в Конфигураторе, как для файловой базы. Режим работает и для серверных баз.
- Восстановите из копии СУБД. В 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 выясняется в момент аварии |
| ИБП для компьютера с базой | Обрыв питания во время записи портит файл базы |