Как найти и исправить повреждения в информационной базе 1С 8.3

· 10 мин

Содержание

Проверить базу 1С на целостность можно двумя инструментами платформы: утилитой chdbfl.exe (только файловая база, физическая структура файла) и режимом Администрирование → Тестирование и исправление в Конфигураторе (любая база, логика данных и ссылки). Для клиент-серверной базы к ним добавляется проверка средствами СУБД: DBCC CHECKDB в MS SQL или amcheck в PostgreSQL.

Порядок такой: сначала копия, потом физическая проверка, потом логическая. Исправление запускайте только после того, как прогнали тестирование без исправления и прочитали отчёт. Порядок одинаков для любой конфигурации: БП, ЗУП, УТ, ERP — это функции платформы, а не прикладного решения.

Признаки того, что базу 1С пора проверять на ошибки

Повреждение редко выглядит как одна понятная ошибка. Чаще база «странно себя ведёт» в нескольких местах сразу.

Типичные симптомы:

  • 🔴 в полях документов и справочников вместо значения стоит <Объект не найден> (45:b8f1...);
  • 🔴 при открытии базы или конкретного списка появляется Ошибка формата потока или Нарушение целостности структуры конфигурации;
  • 🔴 платформа сообщает, что файл базы данных повреждён, и не открывает базу;
  • 🟠 отчёт по регистру показывает остаток, которого нет по документам, или отрицательный остаток там, где его быть не может;
  • 🟠 программа аварийно закрывается на одном и том же документе или элементе справочника;
  • 🟡 файл 1Cv8.1CD резко вырос, а данных больше не стало.

Частые причины: отключение питания во время записи, принудительное завершение процесса 1cv8.exe, работа с файловой базой по сети через нестабильный канал, сбои диска, антивирус, который блокирует файл базы на запись.

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

Подготовка к проверке целостности базы 1С

Тестирование с исправлением меняет данные. Если что-то пойдёт не так, откатиться можно только к копии.

1. Сделайте копию

  • Файловая база. Закройте все сеансы и скопируйте каталог базы целиком (главное — файл 1Cv8.1CD). Выгрузка в .dt на повреждённой базе может не пройти, поэтому копия файла надёжнее.
  • Клиент-серверная база . Полная резервная копия средствами СУБД: BACKUP DATABASE в MS SQL, pg_dump в PostgreSQL. Плюс выгрузка .dt, если она проходит.

Не запускайте исправление без резервной копии. Режимы «Удалять объекты» и «Очищать ссылки» стирают данные безвозвратно.

2. Обеспечьте монопольный доступ

Тестирование и исправление, как и chdbfl, работает только когда в базе нет других пользователей. Все сеансы будут завершены, несохранённые документы пропадут. Делайте проверку вечером или в выходные и предупредите людей заранее.

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

3. Проверьте место на диске

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

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

Это основной инструмент. Работает для файловых и серверных баз одинаково.

Как открыть

  1. Запустите 1С в режиме Конфигуратор под пользователем с правами администратора.
  2. В меню выберите Администрирование → Тестирование и исправление....
  3. Откроется форма с набором флажков и режимами реакции на ошибки.

Что означает каждая проверка

ФлажокЧто делаетКогда нужен
Реиндексация таблицПерестраивает индексы всех таблицПадения на списках, медленный отбор, после сбоя питания
Проверка логической целостностиИщет нарушения внутренней структуры данныхБазовая проверка, включайте всегда
Проверка ссылочной целостностиНаходит ссылки на несуществующие объекты<Объект не найден> в полях
Пересчёт итоговЗаново считает итоги регистров накопления и бухгалтерииОстатки не сходятся с документами
Сжатие таблицУбирает пустое место в файле базыФайл 1Cv8.1CD разросся
Реструктуризация таблицПересоздаёт таблицы базыТяжёлые случаи, когда остальное не помогло

Реструктуризация — самая долгая операция. На базе в десятки гигабайт она может идти несколько часов. Включайте её отдельным проходом и только по необходимости.

Режим: тестирование или исправление

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

