База 1С не открывается: тестирование, chdbfl, бэкапы и SQL

· 10 мин

Содержание

Восстановить базу 1С 8.3 можно тремя путями: исправить файл базы утилитой chdbfl.exe и режимом Конфигуратор → Администрирование → Тестирование и исправление, загрузить свежую выгрузку .dt или поднять резервную копию СУБД (для клиент-серверной базы на SQL Server или PostgreSQL). Выбор зависит от того, что именно сломалось: файл, данные внутри него или вся база целиком.

Порядок простой. Сначала копия того, что есть сейчас, даже если база битая. Потом диагностика. И только потом лечение — от мягких способов к жёстким. Всё ниже относится к платформе 8.3 и подходит для любой конфигурации: Бухгалтерии, ЗУП, УТ, ERP.

Сначала копия, потом диагностика: что сломалось

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

Дальше определите тип поломки. По симптому это обычно видно сразу.

СимптомВероятная причинаС чего начать
Файл базы данных поврежден при входеПовреждён 1Cv8.1CD после сбоя питания или обрыва сетиchdbfl.exe
Ошибка формата потокаБитый кэш или повреждённые данные конфигурацииОчистка кэша, затем тестирование
Нарушение целостности структуры конфигурацииСбой при обновленииТестирование с реструктуризацией или загрузка .dt
База открывается, но отчёты «врут», остатки уходят в минусИспорчены итоги регистровПересчёт итогов
Битые ссылки в документах — <Объект не найден>Удалены объекты, на которые ссылались другиеПроверка ссылочной целостности
Не подключается к серверу, файлы на местеПроблема в кластере 1С или СУБД, а не в данныхЖурнал регистрации, логи СУБД

Где смотреть журнал регистрации

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

Отфильтруйте события по уровню «Ошибка» за время, когда всё сломалось. Там видно, кто работал, какая операция шла последней и какой текст ошибки вернула платформа. Часто причина находится за пять минут: обновление, прерванное посреди реструктуризации, или обмен, загрузивший мусор.

Журнал хранится в подкаталоге 1Cv8Log рядом с файлом базы (для файловой) или в каталоге кластера на сервере. Если база не открывается вовсе, журнал из копии можно подключить к пустой базе и прочитать там.

Для серверной базы добавьте к журналу логи СУБД: в SQL Server — журнал ошибок в SQL Server Management Studio, в PostgreSQL — файлы в каталоге log кластера. Сообщения о повреждённых страницах данных означают, что лечить надо на уровне СУБД, а не 1С.

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

Как восстановить файловую базу 1С

Файловая база — это один файл 1Cv8.1CD в каталоге базы. Чаще всего он портится при отключении электричества, обрыве сети на общей папке или нехватке места на диске. Лечат его в два этапа.

Этап 1. Утилита chdbfl.exe

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

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

Если утилита завершилась без ошибок — пробуйте открыть базу . Если она сообщает, что файл не удаётся восстановить, переходите к этапу 2 или к резервной копии.

Берите chdbfl.exe той же версии платформы, на которой работает база. Утилита из другой версии может неверно прочитать формат файла.

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

Второй этап проверяет уже логику данных: индексы, ссылки, итоги.

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

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

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

Запуск тестирования из командной строки

Если база не открывается в Конфигураторе даже после chdbfl.exe, тестирование можно запустить пакетно. Пример для файловой базы:

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

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

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

В серверном варианте данные лежат в СУБД, и файла 1Cv8.1CD нет. chdbfl.exe тут бесполезна. Логику данных по-прежнему лечит тестирование в Конфигураторе, а физику — средства самой СУБД.

Проверка базы средствами SQL Server

В SQL Server Management Studio выполните проверку целостности:

DBCC CHECKDB ('Buh') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Если ошибок нет — проблема на стороне 1С, переходите к тестированию в Конфигураторе. Если есть — сначала восстанавливайте бэкап СУБД.

Режим REPAIR_ALLOW_DATA_LOSS у DBCC CHECKDB — крайняя мера. Он требует однопользовательского режима базы и, как следует из названия, может выбросить часть данных. Перед ним — копия базы и согласие владельца данных.

PostgreSQL

Для PostgreSQL штатного аналога DBCC CHECKDB нет. Практика другая: при повреждениях восстанавливают последнюю копию pg_dump или физический бэкап кластера. Если логи сервера пишут об ошибках чтения страниц, первым делом проверьте диск — с ним проблема чаще, чем с самой СУБД.

Когда виноват не SQL, а кластер 1С

Бывает, что данные в порядке, а база не открывается из-за испорченного сеансового кэша сервера 1С. Типичный приём — очистка кэша кластера:

  1. Предупредите пользователей: все сеансы оборвутся, несохранённые документы пропадут. Делайте это вечером или в обед.
  2. Остановите службу «Агент сервера 1С:Предприятия 8.3».
  3. В каталоге кластера (srvinfo\reg_1541) удалите папки snccntx….
  4. Запустите службу.

Файлы реестра кластера (1CV8Clst.lst) не трогайте: в них описаны все базы и настройки кластера.

Откат из резервной копии: .dt, бэкап СУБД и копия каталога

Когда исправление не помогло или удалило слишком много, база поднимается из копии. Способ зависит от того, что у вас есть.

Что естьКак восстановитьЧто потеряете
Копия каталога файловой базыЗаменить каталог базы скопированнымВсё, что внесли после копии
Выгрузка .dtАдминистрирование → Загрузить информационную базу в КонфигуратореТо же, плюс нужен монопольный доступ
Полный бэкап SQL ServerRestore Database в SSMSДанные после бэкапа
Полный бэкап + бэкапы журнала транзакцийRestore на момент времени (point-in-time)Минуты до сбоя
Дамп PostgreSQLpg_restore в пустую базуДанные после дампа

