Восстановление базы 1С после сбоя: из копии, из .dt и через chdbfl

· 10 мин

Содержание

Файл базы данных 1С восстанавливают одним из трёх способов: подменяют повреждённый 1Cv8.1CD его копией, загружают выгрузку .dt через Конфигуратор → Администрирование → Загрузить информационную базу или лечат сам файл утилитой chdbfl.exe и режимом «Тестирование и исправление». Если копия свежая, первый способ самый быстрый: 5–10 минут, и база снова открывается.

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

Шаг 0. Понять, что сломалось, и сохранить исходный файл

Прежде чем что-то чинить, определите тип базы и характер поломки. От этого зависит маршрут.

Где лежит база. В окне запуска 1С выделите базу и посмотрите строку внизу списка:

  • 📁 File="D:\Base\Buh" — файловая база. Данные в одном файле 1Cv8.1CD в этой папке.
  • 🖥 Srvr="server1";Ref="buh" — клиент-серверная. Данные лежат в СУБД (MS SQL Server или PostgreSQL), файла 1Cv8.1CD нет.

Что именно не так. Частые симптомы и куда с ними идти:

СимптомВероятная причинаС чего начать
Файл базы данных поврежден при запускеСбой записи: выключили питание, упал сервер, сетевой диск отвалилсяКопия файла → chdbfl.exe
Ошибка формата потокаПовреждены служебные данные или кэшОчистка кэша, затем тестирование и исправление
База открывается, но пропали или испорчены документыОшибка пользователя, неудачная обработкаЖурнал регистрации + копия в отдельную базу
Файл 1Cv8.1CD удалён или нулевого размераУдаление, шифровальщик, сбой дискаРезервная копия, теневые копии Windows

Сделайте копию «как есть». Пока ничего не трогали:

  1. Закройте все сеансы. Пользователей предупредите: дальше база будет недоступна.
  2. Скопируйте всю папку базы целиком, не только 1Cv8.1CD, в другое место, например D:\Rescue\Buh_2026-10-07.
  3. Проверьте, что в копии размер 1Cv8.1CD совпадает с оригиналом.

Эта копия — страховка. Если лечение испортит файл сильнее, вы вернётесь к исходной точке.

Если база на сетевом диске, сначала перенесите копию на локальный диск сервера или ПК и работайте с ней там. Восстановление по сети медленнее и само может повредить файл при обрыве связи.

Способ 1. Восстановление файловой базы из копии или .dt-выгрузки

Это самый надёжный путь. Данные вернутся ровно на момент копии, без потерь внутри неё.

Если есть копия файла 1Cv8.1CD

  1. Убедитесь, что к базе никто не подключён.
  2. Переименуйте повреждённый файл в 1Cv8_broken.1CD. Не удаляйте его.
  3. Положите на его место файл из резервной копии. Если копия в zip-архиве — сначала распакуйте.
  4. Запустите базу в режиме «Предприятие» и проверьте последние документы.

Такие архивы, например, создаёт встроенная обработка резервного копирования в типовых конфигурациях для файлового режима (Администрирование → Обслуживание → Резервное копирование и восстановление). Внутри архива лежит тот же 1Cv8.1CD.

Если есть выгрузка .dt

Файл .dt — это выгрузка всей информационной базы: и конфигурации, и данных. Загружают её только в Конфигураторе.

  1. Создайте новую пустую базу в окне запуска: Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации.
  2. Откройте её в режиме «Конфигуратор».
  3. Выберите Администрирование → Загрузить информационную базу и укажите файл .dt.
  4. Подтвердите замену данных. Дождитесь сообщения о завершении и перезапуска.
  5. Откройте базу в режиме «Предприятие», проверьте остатки и последние документы.

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

Для крупных баз загрузку удобно запускать из командной строки, без открытия окна Конфигуратора:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F"D:\Base\Buh_new" /N"Администратор" /P"пароль" /RestoreIB "D:\Backup\buh.dt" /Out "D:\Backup\restore.log"

Номер версии в пути замените на установленный у вас. Платформа для загрузки должна быть с номером не ниже той, на которой делали выгрузку. Результат и текст ошибок смотрите в файле restore.log.

