Лечение повреждённой информационной базы 1С 8.3: chdbfl, тестирование, SQL и резервные копии
Содержание
Если база 1С повреждена, начинайте с полной копии каталога базы или бэкапа СУБД, а уже потом лечите. Файловую базу
проверяют утилитой chdbfl.exe из папки bin платформы, затем запускают в конфигураторе Администрирование → Тестирование и исправление. Клиент-серверную базу
сначала проверяют средствами СУБД (DBCC CHECKDB в MS SQL). Не помогло — откатываются на последнюю исправную резервную копию.
Порядок важен. Каждая следующая ступень рискованнее предыдущей: утилита и тестирование могут удалить битые записи, и без копии вернуть их будет неоткуда. Способы одинаковы для любой конфигурации на платформе 8.3: БП 3.0, ЗУП 3.1, УТ 11 и других, потому что лечение идёт на уровне платформы и СУБД.
Признаки повреждения базы 1С и первая диагностика
Повреждение редко бывает «тихим». Обычно платформа сразу показывает сообщение при входе, при открытии списка или при проведении документа.
Типичные симптомы:
- 🔴 при запуске:
Файл базы данных поврежденилиНеверный формат хранилища данных; - 🔴 при открытии отчёта или журнала:
Ошибка формата потока; - 🔴 в конфигураторе:
Нарушена целостность структуры конфигурации; - 🟠 в списках появляются строки вида
<Объект не найден> (123:a1b2c3...); - 🟠 остатки в отчётах «плывут», хотя документы не меняли;
- 🟠 программа закрывается без сообщения на одном и том же документе.
Что проверить за пять минут
- Запишите точный текст ошибки и момент, когда она появляется: при входе, в конкретном документе, при выгрузке.
- Узнайте, что произошло перед сбоем: отключение света, обрыв сети, зависание при обновлении, заполненный диск.
- Посмотрите свободное место на диске с базой. Меньше пары гигабайт — уже повод для сбоев записи.
- Для файловой базы откройте её каталог. Путь виден внизу окна запуска, когда база выделена в списке: строка
File="D:\Bases\Buh". - Проверьте, есть ли в каталоге файл
1Cv8.1CDи какого он размера. Размер 0 байт или сильно меньше обычного — плохой знак.
Сразу сделайте копию
Закройте все сеансы и скопируйте каталог базы целиком в другое место, лучше на другой диск. Для серверной базы снимите полный бэкап средствами СУБД. Ни одно лечение не начинайте без копии исходного состояния. Если исправление сделает хуже, вы сможете вернуться и попробовать другой способ.
Если база ещё открывается, попробуйте дополнительно выгрузить её в .dt: в конфигураторе Администрирование → Выгрузить информационную базу. Выгрузка сама по себе хороший тест: на повреждённых данных она часто падает с ошибкой, и это подтверждает диагноз.
1Cv8.1CD. Копия каталога → chdbfl.exe с исправлением → тестирование и исправление в конфигураторе.Утилита chdbfl.exe: как вылечить файловую базу
chdbfl.exe проверяет физическую целостность файла 1Cv8.1CD. Она работает только с файловыми базами и ничего не знает о конфигурации: её задача — починить сам файл так, чтобы платформа снова смогла его открыть.
Утилита лежит в каталоге установленной платформы, например:
C:\Program Files\1cv8\8.3.24.1548\bin\chdbfl.exe
Номер версии в пути будет вашим. Если установлено несколько платформ, берите утилиту из той версии, на которой работает база.
Порядок работы
- Убедитесь, что в базе никого нет. Утилите нужен монопольный доступ к файлу. ⚠️ Если кто-то ещё работает, предупредите людей: их сеансы придётся закрыть, несохранённые данные пропадут.
- Запустите
chdbfl.exeот имени администратора. - В поле с именем файла укажите путь к
1Cv8.1CD(кнопка выбора файла рядом с полем). - Сначала запустите проверку без исправления: снимите флажок исправления ошибок и нажмите «Выполнить».
- Посмотрите протокол. Если ошибок нет — проблема не в файле, переходите к тестированию в конфигураторе.
- Если ошибки есть — поставьте флажок исправления и запустите ещё раз.
Проверка большого файла идёт долго: база на 10–20 ГБ может обрабатываться десятки минут. Не прерывайте процесс, даже если окно «зависло» — снятие задачи на середине исправления может добить файл.
Если утилита сама падает или останавливается на одном и том же месте, перенесите копию базы на локальный SSD и запустите там. Сетевой диск и медленный HDD часто дают обрыв на середине.
Если chdbfl не помогла
Бывает, что файл повреждён так сильно, что утилита не справляется. Варианты дальше:
- 🔧 взять последнюю резервную копию и перенести в неё недостающие документы вручную или обменом;
- 🔧 сторонние утилиты для чтения формата
1CD(например, Tool_1CD) — они умеют вытащить таблицы и конфигурацию из файла, который платформа уже не открывает. Работайте ими только с копией; - 🔧 обратиться к специалисту по восстановлению данных, если копий нет совсем.
Тестирование и исправление информационной базы в конфигураторе
Это второй и главный этап. Он работает для файловых и клиент-серверных баз и проверяет уже не файл, а данные: ссылки, итоги регистров, логическую структуру.
Путь: запустите базу в режиме «Конфигуратор» и откройте Администрирование → Тестирование и исправление. Режиму нужен монопольный доступ, поэтому всех пользователей нужно вывести из базы.
Какие флажки ставить
| Проверка | Что делает | Когда включать |
|---|---|---|
| Реиндексация таблиц | Перестраивает индексы | Почти всегда, безопасно |
| Проверка логической целостности | Ищет нарушения структуры данных | При ошибках формата потока, падениях |
| Проверка ссылочной целостности | Ищет ссылки на несуществующие объекты | При <Объект не найден> |
| Пересчёт итогов | Заново считает итоги регистров | Когда «плывут» остатки и обороты |
| Сжатие таблиц | Убирает пустое место в файле | Для файловой базы после чистки |
| Реструктуризация таблиц | Пересоздаёт таблицы базы | Только при явных проблемах структуры, долго |
Режимы обработки найденных ошибок
Внизу формы задаётся, что делать с проблемами:
- Ссылки на несуществующие объекты. «Создавать объекты» — платформа создаст пустые объекты-заглушки, и вы потом разберётесь, чем их заполнить. «Очищать ссылки» — ссылка в документе станет пустой. «Не изменять» — только протокол.
- Частичная потеря данных объектов. «Создавать объекты» или «Удалять объекты».
Для первого прогона выберите «Только тестирование» — увидите масштаб, ничего не меняя. Затем повторите в режиме «Тестирование и исправление». Безопаснее начинать с создания объектов: удалённую строку назад не вернуть, а заглушку можно потом найти и заполнить.
Запуск из командной строки
Для больших баз удобно запускать проверку ночью без участия человека:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals -BadRefCreate -BadDataCreate /Out"D:\Logs\check.log"
Для серверной базы вместо /F укажите /S"сервер\имябазы". Ключ -TestOnly включает режим только тестирования. Протокол ищите в файле из параметра /Out.
После исправления откройте базу в режиме «1С:Предприятие» и проверьте ключевые отчёты: оборотно-сальдовую ведомость, остатки по складам, взаиморасчёты. Найдите созданные платформой объекты-заглушки — обычно их видно по пустым наименованиям — и разберитесь, откуда они.
Повреждённая клиент-серверная база на MS SQL или PostgreSQL
В клиент-серверном варианте chdbfl.exe не применяется: данные лежат в СУБД, и физическую целостность проверяет она. Тестирование в конфигураторе здесь второй шаг, а не первый.
MS SQL Server
- Сделайте полный бэкап базы средствами SQL Server.
- Запустите проверку в SQL Server Management Studio:
DBCC CHECKDB ('Buh') WITH NO_INFOMSGS, ALL_ERRORMSGS;
- Если ошибок нет — повреждение логическое, переходите к тестированию в конфигураторе.
- Если ошибки есть, в конце вывода SQL Server подскажет минимальный уровень исправления. Сначала пробуйте без потери данных:
ALTER DATABASE Buh SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB ('Buh', REPAIR_REBUILD);
ALTER DATABASE Buh SET MULTI_USER;
REPAIR_ALLOW_DATA_LOSS — крайняя мера. Она удаляет повреждённые страницы вместе с данными, после неё логическая целостность базы 1С почти наверняка нарушится. Перед этим вариантом лучше проверить, нет ли свежего бэкапа.
SINGLE_USER WITH ROLLBACK IMMEDIATE обрывает все подключения, включая рабочие процессы 1С. Делайте это вне рабочего времени и предупредите пользователей.
PostgreSQL
Встроенного аналога DBCC CHECKDB нет. Практичный способ проверить читаемость данных — сделать полный дамп pg_dump: если какая-то таблица повреждена, дамп упадёт на ней с ошибкой. Индексы перестраивают командой REINDEX DATABASE имя_базы;. Для глубокой проверки индексов есть расширение amcheck.
Когда виновата не СУБД
Если СУБД ошибок не находит, а база падает, проверьте сеансовые данные и кэш сервера. Их очистка требует остановки службы агента сервера 1С, а это обрывает все сеансы всех баз на сервере. Делайте это только в согласованное окно и после проверки, что фоновые задания завершены.
Восстановление базы 1С из резервной копии
Если лечение не помогло или удалило слишком много, правильный путь — откат на последнюю исправную копию.
| Тип копии | Как восстановить | Что потеряете |
|---|---|---|
Выгрузка .dt | Конфигуратор → Администрирование → Загрузить информационную базу | Всё после даты выгрузки |
| Копия каталога файловой базы | Заменить 1Cv8.1CD файлом из копии | Всё после даты копии |
| Полный бэкап MS SQL | RESTORE DATABASE в SSMS | Зависит от модели восстановления |
| Бэкап + журналы транзакций | Восстановление на момент времени | Минуты до сбоя |
Порядок действий:
- Восстановите копию в новую базу, а не поверх повреждённой. Так у вас останутся обе.
- Проверьте в новой базе: открывается ли, сходятся ли остатки на дату копии.
- Выясните, какие документы введены после даты копии. Источники: повреждённая база (если она частично читается), журнал регистрации, первичка, банк-клиент, ЭДО.
- Перенесите недостающее: выписки банка загрузите заново, документы из ЭДО — повторно, остальное — вручную или обменом из повреждённой базы, если она открывается.
- Только после проверки переключите пользователей на восстановленную базу.
Загрузка .dt полностью заменяет данные в базе-приёмнике. Перед загрузкой в существующую базу убедитесь, что это именно та база, которую не жалко перезаписать.
Если повреждена только конфигурация
Когда данные в порядке, а сломана структура конфигурации, данные можно спасти отдельно. Сохраните конфигурацию базы в файл (Конфигурация → Сохранить конфигурацию в файл) и сравните с исходной поставкой. Если доработок нет, загрузите в базу типовую конфигурацию
того же релиза из .cf. Доработанную конфигурацию берут из хранилища или из копии у разработчика.
Как защитить базу 1С от повреждений
Большинство повреждений связаны с аварийной остановкой записи. Отсюда и меры.
- 🔌 ИБП на компьютер или сервер с базой. Отключение питания во время записи — классическая причина битого
1Cv8.1CD. - 🌐 Файловая база в сети. Не открывайте её по Wi-Fi и через VPN с нестабильным каналом. Когда пользователей становится больше пяти-десяти, стоит подумать о публикации на веб-сервере или переходе на клиент-серверный вариант.
- 🛡 Антивирус. Добавьте каталог базы и файлы
*.1CDв исключения сканирования в реальном времени. Антивирус, который блокирует файл на чтение во время записи, провоцирует сбои. - 💾 Свободное место. Следите за диском с базой и с каталогом временных файлов.
- 🔄 Обновления. Не прерывайте обновление конфигурации и реструктуризацию, даже если они идут час.
- 📦 Резервные копии по расписанию. Ежедневная выгрузка или копия, хранение не меньше недели, копия вне сервера. Раз в месяц проверяйте, что копия разворачивается.
- 🩺 Регламентная проверка. Раз в месяц-квартал — тестирование с реиндексацией и пересчётом итогов в нерабочее время.
Для серверных баз добавьте регламентные задания СУБД: регулярные бэкапы, DBCC CHECKDB по расписанию на MS SQL, контроль журналов транзакций.
Частые вопросы о повреждённой базе 1С
Можно ли запускать chdbfl.exe для клиент-серверной базы?
1Cv8.1CD файловой базы. Для серверной базы целостность проверяют средствами СУБД, а затем тестированием в конфигураторе.Сколько времени идёт тестирование и исправление?
Потеряю ли я данные при лечении базы?
REPAIR_ALLOW_DATA_LOSS удаляют повреждённые записи. Поэтому сначала копия, потом «Только тестирование», затем исправление с созданием объектов-заглушек.