Как проверить и вылечить базу 1С 8.3: chdbfl, Конфигуратор и пакетный режим

· 11 мин

Содержание

Тестирование и исправление базы 1С 8.3 делают в два этапа. Сначала утилитой chdbfl.exe проверяют физическую целостность файла 1Cv8.1CD (только для файловой базы). Затем в Конфигураторе запускают Администрирование → Тестирование и исправление и отмечают нужные проверки: реиндексацию, логическую и ссылочную целостность, пересчёт итогов. Обе процедуры требуют монопольного доступа и свежей резервной копии.

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

Подготовка базы перед проверкой

Тестирование с исправлением меняет данные напрямую в таблицах. Откатить его можно только из копии. Поэтому подготовка — не формальность.

Что сделать до запуска

  1. 🔒 Выгоните всех пользователей. Для файловой базы попросите всех закрыть 1С. Для серверной — заблокируйте сеансы (подробнее в разделе про клиент-сервер).
  2. 💾 Сделайте две копии. Для файловой базы — скопируйте весь каталог с 1Cv8.1CD в другое место. Дополнительно выгрузите .dt через Администрирование → Выгрузить информационную базу в Конфигураторе.
  3. 📏 Проверьте место на диске. Нужно свободное место минимум в 2–3 раза больше размера базы: сжатие и реструктуризация пересобирают таблицы во временные файлы.
  4. 🛑 Отключите регламентные задания и обмены, если они запускаются по расписанию с другого компьютера. Иначе они займут базу в середине проверки.
  5. 🖥 Закройте антивирусную проверку каталога базы на время процедуры, если антивирус сканирует файл при каждом обращении. Это ускорит работу в разы.

Если .dt не выгружается из-за ошибки — не запускайте исправление на единственном экземпляре базы. Сначала сделайте файловую копию каталога и работайте уже с ней.

Когда тестирование вообще нужно

  • ❌ ошибки вида Ошибка формата потока, Файл базы данных поврежден, Нарушение целостности структуры конфигурации;
  • 🔗 в документах и справочниках появились значения <Объект не найден>;
  • 📊 остатки в отчётах расходятся с документами, ОСВ «не бьётся» без видимых причин;
  • ⚡ база упала после отключения электричества или зависания сервера;
  • 🐢 файловая база заметно замедлилась, файл 1Cv8.1CD разросся.

Профилактически раз в месяц-квартал тоже полезно, но без исправления — только тестирование.

Утилита chdbfl: проверка физической целостности файла

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

Утилита лежит в каталоге платформы, в папке bin, например C:\Program Files\1cv8\8.3.24.1548\bin\chdbfl.exe. Подходит любая установленная версия 8.3, но лучше та же, на которой работает база.

Порядок запуска

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

Утилита работает только с файловыми базами. Для серверной базы физической целостностью занимается СУБД: у MS SQL это DBCC CHECKDB, у PostgreSQL — собственные средства проверки и VACUUM/REINDEX.

Если chdbfl падает с ошибкой на конкретной странице и не исправляет её, попробуйте выгрузить базу в .dt и загрузить в новую пустую базу. Загрузка пересобирает файл с нуля и часто «лечит» то, что не берёт утилита.

Тестирование и исправление в Конфигураторе: режимы и флажки

Откройте базу в режиме Конфигуратора под пользователем с полными правами. Выберите Администрирование → Тестирование и исправление.... Откроется окно с набором проверок.

Что делает каждый флажок

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

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

Режим «Только тестирование» или «Тестирование и исправление»

Переключатель внизу окна задаёт главное:

  • 🔍 Только тестирование — программа ничего не меняет, только пишет протокол. Первый запуск делайте так.
  • 🛠 Тестирование и исправление — программа исправляет найденное по правилам, которые вы зададите ниже.

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

Логическая и ссылочная целостность: что выбрать при битых ссылках

Самое ответственное в окне — две группы переключателей. От них зависит, что произойдёт с проблемными данными.

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

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

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

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

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

Что выбрать в окне тестирования?

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

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

Пересчитать итоги можно двумя способами.

  1. В Конфигураторе — флажок «Пересчёт итогов» в окне тестирования. Нужен монопольный режим.
  2. В пользовательском режиме — через обработку управления итогами. В БП 3.0, ЗУП 3.1 и УТ 11 она находится в Администрирование → Обслуживание → Корректировка данных → Управление итогами. Монопольный доступ здесь не нужен, но лучше запускать вне рабочего времени.

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

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

Тестирование и исправление в клиент-серверном варианте

