Лечение повреждённой информационной базы 1С: от проверки файла до перезагрузки через .dt
Содержание
Чтобы вылечить базу 1С, сначала снимите полную копию, затем проверьте физическую целостность (для файловой базы — утилитой chdbfl.exe, для серверной — средствами СУБД), после этого запустите в Конфигураторе Администрирование → Тестирование и исправление. Если и это не помогло — выгрузите базу в .dt и загрузите в новую пустую.
Порядок важен. Логическое тестирование на физически битом файле может упасть посередине и сделать хуже. Поэтому диагностика идёт снизу вверх: файл или таблицы СУБД → структура данных 1С → ссылки и итоги.
С чего начать: признаки поломки и копия базы
Повреждение базы почти всегда видно по сообщениям. Типичные тексты:
- 🔴
Файл базы данных поврежден— физическая порча файла1Cv8.1CD; - 🔴
Ошибка формата потока— битые данные в кэше, журнале или в самой таблице; - 🔴
Нарушена целостность структуры конфигурации— повреждены таблицы конфигурации; - 🟠
<Объект не найден> (123:8a3b...)в полях документов — «висящие» ссылки на удалённые объекты; - 🟠 отрицательные остатки, которых не было, и расхождение отчётов с оборотами — сбитые итоги;
- 🟡 база открывается, но падает при входе в определённый документ или список.
Первые три — физика или структура. Последние три — логика. От этого зависит, какой инструмент брать.
Сначала копия, потом всё остальное
Любое лечение начинайте только после копии базы в нетронутом виде. Утилиты исправления удаляют то, что не могут прочитать. Если результат не устроит, вернуться можно только к копии.
- Попросите всех пользователей выйти и убедитесь, что сеансов нет.
- Для файловой базы скопируйте всю папку с
1Cv8.1CDна другой диск. - Для серверной сделайте резервную копию средствами СУБД (
BACKUP DATABASEв MS SQL илиpg_dumpв PostgreSQL). - Если база открывается, дополнительно сохраните выгрузку
.dtи конфигурацию.cfчерез Конфигуратор.
Копию битого файла не лечите и не открывайте. Работайте на ещё одном экземпляре — оригинальная копия пригодится, если первая попытка уничтожит часть данных.
Проверка файловой базы утилитой chdbfl
chdbfl.exe проверяет физическую структуру файла 1Cv8.1CD: страницы, блоки, внутренние таблицы. Утилита ставится вместе с платформой и лежит в каталоге bin нужной версии, например C:\Program Files\1cv8\8.3.24.1548\bin\chdbfl.exe. Номер версии в пути у вас будет свой.
Для серверных баз утилита не применяется: там данные хранит СУБД.
Как запустить проверку
- Закройте все сеансы базы. Утилита работает только при монопольном доступе к файлу.
- Запустите
chdbfl.exeот имени администратора. - В поле имени файла укажите путь к
1Cv8.1CD(в копии или в рабочей папке, если копия уже сделана). - Сначала запустите проверку без флажка «Исправлять обнаруженные ошибки» — посмотрите, что найдено.
- Если ошибки есть, включите флажок и запустите повторно.
- После исправления запустите проверку ещё раз. Повторять, пока утилита не покажет чистый результат.
Берите chdbfl.exe той же версии платформы, на которой работает база. Утилита от старой версии может не понять формат файла, созданного новой.
Что делать с результатом
| Что показала утилита | Что делать дальше |
|---|---|
| Ошибок не найдено | Физика в порядке, переходите к тестированию в Конфигураторе |
| Ошибки исправлены, повторная проверка чистая | Переходите к тестированию в Конфигураторе — логика после исправления почти всегда нарушена |
| Ошибки остаются после нескольких проходов | Пробуйте выгрузку в .dt; если не выгружается — восстановление из резервной копии |
| Утилита падает или не открывает файл | Файл повреждён в заголовке; поможет только копия или специалист по восстановлению файлов 1CD |
Утилита при исправлении удаляет нечитаемые блоки. Потерянными могут оказаться отдельные документы или записи регистров — их потом видно как <Объект не найден>.
Журнал регистрации и регламентные задания: когда они мешают лечению
Журнал регистрации — частый, но неочевидный виновник. Он хранится отдельно от данных, в папке 1Cv8Log внутри каталога файловой базы (у серверной — в каталоге кластера на сервере). Если журнал повреждён или разросся до десятков гигабайт, база может долго открываться или выдавать Ошибка формата потока.
Повреждённый журнал файловой базы
- Закройте все сеансы.
- Переименуйте папку
1Cv8Log, например в1Cv8Log_old. Не удаляйте её сразу. - Запустите базу. Платформа создаст новый пустой журнал.
- Если ошибка ушла — дело было в журнале. Старую папку держите, пока не убедитесь, что история событий не нужна для разбора.
После переименования история входов и изменений в базе будет недоступна из программы. Если журнал нужен для расследования, сначала скопируйте его.
Уровень регистрации и размер журнала
Журнал настраивается двумя способами:
- в Конфигураторе:
Администрирование → Настройка журнала регистрации— уровень регистрации, период разделения на файлы и сокращение журнала (удаление событий до указанной даты); - в пользовательском режиме типовых конфигураций:
Администрирование → Обслуживание → Журнал регистрации, ссылка на настройки журнала.
Уровень «Регистрировать все события» на большой базе раздувает журнал быстро. Для повседневной работы обычно хватает регистрации ошибок и предупреждений. На время лечения уровень можно понизить, а после — вернуть то, что требуют ваши регламенты.
Регламентные задания на время лечения
Фоновые и регламентные задания пишут в базу, пока вы её проверяете: обновление индекса полнотекстового поиска , загрузка курсов, обмены. На файловой базе их выполнение привязано к открытым сеансам, на серверной — к кластеру.
- 🔧 В серверной базе в свойствах информационной базы в консоли кластера включите флажок «Блокировка регламентных заданий включена». Снимите его после лечения.
- 🔧 В типовой конфигурации список заданий открывается в
Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. Там можно временно выключить тяжёлые задания.
Если после лечения база стала медленной, проверьте задание обновления полнотекстового индекса. После массового исправления данных оно перестраивает индекс и надолго грузит базу.
Тестирование и исправление в Конфигураторе
Это основной инструмент логического лечения. Работает и для файловых, и для серверных баз. Требует монопольного доступа.
Путь: Конфигуратор → Администрирование → Тестирование и исправление.
Какие флажки включать
| Пункт | Что делает | Когда включать |
|---|---|---|
| Реиндексация таблиц информационной базы | Перестраивает индексы | Всегда при лечении |
| Проверка логической целостности информационной базы | Сверяет внутреннюю структуру таблиц 1С | Всегда |
| Проверка ссылочной целостности информационной базы | Ищет ссылки на несуществующие объекты | Всегда, но сначала в режиме «Не изменять» |
| Пересчёт итогов | Пересчитывает итоги регистров по движениям | При кривых остатках и отчётах |
| Сжатие таблиц информационной базы | Убирает пустое место | Файловая база после удаления данных |
| Реструктуризация таблиц информационной базы | Пересоздаёт таблицы | Только если остальное не помогло: долго и тяжело |
Режим «Тестирование» или «Тестирование и исправление»
Первый прогон делайте в режиме «Тестирование». Программа только покажет список проблем. Так вы поймёте масштаб и решите, что делать с битыми ссылками.
Для битых ссылок и частично потерянных объектов есть варианты действий:
- Создавать объекты — на месте потерянного появится объект-заглушка. Ссылки в документах сохранятся, заглушку потом можно заполнить или заменить. Самый безопасный вариант для учёта.
- Очищать ссылки / Удалять объекты — пустые поля или потерянные записи. Данные исчезнут без следа, разобраться потом сложнее.
- Не изменять — только сообщить.
На бухгалтерской базе выбирайте создание объектов, а не удаление. Пустое поле контрагента в проведённом документе хуже, чем элемент «Объект не найден», который видно и можно исправить.
Тестирование из командной строки
Для ночного запуска на сервере или по расписанию пригодится пакетный режим:
"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.
Не храните пароль администратора в bat-файле, к которому есть доступ у пользователей. Заведите отдельную учётную запись для обслуживания.
Лечение серверной базы на уровне SQL
В клиент-серверном варианте сначала проверяют саму СУБД. Средства 1С видят таблицы так, как их отдаёт сервер базы данных. Если на диске битая страница, тестирование в Конфигураторе может упасть с ошибкой СУБД.
MS SQL Server
Проверка без изменений:
DBCC CHECKDB ('Buh') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Если ошибки есть, исправление требует однопользовательского режима:
ALTER DATABASE Buh SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB ('Buh', REPAIR_REBUILD);
ALTER DATABASE Buh SET MULTI_USER;
ROLLBACK IMMEDIATE обрывает все подключения к базе, включая рабочие процессы 1С. Делайте это вне рабочего времени, предупредив пользователей.
REPAIR_REBUILD перестраивает индексы без потери данных. Вариант REPAIR_ALLOW_DATA_LOSS удаляет повреждённые страницы — после него обязательно тестирование в Конфигураторе, а лучше сначала попытка восстановить базу из резервной копии СУБД.
PostgreSQL
Для PostgreSQL штатного аналога CHECKDB нет. Практический набор:
VACUUM ANALYZE— чистит «мёртвые» строки и обновляет статистику;REINDEX DATABASE имя_базы;— перестраивает индексы, если ошибки указывают на них;- расширение
amcheck— проверяет структуру индексов.
Перестроение индексов блокирует таблицы. Запускайте его, когда пользователей в базе нет.
Регламент обслуживания СУБД
Для серверной базы нужен план обслуживания: обновление статистики, перестроение или дефрагментация индексов, полная копия. Без него база не «ломается», но тормозит, а это часто принимают за повреждение.
| Операция | Ориентировочная частота |
|---|---|
| Обновление статистики | Ежедневно ночью |
| Перестроение индексов | Раз в неделю |
| Полная резервная копия | Ежедневно |
| Копия журнала транзакций (модель Full) | Каждые 1–4 часа |
Перезагрузка базы через выгрузку в .dt
Выгрузка и загрузка — самый радикальный способ лечения средствами 1С. Платформа читает все данные и записывает их в чистую базу с нуля. Внутренние ошибки хранения при этом не переносятся.
Порядок действий
- В Конфигураторе:
Администрирование → Выгрузить информационную базу. Укажите путь к файлу.dt. - Создайте новую пустую информационную базу (в списке баз — «Добавить» → «Создание новой информационной базы» → без конфигурации).
- Откройте новую базу в Конфигураторе:
Администрирование → Загрузить информационную базу, выберите файл.dt. - Запустите в новой базе тестирование и исправление с реиндексацией и пересчётом итогов.
- Проверьте ключевые отчёты: ОСВ, остатки, расчёты с контрагентами. Сравните с теми же отчётами старой базы.
- Только после этого переключите пользователей на новую базу.
Загрузку делайте именно в новую базу, а не поверх старой. Загрузка .dt полностью заменяет содержимое базы. Если она прервётся, старая база останется нетронутой.
Если выгрузка падает с ошибкой
Выгрузка спотыкается о те же битые данные. Порядок такой:
- сначала
chdbfl(для файловой) или проверка СУБД (для серверной); - затем тестирование и исправление;
- затем снова выгрузка.
Если выгрузка всё равно не проходит, база восстанавливается из последней резервной копии. Документы за период после копии придётся ввести заново или перенести обработкой из повреждённой базы, если она хоть как-то открывается.
Как не допустить повторного повреждения
Файловая база ломается чаще серверной, и причины почти всегда одни и те же.
- ⚡ Отключение питания и аварийное завершение. Сервер или компьютер с базой — только через ИБП. Не снимайте процесс
1cv8.exeчерез диспетчер задач во время записи. - 🌐 Сетевая папка по нестабильной сети. Файловая база по Wi-Fi или VPN с обрывами — прямой путь к
Файл базы данных поврежден. Для удалённой работы используйте терминальный доступ или веб-публикацию. - 🛡️ Антивирус. Добавьте в исключения проверки каталог базы и каталоги кэша 1С в профиле пользователя. Проверка файла
1Cv8.1CDна лету замедляет работу и может мешать записи. - 💾 Диск. Следите за SMART и свободным местом. Когда место на диске заканчивается во время записи, файл может повредиться.
- 🔄 Копии. Автоматическая ежедневная копия с хранением нескольких поколений. Копия, которую ни разу не пробовали развернуть, — не копия.
Раз в месяц полезно делать профилактический прогон: выгрузка .dt в тестовую базу и тестирование и исправление в режиме «Тестирование». Ошибки, найденные заранее, лечатся без простоя.
Частые вопросы
Сколько времени занимает тестирование и исправление?
Можно ли лечить базу, пока в ней работают пользователи?
chdbfl, и тестирование в Конфигураторе требуют монопольного доступа. Проверку средствами СУБД без исправления можно запускать в рабочее время, но она нагружает сервер.Помогает ли очистка кэша при ошибке формата потока?
/ClearCache или удалите каталоги кэша в профиле пользователя. Если ошибка у всех — проблема в базе или журнале, а не в кэше.