Загрузка выгрузки .dt

  1. Откройте базу в Конфигураторе. Если исходная не открывается — создайте новую пустую базу и откройте её.
  2. Выберите Администрирование → Загрузить информационную базу.
  3. Укажите файл .dt и подтвердите замену.

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

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

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

Бэкап SQL на момент времени

Восстановление «на 14:30 перед сбоем» работает только при модели восстановления Full и регулярных бэкапах журнала транзакций. При модели Simple есть только полные и разностные копии — данные откатятся на момент последней.

После восстановления бэкапа СУБД в другую базу её нужно зарегистрировать в кластере 1С: в консоли администрирования серверов создайте информационную базу и укажите имя базы в СУБД. Флажок «Создать базу данных в случае её отсутствия» не нужен — база уже есть.

Резервная копия из режима предприятия

В Бухгалтерии 3.0 и других конфигурациях на БСП есть Администрирование → Обслуживание → Резервное копирование и восстановление. Там же — восстановление из копии, сделанной этим механизмом. Он работает только для файловых баз; серверные копируют средствами СУБД.

Монопольный режим и блокировки: как выгнать всех из базы

Тестирование и исправление, загрузка .dt и обновление структуры требуют монопольного доступа. Если в базе висит хоть один сеанс, Конфигуратор откажет.

Файловая база

  1. Попросите пользователей выйти, затем проверьте Администрирование → Активные пользователи в Конфигураторе.
  2. Если сеансы «зависли» после сбоя, а людей в базе точно нет, закройте процессы 1cv8.exe и 1cv8c.exe на компьютерах, откуда открывали базу.
  3. Убедитесь, что файл 1Cv8.1CL в каталоге базы не занят. Это служебный файл блокировки. Удалять его можно только когда базу точно никто не держит, иначе вы испортите данные работающим людям.

Серверная база

В режиме предприятия откройте Администрирование → Обслуживание → Блокировка работы пользователей. Задайте сообщение, время и код разрешения. Пользователи получат предупреждение, а через несколько минут сеансы завершатся.

Чтобы войти в заблокированную базу самому, добавьте в строку запуска ключ /UC с кодом разрешения:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S "srv1c\buh" /UC 12345

Альтернатива — консоль администрирования серверов: в свойствах базы включить блокировку начала сеансов и задать код. Отдельные сеансы там же можно удалить вручную. Для проверки из командной строки подойдёт rac session list — параметры смотрите в rac help.

Не забудьте снять блокировку после работ. Забытая блокировка выглядит для пользователей как новая авария, и утром телефон не замолкает.

Чтобы восстанавливать не пришлось: регламент обслуживания

Хорошо настроенное обслуживание превращает аварию в рутину на полчаса.

Резервное копирование

  • 💾 Файловая база — ежедневная копия каталога базы скриптом по расписанию Windows или через встроенное резервное копирование БСП. Хранить минимум 7 последних копий.
  • 🗄 SQL Server — план обслуживания: полный бэкап раз в сутки, бэкап журнала транзакций каждые 15–60 минут.
  • 🐘 PostgreSQL — ночной pg_dump в формате custom (-Fc) по cron или планировщику.
  • 📦 Выгрузка .dt — перед каждым обновлением конфигурации, вручную.
  • 🏠 Хранение — хотя бы одна копия на другом физическом диске или сервере. Копия на том же диске умирает вместе с ним.

Пример простого скрипта для файловой базы:

set d=%date:~6,4%-%date:~3,2%-%date:~0,2%
robocopy "D:\Bases\Buh" "E:\Backup\Buh_%d%" /E /R:1 /W:1

Копируйте каталог, когда в базе никто не работает, — например, в 23:00. Копия открытой базы может оказаться несогласованной.

Регламентное обслуживание СУБД

Для SQL Server настройте в плане обслуживания перестроение индексов и обновление статистики раз в неделю, плюс DBCC CHECKDB — чтобы узнать о порче страниц до того, как она доберётся до бухгалтера. Для PostgreSQL — VACUUM ANALYZE по расписанию.

Проверьте, что бэкап живой

Копия, которую ни разу не разворачивали, — это надежда, а не бэкап. Раз в месяц загрузите свежий .dt или бэкап СУБД в тестовую базу и откройте пару отчётов.

Регламент защиты базы 1С
Выполнено: 0 / 7

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

Можно ли восстановить удалённый документ без резервной копии?
Если документ удалён непосредственно (не пометкой), без копии его не вернуть. Журнал регистрации покажет, кто и когда удалил, но не сохраняет данные документа. Помеченный на удаление документ восстанавливается снятием пометки.
Сколько длится тестирование и исправление?
Зависит от размера. База на 2–3 ГБ проверяется за 10–30 минут, на десятки гигабайт — несколько часов. Пересчёт итогов и реструктуризация — самые долгие флажки.
Почему после восстановления .dt не работает обмен с другими базами?
Узлы обмена хранят номера отправленных и принятых сообщений. После отката номера в восстановленной базе меньше, чем ждёт другая сторона. Обмен приходится синхронизировать заново.
Нужно ли восстанавливать базу, если ошибка только у одного пользователя?
Нет. Если у остальных база работает, проблема в кэше или настройках этого компьютера. Очистите кэш клиента ключом /ClearCache или удалите базу из списка и добавьте снова.
Почему пропали данные после chdbfl.exe?
Утилита вырезает страницы, которые не смогла прочитать. Если на них были записи, они удаляются. Поэтому перед исправлением делают копию: данные из неё иногда удаётся вытащить другими способами.