База 1С сообщает о нарушении целостности: проверка, ремонт и восстановление данных

· 9 мин

Содержание

Если 1С пишет, что обнаружено нарушение целостности системы или данных, первым делом сделайте копию базы , затем запустите конфигуратор и выполните Администрирование → Тестирование и исправление с проверкой логической и ссылочной целостности. Для файловой базы перед этим стоит прогнать утилиту chdbfl.exe, для SQL-базы — проверку средствами СУБД. Если ремонт не помог, база восстанавливается из резервной копии.

Почти всегда причина одна из трёх: оборванная запись в файл или таблицу (свет, сеть, «убитый» процесс), сбой диска или повреждённая служебная информация — журнал регистрации и кэш. Ниже порядок, который позволяет исправить базу и журнал, не потеряв лишнего.

С чего начать диагностику: сообщение, журнал регистрации и масштаб сбоя

Не бросайтесь сразу в ремонт. Сначала поймите, что именно сломано: от этого зависит инструмент.

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

Не запускайте исправление на единственном экземпляре базы. Режим исправления может удалить объекты, которые посчитает битыми.

В журнале ищите записи непосредственно перед первым сбоем: аварийное завершение сеанса, ошибку записи объекта, обновление конфигурации , прерванное на середине. Если первая ошибка совпала по времени с обновлением — проблема скорее в структуре конфигурации, а не в данных.

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

Тестирование и исправление информационной базы в конфигураторе

Главный штатный инструмент — режим тестирования и исправления. Он работает и с файловыми, и с серверными базами.

Подготовка

  • 🔒 Завершите сеансы всех пользователей: режиму нужен монопольный доступ.
  • 💾 Убедитесь, что копия базы уже сделана.
  • ⏱ Выберите время: на базе в десятки гигабайт проверка идёт часами.

Запуск проверки

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

Как выбрать реакцию на битые ссылки

Для ссылочной целостности программа спрашивает, что делать с найденными проблемами:

  • Ссылки на несуществующие объекты: «Создавать объекты», «Очищать ссылки» или «Не изменять».
  • Частичная потеря объектов: «Создавать объекты», «Удалять объекты» или «Не изменять».

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

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

Файловая база: проверка физической целостности утилитой chdbfl.exe

Тестирование в конфигураторе проверяет логику данных. Если повреждён сам файл 1Cv8.1CD, конфигуратор может даже не открыться. Для этого случая у платформы есть утилита проверки физической целостности.

  1. Закройте базу у всех пользователей.
  2. Найдите chdbfl.exe в каталоге bin установленной платформы, например C:\Program Files\1cv8\8.3.24.1548\bin\.
  3. Запустите утилиту и укажите путь к файлу 1Cv8.1CD.
  4. Включите флажок «Исправлять обнаруженные ошибки» только для копии или после того, как копия сделана.
  5. Нажмите «Выполнить» и дождитесь окончания.

После успешной работы 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 по периодам. Если ошибка возникает при записи или открытии журнала:

  1. Завершите работу пользователей с базой. Для серверной базы предупредите, что при остановке службы агента сервера оборвутся сеансы во всех базах кластера, — делайте это в нерабочее время.
  2. Переименуйте каталог 1Cv8Log, например в 1Cv8Log_old. Не удаляйте: старая история может понадобиться для разбора.
  3. Запустите базу — платформа создаст пустой журнал.

Если журнал разросся до гигабайт и тормозит, его сокращают в конфигураторе: Администрирование → Настройка журнала регистрации, там же выбирается уровень записываемых событий.

Кэш и временные файлы

Повреждённый кэш даёт ошибки на одном компьютере или у одного пользователя.

  • 🧹 Клиентский кэш — каталоги с длинными идентификаторами в %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 и загрузка в новую базуБаза открывается в конфигуратореВыгрузка может прерваться на битых данных
Перенос данных через XMLDT не выгружается, но Предприятие работаетДолго, нужен контроль результата

Выгрузка и загрузка DT

  1. В конфигураторе выберите Администрирование → Выгрузить информационную базу и сохраните файл .dt.
  2. Создайте новую пустую базу.
  3. В новой базе: Администрирование → Загрузить информационную базу.
  4. Запустите тестирование и исправление уже на новой базе.

Пересборка через DT часто лечит то, что не исправил режим тестирования: данные записываются в новые таблицы с нуля. Если выгрузка падает с ошибкой, текст ошибки обычно указывает таблицу или объект — это подсказка, что именно повреждено.

Перенос через XML

Когда DT не выгружается, данные переносят по частям через обработку выгрузки и загрузки данных в XML: выгружаете справочники и документы из повреждённой базы, загружаете в чистую базу той же конфигурации. Битые объекты обработка пропустит с ошибкой — их восстанавливают вручную или из старой копии.

Конфигурацию отдельно сохраните командой Конфигурация → Сохранить конфигурацию в файл. Если повреждена именно структура конфигурации, файл .cf той же версии можно загрузить обратно.

Как не допустить повторного нарушения целостности базы

Повреждение почти всегда связано с инфраструктурой, а не с ошибкой пользователя. Профилактика простая, но регулярная.

  • ⚡ Питание. ИБП на сервер или компьютер с файловой базой, с корректным завершением работы при разряде.
  • 🌐 Сеть. Файловую базу не открывают по Wi-Fi и через VPN: обрыв во время записи — прямой путь к повреждённому 1Cv8.1CD. Для удалённой работы — терминальный доступ или серверный вариант.
  • 🛡 Антивирус. Добавьте каталоги баз, srvinfo и кэша в исключения: сканирование во время записи блокирует файлы.
  • 💽 Диски. Следите за SMART и свободным местом. Переполненный диск обрывает запись так же, как отключённый свет.
  • 💾 Копии. Для файловой базы — ежедневное копирование закрытого каталога, для SQL — полные копии плюс журналы транзакций по расписанию. Раз в месяц проверяйте, что копия разворачивается.
  • 🔧 Обслуживание SQL. Регулярное обновление статистики, перестроение индексов и DBCC CHECKDB в плане обслуживания.
  • 🔍 Плановое тестирование. Раз в квартал — тестирование в конфигураторе в режиме «Только тестирование». Ошибки, найденные заранее, исправить проще.
Регламент профилактики базы 1С
Выполнено: 0 / 6

Частые вопросы

Сколько длится тестирование и исправление базы?
Зависит от размера и выбранных проверок. Небольшая файловая база проверяется за минуты, серверная на сотни гигабайт с реструктуризацией — несколько часов. Запускайте в нерабочее время.
Можно ли запустить тестирование, пока пользователи работают?
Нет. Режиму нужен монопольный доступ, поэтому всех пользователей надо завершить. Проверку на уровне СУБД без исправления можно запускать на работающей базе.
Пропадут ли данные после исправления?
Могут, если выбрать «Удалять объекты» или «Очищать ссылки». С параметром «Создавать объекты» данные сохраняются, а на месте потерянных появляются заглушки, которые нужно заполнить вручную.
Нужно ли повторять проверку после исправления?
Да. Запустите тестирование ещё раз в режиме «Только тестирование». Чистый протокол — признак, что база исправлена.
Почему ошибка вернулась через неделю?
Причина осталась: нестабильная сеть, диск с ошибками, нет ИБП. Ремонт лечит последствия, а повторяться сбой будет, пока не устранена инфраструктурная проблема.