База 1С выдаёт ошибку: от кэша до DBCC CHECKDB
Содержание
Чтобы исправить ошибку базы данных 1С 8.3, сначала сделайте копию базы
, затем очистите кэш, а потом запустите проверку. Для файловой базы это утилита chdbfl.exe, для любой — Конфигуратор → Администрирование → Тестирование и исправление. Если база на MS SQL или PostgreSQL, проверку СУБД (DBCC CHECKDB, REINDEX) делают отдельно, средствами самой СУБД.
Порядок важен. Кэш снимает половину «страшных» сообщений за минуту и без риска. Исправление таблиц меняет данные, поэтому идёт последним и только после резервной копии.
Как понять, где именно сломалось
Ошибка базы данных — это общее название. За ним стоят три разных источника: повреждённые данные или файл, сломанная конфигурация, сбой СУБД или сервера. Лечатся они по-разному, поэтому сначала прочитайте текст сообщения целиком.
Типичные формулировки и что они означают:
- 🗂️
Файл базы данных поврежден— физическое повреждение файла1Cv8.1CDв файловой базе. - 🔄
Ошибка формата потока— платформа не может прочитать сохранённые данные: битый кэш, повреждённая запись или конфигурация. - 🧩
Нарушение целостности структуры конфигурации— сбой в самой конфигурации, чаще после прерванного обновления. - 🛢️
Ошибка СУБД:и дальше текст от Microsoft SQL Server или PostgreSQL — проблема на стороне СУБД: место на диске, права, повреждённые страницы, блокировки. - 🔒
Конфликт блокировок при выполнении транзакции— это не повреждение. Два пользователя одновременно правят одни данные. Чинить базу тут не нужно.
Где посмотреть подробности
Короткое окно с ошибкой часто обрезает текст. Нажмите в нём «Подробно» — там будет полный текст и место, где упала операция.
Дальше откройте журнал регистрации. В пользовательском режиме он обычно в разделе Администрирование → Обслуживание, в Конфигураторе — Администрирование → Журнал регистрации. Отфильтруйте события по уровню «Ошибка» и по времени сбоя. Если ошибки идут у всех пользователей и на всех компьютерах, проблема в базе или на сервере. Если только у одного — почти наверняка в его кэше.
Перед исправлением ошибки: копия базы
Любое исправление начинайте с резервной копии. Тестирование с исправлением удаляет или подменяет повреждённые записи, и отменить это нельзя.
Как сделать копию по типу базы:
| Тип базы | Как сделать копию | Комментарий |
|---|---|---|
| Файловая | Скопировать всю папку базы, где лежит 1Cv8.1CD | Самый надёжный вариант при повреждении файла |
| Любая | Конфигуратор → Администрирование → Выгрузить информационную базу (файл .dt) | На битой базе выгрузка может упасть с той же ошибкой |
| MS SQL | Полная резервная копия средствами SQL Server | Делает администратор СУБД |
| PostgreSQL | pg_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С:Предприятия 8.3».
- Удалите папки
snccntx*в каталогеsrvinfo\reg_1541(путь кsrvinfoзадаётся при установке сервера). - Запустите службу заново.
Остановка агента сервера обрывает сеансы всех пользователей всех баз этого кластера. Несохранённые документы пропадут. Делайте это в нерабочее время или по согласованию.
Тестирование и исправление информационной базы в Конфигураторе
Это главный встроенный инструмент, он работает и для файловой, и для серверной базы. Нужен монопольный режим: перед запуском все пользователи должны выйти.
- Откройте базу в Конфигураторе.
- Выберите
Администрирование → Тестирование и исправление. - Отметьте проверки. Для первого прохода хватит «Реиндексации таблиц», «Проверки логической целостности» и «Проверки ссылочной целостности».
- Выберите режим. Сначала — «Только тестирование»: так вы увидите масштаб проблемы, ничего не меняя.
- Нажмите «Выполнить» и дождитесь окончания. На базе в десятки гигабайт это может занять часы.
- Если ошибки найдены и копия есть, повторите с режимом «Тестирование и исправление».
Что делает каждая проверка:
| Проверка | Когда нужна | Риск |
|---|---|---|
| Реиндексация таблиц | Ошибки поиска, сортировки, дубли в списках | Минимальный |
| Логическая целостность | Ошибка формата потока, битые записи | Повреждённые записи могут быть удалены |
| Ссылочная целостность | «Объект не найден», ссылки на удалённые элементы | Создаются пустые объекты или очищаются ссылки |
| Пересчёт итогов | Неверные остатки в отчётах | Долго на больших базах |
| Сжатие таблиц | Файловая база сильно разрослась | Минимальный, нужно место на диске |
| Реструктуризация таблиц | Ничего другое не помогло | Самая долгая операция |
Как выбрать реакцию на битые ссылки
В нижней части окна две группы настроек. Для ссылок на несуществующие объекты лучше выбрать «Создавать объекты». Программа создаст объекты-заглушки, их потом видно в отчётах и можно заменить на правильные. «Очищать ссылки» молча обнуляет реквизиты, и потом трудно понять, что там было.
Для частичной потери данных объекта обычно ставят «Не изменять» на первом проходе. Так вы прочитаете отчёт проверки и решите, удалять ли повреждённое.
Запуск из командной строки
Проверку можно запустить без интерфейса — например, ночью по расписанию:
"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.
- Убедитесь, что с базой никто не работает , в том числе фоновые задания и обмены.
- Скопируйте папку базы.
- Запустите
chdbfl.exeи укажите путь к1Cv8.1CD. - Сначала проверьте без галочки «Исправлять обнаруженные ошибки».
- Если ошибки есть — поставьте галочку и запустите повторно.
- После неё откройте базу в Конфигураторе и выполните «Тестирование и исправление» с логической целостностью.
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 — она проверяет индексы и таблицы на повреждения без исправления.
Если сломана сама конфигурация
Когда ошибка про структуру конфигурации или появляется сразу при открытии Конфигуратора, данные могут быть целы. Повреждена конфигурация.
- Проверьте её: в Конфигураторе меню
Конфигурация → Проверка конфигурации. - Если ошибка появилась после прерванного обновления — восстановите базу из копии, сделанной перед ним, и обновите заново.
- Если копии нет, но база открывается — сохраните конфигурацию в файл
.cf(Конфигурация → Сохранить конфигурацию в файл) и попробуйте загрузить чистую типовую того же релиза. Для доработанной конфигурации это потеряет доработки, поэтому шаг согласуйте с программистом.
Для файловой базы с повреждённой конфигурацией часто срабатывает связка: chdbfl.exe с исправлением, затем Тестирование и исправление с реструктуризацией.
Регулярное обслуживание базы
Большинство повреждений не случается внезапно. Перед ними обычно были сбои питания, переполненный диск или годами не обслуживаемая СУБД.
Что делать регулярно:
- 🗓️ Резервная копия каждый день, а не только перед обновлением. Раз в месяц пробуйте восстановить её на тестовом сервере — непроверенная копия может оказаться пустой.
- 🛢️ На MS SQL — план обслуживания: перестройка или реорганизация индексов и обновление статистики раз в неделю,
DBCC CHECKDBраз в неделю-две. - 🐘 На PostgreSQL — включённый autovacuum и периодический
VACUUM ANALYZEпосле крупных загрузок и закрытия периода. - 🧹 Для файловой базы — раз в месяц
Тестирование и исправлениесо сжатием таблиц. - 💽 Свободное место на дисках с базой и журналами — запас не меньше объёма самой базы. Иначе реструктуризация при обновлении упадёт посередине.
- 🔌 Бесперебойник на сервере и корректное завершение работы при отключении электричества.
Частые вопросы
Можно ли запускать «Тестирование и исправление», пока бухгалтеры работают?
Сколько длится проверка базы?
После исправления в справочниках появились элементы с непонятными названиями. Что это?
Чем отличается chdbfl.exe от «Тестирования и исправления»?
chdbfl.exe проверяет физическую структуру файла 1Cv8.1CD и работает только с файловыми базами. «Тестирование и исправление» проверяет логику данных — индексы, ссылки, итоги — и работает для любого варианта базы.