База 1С выдаёт ошибку: от кэша до DBCC CHECKDB

· 10 мин

Содержание

Чтобы исправить ошибку базы данных 1С 8.3, сначала сделайте копию базы , затем очистите кэш, а потом запустите проверку. Для файловой базы это утилита chdbfl.exe, для любой — Конфигуратор → Администрирование → Тестирование и исправление. Если база на MS SQL или PostgreSQL, проверку СУБД (DBCC CHECKDB, REINDEX) делают отдельно, средствами самой СУБД.

Порядок важен. Кэш снимает половину «страшных» сообщений за минуту и без риска. Исправление таблиц меняет данные, поэтому идёт последним и только после резервной копии.

Как понять, где именно сломалось

Ошибка базы данных — это общее название. За ним стоят три разных источника: повреждённые данные или файл, сломанная конфигурация, сбой СУБД или сервера. Лечатся они по-разному, поэтому сначала прочитайте текст сообщения целиком.

Типичные формулировки и что они означают:

  • 🗂️ Файл базы данных поврежден — физическое повреждение файла 1Cv8.1CD в файловой базе.
  • 🔄 Ошибка формата потока — платформа не может прочитать сохранённые данные: битый кэш, повреждённая запись или конфигурация.
  • 🧩 Нарушение целостности структуры конфигурации — сбой в самой конфигурации, чаще после прерванного обновления.
  • 🛢️ Ошибка СУБД: и дальше текст от Microsoft SQL Server или PostgreSQL — проблема на стороне СУБД: место на диске, права, повреждённые страницы, блокировки.
  • 🔒 Конфликт блокировок при выполнении транзакции — это не повреждение. Два пользователя одновременно правят одни данные. Чинить базу тут не нужно.

Где посмотреть подробности

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

Дальше откройте журнал регистрации. В пользовательском режиме он обычно в разделе Администрирование → Обслуживание, в Конфигураторе — Администрирование → Журнал регистрации. Отфильтруйте события по уровню «Ошибка» и по времени сбоя. Если ошибки идут у всех пользователей и на всех компьютерах, проблема в базе или на сервере. Если только у одного — почти наверняка в его кэше.

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

Перед исправлением ошибки: копия базы

Любое исправление начинайте с резервной копии. Тестирование с исправлением удаляет или подменяет повреждённые записи, и отменить это нельзя.

Как сделать копию по типу базы:

Тип базыКак сделать копиюКомментарий
ФайловаяСкопировать всю папку базы, где лежит 1Cv8.1CDСамый надёжный вариант при повреждении файла
ЛюбаяКонфигуратор → Администрирование → Выгрузить информационную базу (файл .dt)На битой базе выгрузка может упасть с той же ошибкой
MS SQLПолная резервная копия средствами SQL ServerДелает администратор СУБД
PostgreSQLpg_dump нужной базыТо же — на стороне сервера

Если выгрузка в .dt падает, это само по себе диагноз: данные повреждены. Для файловой базы тогда просто копируйте папку целиком и переходите к chdbfl.exe.

Очистка кэша и временных файлов

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

Кэш на компьютере пользователя

Самый простой способ — запустить базу с параметром /ClearCache. Его можно дописать в поле «Дополнительные параметры запуска» в настройках базы в окне запуска или в ярлык:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /ClearCache

Ручной способ — закрыть 1С и удалить папки с длинными именами вида GUID в двух каталогах:

  • %APPDATA%\1C\1cv8
  • %LOCALAPPDATA%\1C\1cv8

Сами каталоги и файлы списка баз (ibases.v8i) не трогайте — иначе пропадёт список баз в окне запуска.

Сеансовые данные на сервере 1С

В клиент-серверном варианте похожий кэш есть и на сервере: папки snccntx* внутри каталога srvinfo\reg_1541. Их чистят так:

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