Дальше настройте реакцию на найденное:

При наличии ссылок на несуществующие объекты:

  • Создавать объекты — платформа создаст «заглушки» на месте потерянных объектов. Документы сохранят ссылку, а вы потом найдёте эти заглушки и разберётесь с ними вручную.
  • Очищать ссылки — поле в документе станет пустым. Информация о том, что там было, пропадёт.
  • Не изменять — только запись в отчёт.

При частичной потере данных объектов:

  • Создавать объекты — недостающие данные будут восстановлены как заготовка;
  • Удалять объекты — повреждённые объекты будут удалены целиком.

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

Что делать после проверки

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

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

Проверка физической целостности файловой базы утилитой chdbfl

chdbfl.exe проверяет сам файл 1Cv8.1CD: страницы, внутренние таблицы, индексы на уровне файлового формата 1С. В отличие от Конфигуратора, ей не нужно запускать платформу и входить в базу. Поэтому она выручает, когда база вообще не открывается.

Где найти

Утилита лежит в каталоге bin установленной платформы, например:

C:\Program Files\1cv8\8.3.24.1691\bin\chdbfl.exe

Номер версии в пути будет вашим. Берите утилиту из той же версии платформы, с которой работает база.

Как запустить

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

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

Почему сначала chdbfl, а потом Конфигуратор

Логическая проверка в Конфигураторе читает данные через платформу. Если повреждена сама структура файла, Конфигуратор может упасть посреди тестирования. Поэтому для файловой базы порядок жёсткий: chdbfl → тестирование и исправление.

Как проверить целостность клиент-серверной базы на MS SQL и PostgreSQL

Для серверной базы chdbfl не применяется: данные хранит СУБД. Проверка идёт в два слоя: средствами СУБД (страницы и индексы) и Конфигуратором (логика 1С).

MS SQL Server

Основная команда — DBCC CHECKDB. Выполните её в SQL Server Management Studio:

DBCC CHECKDB (N'buh_base') WITH NO_INFOMSGS, ALL_ERRORMSGS;

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

Параметры REPAIR_REBUILD и REPAIR_ALLOW_DATA_LOSS требуют однопользовательского режима базы. Второй, как следует из названия, может удалить повреждённые страницы вместе с данными. Используйте его только когда копии нет, и обязательно на копии базы.

💡 Проверьте свойство базы Page Verify: должно стоять CHECKSUM. Тогда SQL Server заметит повреждение страницы при первом же чтении.

PostgreSQL

Встроенного аналога DBCC CHECKDB в PostgreSQL нет, но есть рабочие приёмы:

  • Проверка индексов через расширение amcheck. В PostgreSQL 14 и новее есть консольная утилита:
pg_amcheck -d buh_base --heapallindexed
  • Полное чтение данных через выгрузку. Если какая-то страница таблицы повреждена, pg_dump остановится с ошибкой и назовёт таблицу:
pg_dump -d buh_base -Fc -f /backup/buh_base_check.dump
  • Контрольные суммы страниц. Если кластер создан с ними, при чтении повреждённой страницы в журнале сервера будет ошибка проверки контрольной суммы.

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

Затем — Конфигуратор

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

Тип базыФизический уровеньЛогический уровень
Файловаяchdbfl.exeТестирование и исправление
MS SQLDBCC CHECKDBТестирование и исправление
PostgreSQLpg_amcheck, pg_dumpТестирование и исправление

bdbcheck и Berkeley DB: есть ли такая проверка в 1С 8.3

На форумах и в некоторых инструкциях встречается совет проверить базу утилитой bdbcheck «для баз на движке Berkeley DB». Для 1С:Предприятия 8.3 этот совет не работает .

Что есть на самом деле:

  • 📁 файловая база 1С 8 хранится в собственном формате платформы, в одном файле 1Cv8.1CD;
  • 🗄️ серверная база хранится в MS SQL Server, PostgreSQL, Oracle или IBM Db2;
  • 🧰 штатные средства проверки — chdbfl.exe, режим тестирования и исправления и инструменты самой СУБД.

