База 1С сообщает о нарушении целостности: проверка, ремонт и восстановление данных
Содержание
Если 1С пишет, что обнаружено нарушение целостности системы
или данных, первым делом сделайте копию базы
, затем запустите конфигуратор и выполните Администрирование → Тестирование и исправление с проверкой логической и ссылочной целостности. Для файловой базы перед этим стоит прогнать утилиту chdbfl.exe, для SQL-базы — проверку средствами СУБД. Если ремонт не помог, база восстанавливается из резервной копии.
Почти всегда причина одна из трёх: оборванная запись в файл или таблицу (свет, сеть, «убитый» процесс), сбой диска или повреждённая служебная информация — журнал регистрации и кэш. Ниже порядок, который позволяет исправить базу и журнал, не потеряв лишнего.
С чего начать диагностику: сообщение, журнал регистрации и масштаб сбоя
Не бросайтесь сразу в ремонт. Сначала поймите, что именно сломано: от этого зависит инструмент.
- Сохраните точный текст ошибки. Нажмите в окне сообщения «Подробно» и скопируйте текст целиком. Типичные формулировки:
Нарушена целостность структуры конфигурации,Файл базы данных поврежден,Ошибка формата потока, сообщения о битых ссылках вида<Объект не найден>. - Определите, где возникает ошибка. При запуске любой базы на этом компьютере — скорее кэш или платформа. При запуске одной базы у всех пользователей — данные или конфигурация. При открытии одного документа — конкретный объект.
- Откройте журнал регистрации. В режиме Предприятия в Бухгалтерии 3.0:
Администрирование → Обслуживание → Журнал регистрации. В конфигураторе:Администрирование → Журнал регистрации. Поставьте отбор по уровню «Ошибка» и по времени, когда всё сломалось. - Сделайте копию «как есть». Для файловой базы — скопируйте весь каталог с закрытой базой. Для серверной — резервную копию средствами СУБД. Ремонт меняет данные необратимо, и копия до ремонта — единственный способ откатиться.
Не запускайте исправление на единственном экземпляре базы. Режим исправления может удалить объекты, которые посчитает битыми.
В журнале ищите записи непосредственно перед первым сбоем: аварийное завершение сеанса, ошибку записи объекта, обновление конфигурации , прерванное на середине. Если первая ошибка совпала по времени с обновлением — проблема скорее в структуре конфигурации, а не в данных.
Тестирование и исправление информационной базы в конфигураторе
Главный штатный инструмент — режим тестирования и исправления. Он работает и с файловыми, и с серверными базами.
Подготовка
- 🔒 Завершите сеансы всех пользователей: режиму нужен монопольный доступ.
- 💾 Убедитесь, что копия базы уже сделана.
- ⏱ Выберите время: на базе в десятки гигабайт проверка идёт часами.
Запуск проверки
- Откройте базу в режиме «Конфигуратор».
- Выберите
Администрирование → Тестирование и исправление. - Отметьте нужные проверки (таблица ниже).
- В режиме проверки сначала выберите «Только тестирование» — увидите масштаб, ничего не меняя.
- Нажмите «Выполнить» и дождитесь протокола.
- Сохраните протокол, если ошибок много, и повторите запуск в режиме «Тестирование и исправление».
| Проверка | Что делает | Когда включать |
|---|---|---|
| Реиндексация таблиц ИБ | Перестраивает индексы | Ошибки поиска, дубли, «плавающие» сбои |
| Проверка логической целостности ИБ | Проверяет структуру таблиц и данных | Почти всегда |
| Проверка ссылочной целостности ИБ | Ищет ссылки на несуществующие объекты | <Объект не найден>, ошибки в документах |
| Пересчёт итогов | Пересчитывает итоги регистров | Неверные остатки и обороты |
| Сжатие таблиц ИБ | Удаляет пустоты в таблицах | После массового удаления данных |
| Реструктуризация таблиц ИБ | Пересоздаёт таблицы базы | Тяжёлые повреждения; самая долгая операция |
Как выбрать реакцию на битые ссылки
Для ссылочной целостности программа спрашивает, что делать с найденными проблемами:
- Ссылки на несуществующие объекты: «Создавать объекты», «Очищать ссылки» или «Не изменять».
- Частичная потеря объектов: «Создавать объекты», «Удалять объекты» или «Не изменять».
💡 Для учётной базы безопаснее «Создавать объекты». Программа создаст объекты-заглушки, и вы увидите, где именно были ссылки. «Очищать ссылки» и «Удалять объекты» стирают следы: в документе пропадёт контрагент или номенклатура, и восстановить связь потом можно только по копии.
После исправления найдите созданные заглушки — обычно это элементы с пустым наименованием или наименованием вида «Объект не найден» — и вручную замените их правильными значениями.
Файловая база: проверка физической целостности утилитой chdbfl.exe
Тестирование в конфигураторе проверяет логику данных. Если повреждён сам файл 1Cv8.1CD, конфигуратор может даже не открыться. Для этого случая у платформы есть утилита проверки физической целостности.
- Закройте базу у всех пользователей.
- Найдите
chdbfl.exeв каталогеbinустановленной платформы, напримерC:\Program Files\1cv8\8.3.24.1548\bin\. - Запустите утилиту и укажите путь к файлу
1Cv8.1CD. - Включите флажок «Исправлять обнаруженные ошибки» только для копии или после того, как копия сделана.
- Нажмите «Выполнить» и дождитесь окончания.
После успешной работы chdbfl.exe всё равно запустите тестирование и исправление в конфигураторе: физический ремонт восстанавливает файл, но не гарантирует, что данные внутри согласованы.
Не копируйте и не проверяйте файл базы, пока с ним кто-то работает. Копия открытой файловой базы сама может оказаться повреждённой.
Если утилита завершается ошибкой или после неё база не открывается, переходите к восстановлению из копии — дальнейшие попытки ремонта рабочего файла только ухудшат ситуацию.
Нарушение целостности SQL-базы: проверка на уровне СУБД
В клиент-серверном варианте данные лежат в MS SQL Server или PostgreSQL. Если повреждены страницы базы на уровне СУБД, тестирование в конфигураторе упадёт или не найдёт причину. Проверку надо делать средствами самой СУБД.
MS SQL Server
Проверка без исправления безопасна и выполняется на работающей базе (нагрузка на диск будет высокой):
DBCC CHECKDB ('buh_base') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Если команда вернула ошибки согласованности, не спешите с параметром REPAIR_ALLOW_DATA_LOSS. Он переводит базу в однопользовательский режим и может выкинуть повреждённые страницы вместе с данными. Сначала — восстановление из последней полной копии и журналов транзакций, ремонт с потерей данных — только когда копий нет.
PostgreSQL
Для проверки индексов и таблиц используется расширение amcheck, а с версии 14 — консольная утилита pg_amcheck:
pg_amcheck -d buh_base --heapallindexed
В журнале сервера PostgreSQL ищите сообщения об ошибках чтения страниц и контрольных сумм. Если повреждён только индекс, его перестраивают командой REINDEX; повреждение таблиц лечится восстановлением из копии.
| Ситуация | Что делать |
|---|---|
| СУБД сообщает о битых страницах | Восстановить из копии СУБД, потом тестирование в конфигураторе |
| СУБД ошибок не нашла | Тестирование и исправление в конфигураторе |
| Повреждены только индексы | Перестроить индексы, затем реиндексация в конфигураторе |
💡 Перед проверкой посмотрите свободное место на диске с базой и с tempdb (MS SQL). Переполненный диск — частая причина оборванных записей, и без места ремонт тоже не пройдёт.
Повреждён журнал регистрации или кэш: что можно удалить без вреда
Часть «нарушений целостности» вообще не касается учётных данных. Ломается служебная информация, которую платформа пересоздаёт сама.
Журнал регистрации
Журнал хранится в каталоге 1Cv8Log:
- 📁 файловая база — внутри каталога базы;
- 📁 серверная база — в каталоге кластера, обычно
...\srvinfo\reg_1541\<идентификатор базы>\1Cv8Log.
В новом формате журнал — один файл 1Cv8.lgd, в старом — файл 1Cv8.lgf и набор файлов .lgp по периодам. Если ошибка возникает при записи или открытии журнала:
- Завершите работу пользователей с базой. Для серверной базы предупредите, что при остановке службы агента сервера оборвутся сеансы во всех базах кластера, — делайте это в нерабочее время.
- Переименуйте каталог
1Cv8Log, например в1Cv8Log_old. Не удаляйте: старая история может понадобиться для разбора. - Запустите базу — платформа создаст пустой журнал.
Если журнал разросся до гигабайт и тормозит, его сокращают в конфигураторе: Администрирование → Настройка журнала регистрации, там же выбирается уровень записываемых событий.
Кэш и временные файлы
Повреждённый кэш даёт ошибки на одном компьютере или у одного пользователя.
- 🧹 Клиентский кэш — каталоги с длинными идентификаторами в
%APPDATA%\1C\1cv8и%LOCALAPPDATA%\1C\1cv8. Удаляйте их при закрытой 1С. - 🧹 Быстрый способ без ручного удаления — запуск с параметром
/ClearCache. - 🧹 Серверный кэш — каталоги
snccntxв каталоге кластера. Их чистят только при остановленной службе сервера 1С, то есть с обрывом всех сеансов.
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "D:\Bases\Buh" /ClearCache
Когда ремонт не помог: резервная копия, выгрузка DT и XML
Если после всех проверок база не открывается или данные явно потеряны, восстанавливайтесь. Вариантов три — от самого надёжного к самому трудоёмкому.
| Способ | Когда подходит | Риски |
|---|---|---|
| Резервная копия до сбоя | Есть свежая копия | Потеря данных за период после копии |
| Выгрузка в DT и загрузка в новую базу | База открывается в конфигураторе | Выгрузка может прерваться на битых данных |
| Перенос данных через XML | DT не выгружается, но Предприятие работает | Долго, нужен контроль результата |
Выгрузка и загрузка DT
- В конфигураторе выберите
Администрирование → Выгрузить информационную базуи сохраните файл.dt. - Создайте новую пустую базу.
- В новой базе:
Администрирование → Загрузить информационную базу. - Запустите тестирование и исправление уже на новой базе.
Пересборка через DT часто лечит то, что не исправил режим тестирования: данные записываются в новые таблицы с нуля. Если выгрузка падает с ошибкой, текст ошибки обычно указывает таблицу или объект — это подсказка, что именно повреждено.
Перенос через XML
Когда DT не выгружается, данные переносят по частям через обработку выгрузки и загрузки данных в XML: выгружаете справочники и документы из повреждённой базы, загружаете в чистую базу той же конфигурации. Битые объекты обработка пропустит с ошибкой — их восстанавливают вручную или из старой копии.
Конфигурацию отдельно сохраните командой Конфигурация → Сохранить конфигурацию в файл. Если повреждена именно структура конфигурации, файл .cf той же версии можно загрузить обратно.
Как не допустить повторного нарушения целостности базы
Повреждение почти всегда связано с инфраструктурой, а не с ошибкой пользователя. Профилактика простая, но регулярная.
- ⚡ Питание. ИБП на сервер или компьютер с файловой базой, с корректным завершением работы при разряде.
- 🌐 Сеть. Файловую базу
не открывают по Wi-Fi и через VPN: обрыв во время записи — прямой путь к повреждённому
1Cv8.1CD. Для удалённой работы — терминальный доступ или серверный вариант. - 🛡 Антивирус. Добавьте каталоги баз,
srvinfoи кэша в исключения: сканирование во время записи блокирует файлы. - 💽 Диски. Следите за SMART и свободным местом. Переполненный диск обрывает запись так же, как отключённый свет.
- 💾 Копии. Для файловой базы — ежедневное копирование закрытого каталога, для SQL — полные копии плюс журналы транзакций по расписанию. Раз в месяц проверяйте, что копия разворачивается.
- 🔧 Обслуживание SQL. Регулярное обновление статистики, перестроение индексов и
DBCC CHECKDBв плане обслуживания. - 🔍 Плановое тестирование. Раз в квартал — тестирование в конфигураторе в режиме «Только тестирование». Ошибки, найденные заранее, исправить проще.