Администрирование · 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: при загрузке данные перечитываются и перезаписываются, что нередко устраняет физические повреждения. Но этот способ не сработает, если база настолько повреждена, что выгрузка прерывается с ошибкой.
- 1Завершите все сеансы работы с базой
- 2Скопируйте файл 1Cv8.1CD в резервный каталог
- 3Запустите chdbfl.exe из каталога bin платформы
- 4Укажите путь к файлу базы
- 5Сначала выполните проверку без флажка исправления
- 6Оцените список ошибок, затем повторите с исправлением
- 7Откройте базу и проверьте работоспособность
Тестирование и исправление в конфигураторе
Штатный инструмент запускается через «Конфигуратор → Администрирование → Тестирование и исправление». В диалоге вы выбираете виды проверок и режим: «Тестирование» (только диагностика) или «Тестирование и исправление» (диагностика плюс автоматическое устранение). Начинать всегда стоит с режима без исправления, чтобы оценить масштаб проблем.
Реиндексация таблиц
Реиндексация перестраивает индексы таблиц базы данных. Она не лечит повреждённые данные, но устраняет ошибки, связанные с рассогласованием индексов, и заодно может ускорить работу базы. Это самая безопасная проверка — её можно включать почти всегда.
Проверка логической целостности
Проверяет корректность данных с точки зрения логики платформы: соответствие записей структуре метаданных, целостность внутренних связей таблиц. При обнаружении несоответствий в режиме исправления платформа попытается их устранить, а неустранимые объекты может удалить.
Проверка ссылочной целостности
Ищет «битые» ссылки — ссылки на несуществующие объекты. В режиме исправления доступны варианты: создать объекты-заглушки, очистить ссылки или удалить объекты с такими ссылками. Создание заглушек обычно безопаснее: документы остаются на месте, а заглушки потом можно разобрать вручную.
Пересчёт итогов
Пересчитывает итоги регистров накопления и бухгалтерии. Применяется, когда отчёты показывают неверные остатки или обороты при корректных движениях документов. На больших регистрах операция длительная, но безопасная для данных.
Проверка клиент-серверной базы средствами СУБД
Для баз на MS SQL Server физическую целостность проверяют командой DBCC CHECKDB. Она диагностирует повреждения страниц данных и индексов на уровне самой СУБД — то, чего инструменты 1С не видят. Запускать её рекомендуется в период минимальной нагрузки, так как проверка ресурсоёмкая.
DBCC CHECKDB (N'ИмяБазы') WITH NO_INFOMSGS;Для PostgreSQL прямого аналога DBCC нет, но полезны проверка логов СУБД на ошибки чтения страниц, контроль контрольных сумм (если включены при инициализации кластера) и выгрузка базы через pg_dump как тест читаемости всех таблиц. Если pg_dump завершается без ошибок — данные физически читаются.
Порядок для клиент-серверной базы обычно такой: сначала проверка средствами СУБД, затем «Тестирование и исправление» в конфигураторе. Если СУБД сообщает о повреждениях, исправлять их нужно средствами СУБД (восстановление из бэкапа, DBCC с repair-опциями как крайняя мера), а не инструментами 1С.
Как выбрать действие
Проверка результата и типичные ошибки
После исправления недостаточно увидеть сообщение «ошибок не обнаружено» — нужно убедиться, что база реально работоспособна. Откройте проблемные документы и отчёты, сформируйте ключевые отчёты за несколько периодов, сверьте остатки с данными до сбоя, проверьте проведение документов и работу обменов, если они настроены.
Сравните количество документов и элементов справочников до и после исправления (например, через универсальный отчёт или запрос): если объекты были удалены, их нужно восстановить из резервной копии вручную или через выгрузку-загрузку отдельных данных.
Профилактика: как снизить риск повреждений
Большинство повреждений файловых баз связано с внешними факторами: отключением питания, разрывом сети при размещении файла на сетевом ресурсе, работой антивируса с файлом базы. Размещайте файл 1Cv8.1CD на локальном диске сервера или используйте клиент-серверный вариант, добавьте каталог базы в исключения антивируса, обеспечьте бесперебойное питание.
Настройте регулярное резервное копирование с проверкой восстановления: копия, которую никто не пробовал развернуть, не гарантирует спасения. Для клиент-серверных баз включите плановые проверки целостности средствами СУБД и контролируйте состояние дисковой подсистемы — SMART-ошибки и сбойные сектора часто предшествуют повреждению базы.
Что важно запомнить
Проверка начинается с резервной копии и диагностики без исправления. Файловые базы лечатся chdbfl.exe и тестированием в конфигураторе, клиент-серверные — средствами СУБД плюс штатные проверки 1С. Любое исправление необратимо, поэтому сначала копия, потом действия.
Частые вопросы
Можно ли запускать тестирование и исправление при работающих пользователях?
Нет, процедура требует монопольного доступа. При активных сеансах конфигуратор откажет в запуске. Завершите работу пользователей, установите блокировку сеансов и дождитесь завершения фоновых заданий.
Что делать, если chdbfl.exe зависает на большой базе?
На объёмных базах проверка может идти часами — это нормально, оценивайте прогресс по активности диска. Если утилита действительно зависла (нет дисковой активности длительное время), восстановите файл из копии и попробуйте альтернативу: выгрузку в dt, если база ещё открывается.
Исправит ли проверка «битые» ссылки автоматически?
Да, в режиме исправления вы выбираете поведение: создать объекты-заглушки, очистить ссылки или удалить объекты. Самый безопасный вариант — заглушки: данные сохраняются, а заглушки потом разбираются вручную или заменяются реальными объектами.
Нужно ли проверять базу, если ошибок нет?
Плановая проверка оправдана после аварийных отключений, сбоев оборудования и перед масштабными операциями вроде обновления конфигурации или свёртки базы. Регулярно запускать исправление «на всякий случай» не нужно — достаточно диагностического режима.
База не открывается ни в предприятии, ни в конфигураторе. Что делать?
Работайте только с копией файла. Для файловой базы начните с chdbfl.exe — она не требует открытия базы платформой. Если утилита не помогла, восстанавливайте из резервной копии и переносите разницу данных вручную или через обработки выгрузки.
Отличается ли проверка для базы на PostgreSQL и MS SQL?
Инструменты 1С работают одинаково, различаются проверки уровня СУБД: для MS SQL это DBCC CHECKDB, для PostgreSQL — анализ логов, контрольные суммы кластера и тестовая выгрузка pg_dump. Логика последовательности одна: сначала СУБД, затем конфигуратор.