Как проверить и вылечить базу 1С 8.3: chdbfl, Конфигуратор и пакетный режим
Содержание
Тестирование и исправление базы 1С 8.3 делают в два этапа. Сначала утилитой chdbfl.exe проверяют физическую целостность файла 1Cv8.1CD (только для файловой базы). Затем в Конфигураторе запускают Администрирование → Тестирование и исправление и отмечают нужные проверки: реиндексацию, логическую и ссылочную целостность, пересчёт итогов. Обе процедуры требуют монопольного доступа и свежей резервной копии.
Правильно делать тестирование — значит идти от безопасных операций к рискованным: сначала режим «Только тестирование» и чтение протокола, потом исправление. Так вы заранее увидите, что именно программа собирается удалить или создать, и не потеряете документы вслепую.
Подготовка базы перед проверкой
Тестирование с исправлением меняет данные напрямую в таблицах. Откатить его можно только из копии. Поэтому подготовка — не формальность.
Что сделать до запуска
- 🔒 Выгоните всех пользователей. Для файловой базы попросите всех закрыть 1С. Для серверной — заблокируйте сеансы (подробнее в разделе про клиент-сервер).
- 💾 Сделайте две копии. Для файловой базы — скопируйте весь каталог с
1Cv8.1CDв другое место. Дополнительно выгрузите.dtчерезАдминистрирование → Выгрузить информационную базув Конфигураторе. - 📏 Проверьте место на диске. Нужно свободное место минимум в 2–3 раза больше размера базы: сжатие и реструктуризация пересобирают таблицы во временные файлы.
- 🛑 Отключите регламентные задания и обмены, если они запускаются по расписанию с другого компьютера. Иначе они займут базу в середине проверки.
- 🖥 Закройте антивирусную проверку каталога базы на время процедуры, если антивирус сканирует файл при каждом обращении. Это ускорит работу в разы.
Если .dt не выгружается из-за ошибки — не запускайте исправление на единственном экземпляре базы. Сначала сделайте файловую копию каталога и работайте уже с ней.
Когда тестирование вообще нужно
- ❌ ошибки вида
Ошибка формата потока,Файл базы данных поврежден,Нарушение целостности структуры конфигурации; - 🔗 в документах и справочниках появились значения
<Объект не найден>; - 📊 остатки в отчётах расходятся с документами, ОСВ «не бьётся» без видимых причин;
- ⚡ база упала после отключения электричества или зависания сервера;
- 🐢 файловая база заметно замедлилась, файл
1Cv8.1CDразросся.
Профилактически раз в месяц-квартал тоже полезно, но без исправления — только тестирование.
Утилита chdbfl: проверка физической целостности файла
chdbfl.exe проверяет сам файл 1Cv8.1CD на уровне страниц и таблиц. Конфигуратор её не заменяет: если файл повреждён физически, Конфигуратор может просто не открыть базу
.
Утилита лежит в каталоге платформы, в папке bin, например C:\Program Files\1cv8\8.3.24.1548\bin\chdbfl.exe. Подходит любая установленная версия 8.3, но лучше та же, на которой работает база.
Порядок запуска
- Убедитесь, что базу никто не открыл: файл
1Cv8.1CDне должен быть заблокирован. - Запустите
chdbfl.exeот имени администратора. - В поле «Имя файла БД» укажите путь к
1Cv8.1CD. - Первый проход — без флажка «Исправлять обнаруженные ошибки». Нажмите «Выполнить».
- Изучите результат. Если ошибок нет — переходите к Конфигуратору.
- Если ошибки есть — повторите проверку с флажком исправления на копии базы.
Утилита работает только с файловыми базами. Для серверной базы физической целостностью занимается СУБД: у MS SQL это DBCC CHECKDB, у PostgreSQL — собственные средства проверки и VACUUM/REINDEX.
Если chdbfl падает с ошибкой на конкретной странице и не исправляет её, попробуйте выгрузить базу в .dt и загрузить в новую пустую базу. Загрузка пересобирает файл с нуля и часто «лечит» то, что не берёт утилита.
Тестирование и исправление в Конфигураторе: режимы и флажки
Откройте базу в режиме Конфигуратора под пользователем с полными правами. Выберите Администрирование → Тестирование и исправление.... Откроется окно с набором проверок.
Что делает каждый флажок
| Проверка | Что делает | Когда включать |
|---|---|---|
| Реиндексация таблиц информационной базы | Пересоздаёт индексы | Медленные запросы, ошибки поиска и сортировки |
| Проверка логической целостности | Ищет несогласованные записи в таблицах | Всегда при сбоях |
| Проверка ссылочной целостности | Ищет ссылки на несуществующие объекты | Появились <Объект не найден> |
| Пересчёт итогов | Пересчитывает таблицы итогов регистров | Остатки расходятся с движениями |
| Сжатие таблиц информационной базы | Убирает пустое место после удалений | Файловая база сильно разрослась |
| Реструктуризация таблиц информационной базы | Пересоздаёт все таблицы заново | Тяжёлые сбои, когда остальное не помогло |
Реструктуризация — самая долгая операция. На базе в 20–30 ГБ она может занять несколько часов. Включайте её отдельно и не по расписанию.
Режим «Только тестирование» или «Тестирование и исправление»
Переключатель внизу окна задаёт главное:
- 🔍 Только тестирование — программа ничего не меняет, только пишет протокол. Первый запуск делайте так.
- 🛠 Тестирование и исправление — программа исправляет найденное по правилам, которые вы зададите ниже.
Для долгих проверок есть два полезных флажка: продолжить тестирование с места прошлой остановки и прервать выполнение по истечении заданного времени. Так большую базу можно проверять кусками по ночам.
Логическая и ссылочная целостность: что выбрать при битых ссылках
Самое ответственное в окне — две группы переключателей. От них зависит, что произойдёт с проблемными данными.
При наличии ссылок на несуществующие объекты
- Создавать объекты — программа создаёт объекты-заглушки, на которые ссылаются документы. Данные в документах сохраняются, ссылку потом можно заменить на правильную.
- Удалять ссылки на объекты — поле в документе очищается. Документ останется, но потеряет, например, контрагента или номенклатуру.
- Не изменять — ничего не трогать, только сообщить в протоколе.
При частичной потере данных объектов
- Создавать объекты — восстановить то, что можно, из сохранившихся частей.
- Удалять объекты — удалить объект целиком, если его данные повреждены.
- Не изменять — оставить как есть.
Вариант «Удалять» необратим. Документы и элементы справочников исчезнут вместе с движениями. Для учётной базы почти всегда безопаснее выбрать «Создавать объекты»: заглушку видно, её можно найти и исправить вручную.
Пересчёт итогов регистров
Регистры накопления и бухгалтерии хранят не только движения, но и готовые итоги — остатки на начало периодов. Отчёты берут цифры из итогов, чтобы не суммировать миллионы строк. Если итоги разошлись с движениями, ОСВ покажет одно, а расшифровка — другое.
Пересчитать итоги можно двумя способами.
- В Конфигураторе — флажок «Пересчёт итогов» в окне тестирования. Нужен монопольный режим.
- В пользовательском режиме — через обработку управления итогами. В БП 3.0, ЗУП 3.1 и УТ 11 она находится в
Администрирование → Обслуживание → Корректировка данных → Управление итогами. Монопольный доступ здесь не нужен, но лучше запускать вне рабочего времени.
В обработке управления итогами доступен полный пересчёт итогов, пересчёт текущих итогов и установка периода рассчитанных итогов. Если запускаете в рабочий день, начните с пересчёта текущих итогов — он быстрее.
Пересчёт итогов не исправляет ошибочные проводки. Если документ провёл неверную сумму, после пересчёта она останется. Пересчёт лечит только расхождение «итоги ≠ сумма движений».
Тестирование и исправление в клиент-серверном варианте
Для базы на сервере 1С с MS SQL или PostgreSQL порядок другой. chdbfl здесь не применяется, а часть работы правильнее отдать СУБД.
Как получить монопольный доступ
- Откройте консоль кластера серверов 1С, найдите информационную базу.
- В свойствах базы установите блокировку начала сеансов с понятным сообщением для пользователей и кодом разрешения.
- Завершите активные сеансы в разделе «Сеансы».
- Запустите Конфигуратор с параметром
/UC <код разрешения>, чтобы пройти через блокировку.
Завершение сеансов обрывает работу пользователей: несохранённые документы пропадут. Предупредите людей заранее и делайте это вечером или в выходной.
Что делать средствами СУБД
| Операция | Где лучше делать |
|---|---|
| Резервная копия | Средствами СУБД (полный бэкап) + выгрузка .dt |
| Физическая целостность | DBCC CHECKDB в MS SQL, проверки PostgreSQL |
| Перестроение индексов, статистика | План обслуживания СУБД |
| Логическая и ссылочная целостность | Конфигуратор 1С |
| Пересчёт итогов | Конфигуратор или «Управление итогами» |
СУБД ничего не знает о ссылках 1С между объектами. Поэтому логическую и ссылочную проверку делает только Конфигуратор, даже на сервере.
Пакетный запуск из командной строки
Проверку можно запустить без интерфейса — например, ночным заданием. Пример для файловой базы:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /IBCheckAndRepair -LogAndRefsIntegrity -RecalcTotals -BadRefCreate -BadDataCreate /Out "D:\Logs\check.txt"
Для серверной базы вместо /F укажите /S "сервер\имя_базы". Полезные ключи:
-ReIndex— реиндексация;-LogIntegrity— только логическая целостность;-LogAndRefsIntegrity— логическая и ссылочная;-RecalcTotals— пересчёт итогов;-IBCompression— сжатие (для файловой базы);-Rebuild— реструктуризация;-TestOnly— только тестирование, без исправления;-BadRefCreate,-BadRefClear,-BadRefNone— что делать с битыми ссылками;-BadDataCreate,-BadDataDelete— что делать с частично потерянными объектами.
Полный список ключей смотрите в справке к платформе, раздел о параметрах командной строки. Пароль в bat-файле храните в каталоге с ограниченным доступом.
Протокол проверки и разбор последствий
После проверки Конфигуратор выводит протокол в окно служебных сообщений. При пакетном запуске он пишется в файл из параметра /Out. Сохраните его: по протоколу вы будете искать повреждённые данные.
Как читать сообщения
- 🔗 Ссылки на несуществующие объекты — в протоколе указаны таблица и объект, где найдена битая ссылка, и внутренний идентификатор ссылки.
- 🧩 Нарушение логической целостности — запись в таблице не согласована с другими, например табличная часть без «шапки» документа.
- 📊 Расхождение итогов — регистр, по которому итоги не совпали с движениями.
Если протокол пустой или содержит только служебные строки о начале и завершении — база в порядке.
Что делать после исправления
- Откройте базу в пользовательском режиме и проверьте ключевые отчёты: ОСВ, остатки товаров, взаиморасчёты.
- Найдите созданные заглушки. Обычно у них в наименовании стоит «Объект не найден» и идентификатор. Отберите их в списке справочника поиском по этой фразе.
- Замените заглушки на правильные элементы. В типовых конфигурациях для этого есть обработка поиска и удаления дублей в
Администрирование → Обслуживание → Корректировка данных: она умеет заменять ссылки во всех документах. - Пометьте заглушки на удаление и удалите их штатно.
- Перепроведите документы за период, где были изменения, если это допускает закрытый период.
Если битых ссылок сотни и все ведут на один удалённый элемент, проще восстановить этот элемент из резервной копии через выгрузку-загрузку данных, чем править документы по одному.
Профилактика: как реже лечить базу
Большинство повреждений файловой базы — следствие внешних причин. Убрав их, вы будете запускать тестирование только для профилактики.
- 🔌 Бесперебойник на сервер или компьютер с базой. Обрыв питания в момент записи — классическая причина порчи
1Cv8.1CD. - 🌐 Не работайте с файловой базой по Wi-Fi и VPN. Обрыв сети при записи даёт тот же эффект. Для удалённой работы — терминальный доступ или веб-публикация.
- 🛡 Исключите каталог базы из проверки антивирусом на лету.
- 💾 Регулярные копии. Ежедневная выгрузка или копирование каталога ночью, хранение нескольких поколений.
- 👥 Следите за числом пользователей. Файловая база рассчитана на небольшую команду; при 10–15 активных пользователях пора думать о клиент-серверном варианте.
- 🗓 Регламент проверок. Раз в месяц — «Только тестирование» по логической и ссылочной целостности. Раз в квартал — реиндексация и сжатие для файловой базы. На сервере — план обслуживания СУБД еженедельно.
Частые ошибки при проверке базы
- 🚫 Запуск исправления без копии. Если что-то пошло не так, вернуться некуда.
- 🚫 Сразу «Удалять ссылки» и «Удалять объекты». Документы теряют реквизиты или исчезают целиком, а заметят это только при сдаче отчётности.
- 🚫 Реструктуризация «на всякий случай». На большой базе это часы простоя без пользы, если нет реальных сбоев.
- 🚫 Попытка запустить chdbfl на серверной базе. Утилита работает только с файлом
1Cv8.1CD. - 🚫 Проверка без повторного прогона. После исправления запустите «Только тестирование» ещё раз: протокол должен стать чистым.