К статье
Практический материал

Администрирование · 11 мин

Как проверить базу 1С на целостность

Пошаговая инструкция по проверке целостности базы 1С: тестирование и исправление, chdbfl.exe, проверка логической и ссылочной целостности, резервные копии.

Нарушение целостности базы 1С проявляется по-разному: программа внезапно завершает работу при открытии документа, отчёт выдаёт ошибку «Ошибка формата потока», проведение документов падает с сообщением о повреждении таблицы, а в журнале регистрации появляются записи о невозможности прочитать данные. Чаще всего причина — аварийное завершение работы сервера, отключение электропитания, сбой дисковой подсистемы или прямое изменение файла базы сторонними средствами.

Проверка целостности — это не одна процедура, а несколько разных по глубине операций. Для файловых баз есть утилита chdbfl.exe и режим «Тестирование и исправление» в конфигураторе, для клиент-серверных — проверки средствами СУБД (MS SQL, PostgreSQL) плюс те же штатные механизмы 1С. Выбор инструмента зависит от типа базы и характера ошибки.

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

Признаки, по которым стоит запустить проверку

Не каждая ошибка в 1С говорит о повреждении базы — часто виноваты код конфигурации, права доступа или нехватка ресурсов. Но есть типовые симптомы, при которых проверка целостности обязательна: аварийное завершение с сообщением «Ошибка формата потока», ошибки СУБД при обращении к конкретным таблицам, «битые» ссылки в документах после сбоя, невозможность открыть конфигуратор или предприятие.

Отдельный сигнал — расхождение данных между отчётами, которые строятся по одним регистрам, и «исчезнувшие» документы, которые пользователи точно проводили. Также проверку стоит запускать планово после любого аварийного отключения сервера или компьютера с файловой базой, даже если явных ошибок пока нет: повреждения могут проявиться позже.

«Ошибка формата потока»Вероятно повреждение данных

Запустить chdbfl.exe или тестирование и исправление

Ошибка СУБД при чтении таблицыПовреждение на уровне СУБД

Проверить базу средствами MS SQL / PostgreSQL

Битые ссылки в документахНарушена ссылочная целостность

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

База не открывается вовсеСерьёзное повреждение файла

Работать только с копией, начать с chdbfl.exe

Подготовка: резервная копия и монопольный доступ

Перед любой проверкой, а тем более исправлением, сделайте резервную копию. Для файловой базы достаточно скопировать файл 1Cv8.1CD в отдельный каталог при остановленной работе пользователей или выгрузить базу в dt через конфигуратор («Администрирование → Выгрузить информационную базу»). Для клиент-серверной базы используйте штатные средства СУБД — backup в MS SQL или pg_dump в PostgreSQL.

Для запуска «Тестирования и исправления» требуется монопольный режим: все пользователи должны выйти из базы, фоновые задания — завершиться. В клиент-серверном варианте удобно установить блокировку сеансов через консоль кластера, дождаться завершения активных соединений и только потом приступать к проверке.

Проверка файловой базы утилитой chdbfl.exe

Утилита chdbfl.exe входит в состав платформы и находится в каталоге bin установленной версии (например, C:\Program Files\1cv8\<номер версии>\bin\chdbfl.exe). Она работает напрямую с файлом 1Cv8.1CD и проверяет физическую целостность таблиц на уровне внутреннего формата файловой базы — это более низкий уровень, чем проверки конфигуратора.

Порядок работы: закройте все сеансы 1С, запустите chdbfl.exe, укажите путь к файлу 1Cv8.1CD, установите флажок «Исправлять обнаруженные ошибки» только если копия уже сделана, и нажмите «Выполнить». Утилита покажет ход проверки и список обнаруженных и исправленных ошибок. На больших базах процесс занимает значительное время — это нормально.

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

Проверка через chdbfl.exe
  1. 1
    Завершите все сеансы работы с базой
  2. 2
    Скопируйте файл 1Cv8.1CD в резервный каталог
  3. 3
    Запустите chdbfl.exe из каталога bin платформы
  4. 4
    Укажите путь к файлу базы
  5. 5
    Сначала выполните проверку без флажка исправления
  6. 6
    Оцените список ошибок, затем повторите с исправлением
  7. 7
    Откройте базу и проверьте работоспособность

Тестирование и исправление в конфигураторе

Штатный инструмент запускается через «Конфигуратор → Администрирование → Тестирование и исправление». В диалоге вы выбираете виды проверок и режим: «Тестирование» (только диагностика) или «Тестирование и исправление» (диагностика плюс автоматическое устранение). Начинать всегда стоит с режима без исправления, чтобы оценить масштаб проблем.

Реиндексация таблиц

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

Проверка логической целостности

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

Проверка ссылочной целостности

Ищет «битые» ссылки — ссылки на несуществующие объекты. В режиме исправления доступны варианты: создать объекты-заглушки, очистить ссылки или удалить объекты с такими ссылками. Создание заглушек обычно безопаснее: документы остаются на месте, а заглушки потом можно разобрать вручную.