Утилиты с названием bdbcheck в дистрибутиве платформы 8.3 нет. Если вам предлагают скачать её со стороннего сайта — не делайте этого. Исполняемый файл из неизвестного источника, получивший доступ к бухгалтерской базе, опаснее любого сбоя индекса.

Если вы искали проверку базы, которая не открывается, ваш инструмент — chdbfl для файловой базы или средства СУБД для серверной.

Автоматическая проверка базы 1С из командной строки

Тестирование и исправление можно запускать без интерфейса, ключом /IBCheckAndRepair. Это удобно для ночных заданий в Планировщике Windows.

Пример для файловой базы — только тестирование, с протоколом в файл:

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

Для серверной базы вместо /F используется /S"сервер\имя_базы".

Основные параметры:

ПараметрДействие
-ReIndexРеиндексация таблиц
-LogIntegrityПроверка логической целостности
-LogAndRefsIntegrityЛогическая и ссылочная целостность
-RecalcTotalsПересчёт итогов
-IBCompressionСжатие таблиц
-RebuildРеструктуризация таблиц
-TestOnlyТолько тестирование, без исправления
-BadRefCreate / -BadRefClear / -BadRefNoneРеакция на битые ссылки: создать, очистить, не менять
-BadDataCreate / -BadDataDeleteРеакция на частичную потерю данных

Пароль в bat-файле лежит открытым текстом. Создайте для регламентных проверок отдельного пользователя 1С и ограничьте доступ к файлу задания.

Для расписания разумно ставить в ночь только тестирование (-TestOnly), а исправление запускать вручную после чтения протокола.

Профилактика повреждений и резервное копирование базы 1С

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

Что снижает риск

  • 🔌 ИБП на сервере или компьютере, где лежит файловая база, с корректным завершением работы при пропадании питания;
  • 🌐 файловая база не по Wi-Fi и VPN. Для удалённой работы — терминальный сервер , веб-публикация или переход на клиент-серверный вариант;
  • 🛡️ исключения в антивирусе для каталога базы и файлов .1CD;
  • 💾 исправный диск: следите за SMART и местом на томе с базой;
  • 🚫 не завершайте 1cv8.exe через диспетчер задач во время записи или проведения документов.

Регламент резервного копирования

Минимальная схема для небольшой организации:

ЧтоКак частоСколько хранить
Копия файла базы или бэкап СУБДЕжедневно, ночью7–14 дней
Выгрузка .dtЕженедельно1–2 месяца
Копия перед обновлением конфигурацииКаждый разДо следующего обновления
Копия на внешний носитель или в другое местоЕженедельноПо политике компании

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

Ежемесячное обслуживание базы 1С
Выполнено: 0 / 6

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

Сколько длится тестирование и исправление?
Зависит от размера базы и набора флажков. Файловая база на несколько гигабайт проверяется за минуты, серверная база в сотни гигабайт с реструктуризацией — часы. Без реструктуризации и сжатия проверка идёт заметно быстрее.
Можно ли проверить базу, пока в ней работают пользователи?
Нет. И тестирование в Конфигураторе, и chdbfl требуют, чтобы в базе не было других сеансов. Для серверной базы можно без остановки проверить СУБД (DBCC CHECKDB, pg_dump), но это создаёт нагрузку на сервер.
Чем тестирование и исправление отличается от «Проверки конфигурации»?
«Проверка конфигурации» в меню Конфигурация ищет ошибки в программном коде и метаданных. Тестирование и исправление проверяет сами данные базы. Это разные задачи.
После исправления в справочниках появились элементы «Объект не найден». Что с ними делать?
Это заглушки, созданные вместо потерянных объектов. Найдите документы, которые на них ссылаются, замените ссылку на правильный элемент, а заглушку пометьте на удаление.
Помогает ли проверка, если база выдаёт ошибку только на одном компьютере?
Скорее всего, проблема не в базе, а в кэше или установке платформы на этом компьютере. Сначала очистите кэш запуском с /ClearCache, проверку базы откладывайте, если на других рабочих местах всё в порядке.