Для базы на сервере 1С с MS SQL или PostgreSQL порядок другой. chdbfl здесь не применяется, а часть работы правильнее отдать СУБД.

Как получить монопольный доступ

  1. Откройте консоль кластера серверов 1С, найдите информационную базу.
  2. В свойствах базы установите блокировку начала сеансов с понятным сообщением для пользователей и кодом разрешения.
  3. Завершите активные сеансы в разделе «Сеансы».
  4. Запустите Конфигуратор с параметром /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. Сохраните его: по протоколу вы будете искать повреждённые данные.

Как читать сообщения

  • 🔗 Ссылки на несуществующие объекты — в протоколе указаны таблица и объект, где найдена битая ссылка, и внутренний идентификатор ссылки.
  • 🧩 Нарушение логической целостности — запись в таблице не согласована с другими, например табличная часть без «шапки» документа.
  • 📊 Расхождение итогов — регистр, по которому итоги не совпали с движениями.

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

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

  1. Откройте базу в пользовательском режиме и проверьте ключевые отчёты: ОСВ, остатки товаров, взаиморасчёты.
  2. Найдите созданные заглушки. Обычно у них в наименовании стоит «Объект не найден» и идентификатор. Отберите их в списке справочника поиском по этой фразе.
  3. Замените заглушки на правильные элементы. В типовых конфигурациях для этого есть обработка поиска и удаления дублей в Администрирование → Обслуживание → Корректировка данных: она умеет заменять ссылки во всех документах.
  4. Пометьте заглушки на удаление и удалите их штатно.
  5. Перепроведите документы за период, где были изменения, если это допускает закрытый период.

Если битых ссылок сотни и все ведут на один удалённый элемент, проще восстановить этот элемент из резервной копии через выгрузку-загрузку данных, чем править документы по одному.

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

Профилактика: как реже лечить базу

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

  • 🔌 Бесперебойник на сервер или компьютер с базой. Обрыв питания в момент записи — классическая причина порчи 1Cv8.1CD.
  • 🌐 Не работайте с файловой базой по Wi-Fi и VPN. Обрыв сети при записи даёт тот же эффект. Для удалённой работы — терминальный доступ или веб-публикация.
  • 🛡 Исключите каталог базы из проверки антивирусом на лету.
  • 💾 Регулярные копии. Ежедневная выгрузка или копирование каталога ночью, хранение нескольких поколений.
  • 👥 Следите за числом пользователей. Файловая база рассчитана на небольшую команду; при 10–15 активных пользователях пора думать о клиент-серверном варианте.
  • 🗓 Регламент проверок. Раз в месяц — «Только тестирование» по логической и ссылочной целостности. Раз в квартал — реиндексация и сжатие для файловой базы. На сервере — план обслуживания СУБД еженедельно.
Регламент обслуживания базы
Выполнено: 0 / 6

Частые ошибки при проверке базы

  • 🚫 Запуск исправления без копии. Если что-то пошло не так, вернуться некуда.
  • 🚫 Сразу «Удалять ссылки» и «Удалять объекты». Документы теряют реквизиты или исчезают целиком, а заметят это только при сдаче отчётности.
  • 🚫 Реструктуризация «на всякий случай». На большой базе это часы простоя без пользы, если нет реальных сбоев.
  • 🚫 Попытка запустить chdbfl на серверной базе. Утилита работает только с файлом 1Cv8.1CD.
  • 🚫 Проверка без повторного прогона. После исправления запустите «Только тестирование» ещё раз: протокол должен стать чистым.

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

Сколько длится тестирование и исправление базы 1С?
Зависит от размера и набора проверок. Логическая проверка базы в 5 ГБ на обычном ПК — примерно 15–40 минут. Реструктуризация базы в десятки гигабайт может идти несколько часов.
Можно ли работать в базе во время проверки?
Нет. Тестирование и исправление требует монопольного доступа. Без исправления в пользовательском режиме доступен только пересчёт итогов через обработку управления итогами.
Почему после тестирования база стала меньше?
Сработало сжатие таблиц: программа убрала пустое место, оставшееся после удалённых объектов. Данные при этом не теряются.
Помогает ли тестирование при ошибке «Ошибка формата потока»?
Иногда. Эта ошибка часто связана с кэшем на компьютере пользователя — сначала очистите кэш. Если ошибка повторяется у всех, запускайте chdbfl и тестирование на копии базы.
Нужно ли тестирование после обновления конфигурации?
Не обязательно. Обновление само по себе базу не портит. Проверку запускают, если после обновления появились ошибки или расхождения в данных.