Пересчёт итогов

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

Проверка клиент-серверной базы средствами СУБД

Для баз на MS SQL Server физическую целостность проверяют командой DBCC CHECKDB. Она диагностирует повреждения страниц данных и индексов на уровне самой СУБД — то, чего инструменты 1С не видят. Запускать её рекомендуется в период минимальной нагрузки, так как проверка ресурсоёмкая.

sql
DBCC CHECKDB (N'ИмяБазы') WITH NO_INFOMSGS;

Для PostgreSQL прямого аналога DBCC нет, но полезны проверка логов СУБД на ошибки чтения страниц, контроль контрольных сумм (если включены при инициализации кластера) и выгрузка базы через pg_dump как тест читаемости всех таблиц. Если pg_dump завершается без ошибок — данные физически читаются.

Порядок для клиент-серверной базы обычно такой: сначала проверка средствами СУБД, затем «Тестирование и исправление» в конфигураторе. Если СУБД сообщает о повреждениях, исправлять их нужно средствами СУБД (восстановление из бэкапа, DBCC с repair-опциями как крайняя мера), а не инструментами 1С.

Маршрут решения

Как выбрать действие

Файловая база, ошибка формата потокаchdbfl.exe на копии базы, затем тестирование и исправление
Клиент-серверная база, ошибки чтения страницDBCC CHECKDB или анализ логов PostgreSQL, восстановление из бэкапа при повреждениях
Неверные остатки в отчётахПересчёт итогов в тестировании и исправлении
Битые ссылки после обмена или сбояПроверка ссылочной целостности с созданием объектов-заглушек
Явных ошибок нет, было аварийное выключениеПлановое тестирование без исправления плюс реиндексация

Проверка результата и типичные ошибки

После исправления недостаточно увидеть сообщение «ошибок не обнаружено» — нужно убедиться, что база реально работоспособна. Откройте проблемные документы и отчёты, сформируйте ключевые отчёты за несколько периодов, сверьте остатки с данными до сбоя, проверьте проведение документов и работу обменов, если они настроены.

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

Типичные ошибки
01
Запуск исправления без резервной копии — потерянные данные не восстановить
02
Исправление сразу на рабочей базе вместо копии — риск усугубить повреждение
03
Выбор «удалять объекты» при ссылочной целостности вместо заглушек — массовая потеря документов
04
Прерывание chdbfl.exe или тестирования по таймауту — файл базы может остаться в несогласованном состоянии
05
Игнорирование проверки СУБД для клиент-серверной базы — 1С-инструменты не видят повреждений страниц данных

Профилактика: как снизить риск повреждений

Большинство повреждений файловых баз связано с внешними факторами: отключением питания, разрывом сети при размещении файла на сетевом ресурсе, работой антивируса с файлом базы. Размещайте файл 1Cv8.1CD на локальном диске сервера или используйте клиент-серверный вариант, добавьте каталог базы в исключения антивируса, обеспечьте бесперебойное питание.

Настройте регулярное резервное копирование с проверкой восстановления: копия, которую никто не пробовал развернуть, не гарантирует спасения. Для клиент-серверных баз включите плановые проверки целостности средствами СУБД и контролируйте состояние дисковой подсистемы — SMART-ошибки и сбойные сектора часто предшествуют повреждению базы.

Итог

Что важно запомнить

Проверка начинается с резервной копии и диагностики без исправления. Файловые базы лечатся chdbfl.exe и тестированием в конфигураторе, клиент-серверные — средствами СУБД плюс штатные проверки 1С. Любое исправление необратимо, поэтому сначала копия, потом действия.

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

Можно ли запускать тестирование и исправление при работающих пользователях?

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

Что делать, если chdbfl.exe зависает на большой базе?

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

Исправит ли проверка «битые» ссылки автоматически?

Да, в режиме исправления вы выбираете поведение: создать объекты-заглушки, очистить ссылки или удалить объекты. Самый безопасный вариант — заглушки: данные сохраняются, а заглушки потом разбираются вручную или заменяются реальными объектами.

Нужно ли проверять базу, если ошибок нет?

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

База не открывается ни в предприятии, ни в конфигураторе. Что делать?

Работайте только с копией файла. Для файловой базы начните с chdbfl.exe — она не требует открытия базы платформой. Если утилита не помогла, восстанавливайте из резервной копии и переносите разницу данных вручную или через обработки выгрузки.

Отличается ли проверка для базы на PostgreSQL и MS SQL?

Инструменты 1С работают одинаково, различаются проверки уровня СУБД: для MS SQL это DBCC CHECKDB, для PostgreSQL — анализ логов, контрольные суммы кластера и тестовая выгрузка pg_dump. Логика последовательности одна: сначала СУБД, затем конфигуратор.