Остановка агента сервера обрывает сеансы всех пользователей всех баз этого кластера. Несохранённые документы пропадут. Делайте это в нерабочее время или по согласованию.

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

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

  1. Откройте базу в Конфигураторе.
  2. Выберите Администрирование → Тестирование и исправление.
  3. Отметьте проверки. Для первого прохода хватит «Реиндексации таблиц», «Проверки логической целостности» и «Проверки ссылочной целостности».
  4. Выберите режим. Сначала — «Только тестирование»: так вы увидите масштаб проблемы, ничего не меняя.
  5. Нажмите «Выполнить» и дождитесь окончания. На базе в десятки гигабайт это может занять часы.
  6. Если ошибки найдены и копия есть, повторите с режимом «Тестирование и исправление».

Что делает каждая проверка:

ПроверкаКогда нужнаРиск
Реиндексация таблицОшибки поиска, сортировки, дубли в спискахМинимальный
Логическая целостностьОшибка формата потока, битые записиПовреждённые записи могут быть удалены
Ссылочная целостность«Объект не найден», ссылки на удалённые элементыСоздаются пустые объекты или очищаются ссылки
Пересчёт итоговНеверные остатки в отчётахДолго на больших базах
Сжатие таблицФайловая база сильно разросласьМинимальный, нужно место на диске
Реструктуризация таблицНичего другое не помоглоСамая долгая операция

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

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

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

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

Проверку можно запустить без интерфейса — например, ночью по расписанию:

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

Номер версии в пути замените на установленную у вас. Ключ -TestOnly включает режим без исправления. Результат смотрите в файле из параметра /Out.

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

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

Проверка через chdbfl.exe

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

  1. Убедитесь, что с базой никто не работает , в том числе фоновые задания и обмены.
  2. Скопируйте папку базы.
  3. Запустите chdbfl.exe и укажите путь к 1Cv8.1CD.
  4. Сначала проверьте без галочки «Исправлять обнаруженные ошибки».
  5. Если ошибки есть — поставьте галочку и запустите повторно.
  6. После неё откройте базу в Конфигураторе и выполните «Тестирование и исправление» с логической целостностью.

chdbfl.exe чинит структуру файла, а Тестирование и исправление — логику данных. Нередко нужны обе по очереди.

Почему файловая база ломается снова

  • 🌐 База лежит в сетевой папке, а пользователей больше трёх-пяти. Файловый вариант плохо переносит много одновременных записей по сети.
  • 🛡️ Антивирус проверяет 1Cv8.1CD на лету. Добавьте папку базы в исключения.
  • 🔌 Нет бесперебойника на компьютере или сервере, где лежит файл.
  • 💾 Диск с ошибками. Проверьте его штатными средствами Windows и посмотрите SMART.

Если файловая база ломается регулярно, а пользователей больше пяти, это сигнал переходить на клиент-серверный вариант. Лечение по кругу обходится дороже.

Клиент-серверная база: ошибки СУБД на MS SQL и PostgreSQL

Здесь chdbfl.exe не нужна — файла 1CD нет. Данные хранит СУБД, и проверять их нужно её средствами. «Тестирование и исправление» в Конфигураторе тоже работает, но физику страниц оно не видит.

Сначала прочитайте текст от СУБД

Во второй части сообщения Ошибка СУБД: обычно прямо сказано, в чём дело:

  • 📦 Нет места в файле данных или журнала транзакций — освободите диск или настройте рост файлов.
  • 🔑 Ошибка входа пользователя — сменили пароль учётной записи СУБД, указанной в свойствах базы в кластере.
  • 🧱 Сообщения о несогласованности страниц или повреждённых индексах — нужна проверка базы.
  • ⏱️ Превышение времени ожидания блокировки — это нагрузка или долгие транзакции, а не повреждение.

Проверка в MS SQL Server

Проверку запускают в SQL Server Management Studio от имени администратора СУБД:

DBCC CHECKDB ('Buh') WITH NO_INFOMSGS;