Способ 2. Лечение повреждённого файла утилитой chdbfl

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

Утилита работает только с файлом, который никто не открыл: ни Предприятие, ни Конфигуратор.

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

На файле в 10–20 ГБ проверка идёт от нескольких минут до часа, всё зависит от диска.

chdbfl при исправлении может удалить записи, которые не удалось прочитать. После неё обязательно сверьте остатки и обороты с последней сданной отчётностью.

Если утилита завершается с ошибкой или после неё база всё равно не открывается, остаются специализированные сервисы восстановления .1CD. Это платная работа с непредсказуемым результатом, поэтому к ней идут, когда других копий нет вовсе.

Способ 3. Тестирование и исправление в Конфигураторе

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

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

Что выбрать в окне:

ФлажокЧто делаетКогда включать
Реиндексация таблиц информационной базыПересобирает индексыПочти всегда, безопасно
Проверка логической целостностиИщет нарушения внутренней структуры данныхПри любых сбоях
Проверка ссылочной целостностиНаходит ссылки на несуществующие объекты («битые ссылки»)Если в документах видите <Объект не найден>
Пересчёт итоговЗаново считает итоги регистровЕсли отчёты расходятся с документами
Сжатие таблицУбирает пустое место в файлеПосле массового удаления данных
Реструктуризация таблицПолностью пересоздаёт таблицыТолько при серьёзных повреждениях, занимает долго

Начните с режима «Только тестирование». Посмотрите результат, затем запустите «Тестирование и исправление».

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

Перед этим режимом очистите кэш клиента: в окне запуска нажмите Настройка и включите очистку, либо запустите 1cv8.exe с ключом /ClearCache. Часть ошибок вроде Ошибка формата потока уходит уже на этом шаге.

Как найти потерянные данные через журнал регистрации

Бывает, что база цела, но кто-то удалил документы или запустил неудачную обработку. Восстанавливать всю базу из копии ради пяти документов — значит потерять работу всех остальных за день. Здесь помогает связка «журнал + копия».

Что умеет журнал, а что нет

Журнал регистрации фиксирует кто, когда и что сделал: создал, изменил, провёл, удалил объект. Но содержимое документа до изменения он не хранит. Восстановить из журнала сам документ нельзя — только найти, что именно восстанавливать.

Открыть журнал можно:

  • в Предприятии: Администрирование → Обслуживание → Журнал регистрации (БП 3.0, ЗУП 3.1, УТ 11);
  • в Конфигураторе: Администрирование → Журнал регистрации.

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

Порядок точечного восстановления

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

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

Восстановление клиент-серверной базы в MS SQL и PostgreSQL

В серверном варианте chdbfl не применяется: данных в файле нет. Восстанавливают средствами СУБД или через .dt.

Через .dt

Работает так же, как для файловой базы. Создайте новую базу в кластере 1С, откройте её в Конфигураторе и загрузите .dt. Для баз крупнее 50–100 ГБ этот путь медленный: загрузка может идти несколько часов.

Из бэкапа MS SQL Server

  1. В консоли администрирования серверов 1С включите для базы блокировку начала сеансов. Активные пользователи будут отключены — делайте это вне рабочего времени или после предупреждения.
  2. В SQL Server Management Studio восстановите базу из .bak:
RESTORE DATABASE [buh]
FROM DISK = N'E:\SQLBackup\buh_full.bak'
WITH REPLACE, RECOVERY;
  1. Если база в полной модели восстановления и есть бэкапы журнала транзакций, можно вернуться на конкретную минуту до сбоя. Тогда полный бэкап восстанавливают с NORECOVERY, а последний журнал — с параметром STOPAT.
  2. Снимите блокировку сеансов и проверьте базу в 1С.

Для проверки физической целостности самой базы в SQL используйте DBCC CHECKDB. Его аналог в мире файловых баз — как раз chdbfl.

Из дампа PostgreSQL

Дамп, снятый pg_dump в формате custom, восстанавливают так:

createdb -U postgres -T template0 buh_restore
pg_restore -U postgres -d buh_restore "E:\PGBackup\buh.backup"

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

Сравнение способов