Если ошибки найдены, в конце вывода SQL Server подскажет минимальный уровень восстановления. Вариант REPAIR_REBUILD перестраивает индексы без потери данных. REPAIR_ALLOW_DATA_LOSS может удалить повреждённые страницы вместе с записями — после него обязательно «Тестирование и исправление» в 1С.

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

Не запускайте REPAIR_ALLOW_DATA_LOSS без свежей копии. Если есть резервная копия до сбоя, восстановиться из неё почти всегда лучше, чем удалять страницы.

Проверка в PostgreSQL

Для базы на PostgreSQL обычно хватает перестройки индексов и обновления статистики:

REINDEX DATABASE buh;
VACUUM ANALYZE;

REINDEX блокирует таблицы на время работы, поэтому пользователи в это время работать не смогут. В PostgreSQL 14 и новее есть утилита pg_amcheck — она проверяет индексы и таблицы на повреждения без исправления.

Если сломана сама конфигурация

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

  1. Проверьте её: в Конфигураторе меню Конфигурация → Проверка конфигурации.
  2. Если ошибка появилась после прерванного обновления — восстановите базу из копии, сделанной перед ним, и обновите заново.
  3. Если копии нет, но база открывается — сохраните конфигурацию в файл .cf (Конфигурация → Сохранить конфигурацию в файл) и попробуйте загрузить чистую типовую того же релиза. Для доработанной конфигурации это потеряет доработки, поэтому шаг согласуйте с программистом.

Для файловой базы с повреждённой конфигурацией часто срабатывает связка: chdbfl.exe с исправлением, затем Тестирование и исправление с реструктуризацией.

Регулярное обслуживание базы

Большинство повреждений не случается внезапно. Перед ними обычно были сбои питания, переполненный диск или годами не обслуживаемая СУБД.

Что делать регулярно:

  • 🗓️ Резервная копия каждый день, а не только перед обновлением. Раз в месяц пробуйте восстановить её на тестовом сервере — непроверенная копия может оказаться пустой.
  • 🛢️ На MS SQL — план обслуживания: перестройка или реорганизация индексов и обновление статистики раз в неделю, DBCC CHECKDB раз в неделю-две.
  • 🐘 На PostgreSQL — включённый autovacuum и периодический VACUUM ANALYZE после крупных загрузок и закрытия периода.
  • 🧹 Для файловой базы — раз в месяц Тестирование и исправление со сжатием таблиц.
  • 💽 Свободное место на дисках с базой и журналами — запас не меньше объёма самой базы. Иначе реструктуризация при обновлении упадёт посередине.
  • 🔌 Бесперебойник на сервере и корректное завершение работы при отключении электричества.
Перед обновлением конфигурации
Выполнено: 0 / 5

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

Можно ли запускать «Тестирование и исправление», пока бухгалтеры работают?
Нет. Режиму нужен монопольный доступ к базе, при открытых сеансах он не запустится. Планируйте проверку на вечер или выходной.
Сколько длится проверка базы?
Небольшая файловая база на 1–2 ГБ проверяется за 10–30 минут. Серверная база на сотни гигабайт с пересчётом итогов и реструктуризацией — несколько часов. Реиндексация обычно самая быстрая часть.
После исправления в справочниках появились элементы с непонятными названиями. Что это?
Это объекты, которые программа создала вместо битых ссылок при варианте «Создавать объекты». Найдите их, посмотрите, где они используются, и замените на правильные элементы. Удаляйте только после замены.
Чем отличается chdbfl.exe от «Тестирования и исправления»?
chdbfl.exe проверяет физическую структуру файла 1Cv8.1CD и работает только с файловыми базами. «Тестирование и исправление» проверяет логику данных — индексы, ссылки, итоги — и работает для любого варианта базы.
Ничего не помогло. Что дальше?
Восстанавливайте базу из последней рабочей копии и вносите данные за пропущенный период заново. Если копии нет, а база на СУБД, привлекайте администратора баз данных: восстановление повреждённых страниц — работа для специалиста по конкретной СУБД.