СпособДля каких базТочностьСкоростьРиск
Копия 1Cv8.1CDФайловыеНа момент копииМинутыНизкий
Загрузка .dtЛюбыеНа момент выгрузкиМинуты — часыНизкий, если в новую базу
chdbfl.exeФайловыеПочти до сбояМинуты — часУдаление нечитаемых записей
Тестирование и исправлениеЛюбыеТекущее состояниеМинуты — часыУдаление битых ссылок
Бэкап СУБД + журнал транзакцийСерверныеДо минутыЗависит от размераНизкий

Как не доводить до восстановления

Восстановление проходит легко, когда есть свежая и проверенная копия. Минимальный набор мер:

  • 🔁 Ежедневная выгрузка .dt по расписанию. Пакетная команда и Планировщик заданий Windows, ночью, когда пользователей нет:
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F"D:\Base\Buh" /N"Администратор" /P"пароль" /DumpIB "E:\Backup\buh_%date:~-4%%date:~3,2%%date:~0,2%.dt" /Out "E:\Backup\dump.log"

Выгрузке нужен монопольный доступ: если в базе кто-то остался, задание завершится с ошибкой, и это будет видно в логе.

  • 💾 Копии на другом носителе. Копия на том же диске, что и база, погибнет вместе с ним. Минимум — отдельный диск, лучше ещё и облако или NAS.
  • 🗂 Хранить несколько поколений. Например, 7 ежедневных и 4 еженедельных копии. Ошибку часто замечают через несколько дней.
  • ⚡ ИБП для сервера или ПК с базой. Отключение питания во время записи — классическая причина Файл базы данных поврежден.
  • 🌐 Не открывать файловую базу по Wi-Fi и VPN. Обрыв связи в момент записи портит файл. Для удалённой работы — терминальный сервер или веб-публикация.
  • 🧪 Проверять копии. Раз в месяц разворачивайте случайную копию в тестовую базу и открывайте. Нечитаемый архив обнаруживается именно в день аварии.
  • 🖥 Для серверных баз — регламентные планы обслуживания в СУБД: полный бэкап ежедневно, журнал транзакций каждые 15–60 минут.
Проверка системы резервного копирования
Выполнено: 0 / 7

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

Копий нет, chdbfl не справился, база не открывается. Что ещё можно попробовать:

  1. Теневые копии Windows. Откройте свойства папки с базой → вкладка «Предыдущие версии». Если на диске включена защита системы или резервное копирование Windows, там может быть версия файла на прошлую дату.
  2. Корзина и программы восстановления удалённых файлов — если 1Cv8.1CD именно удалили, а не повредили. Восстанавливайте на другой диск, а не на тот же.
  3. Временные файлы. Иногда в папке базы остаётся 1Cv8tmp.1CD после прерванной операции. Скопируйте его отдельно и попробуйте открыть копию, переименовав в 1Cv8.1CD.
  4. Копии у бухгалтерской фирмы, аудитора, облачного сервиса. У них может оказаться выгрузка годовой давности. Это лучше, чем ничего: остальные документы можно перенести из банка, ЭДО и сданной отчётности.

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

Можно ли восстановить базу 1С из одной папки 1Cv8Log?
Нет. Журнал регистрации хранит факт действий, а не сами данные. Он подскажет, что потеряно, но документы придётся брать из резервной копии.
Можно ли загрузить .dt в базу на другой версии платформы?
Да, если номер платформы, в которую загружаете, не ниже номера, на которой делали выгрузку. В обратную сторону загрузка не гарантируется.
Чем отличается копия 1Cv8.1CD от выгрузки .dt?
Копия файла — точный снимок базы, но только для файлового режима. Выгрузка .dt не зависит от типа базы: её можно загрузить и в файловую, и в серверную.
Сколько времени занимает восстановление базы на 30 ГБ?
Подмена файла копией — несколько минут. Загрузка .dt такого размера — обычно от получаса до пары часов, chdbfl — от 15 минут до часа, в зависимости от скорости диска.
Можно ли запускать chdbfl для серверной базы?
Нет. Утилита работает только с файлом 1Cv8.1CD. Для серверных баз используйте «Тестирование и исправление» в Конфигураторе и средства проверки самой СУБД.