Ремонт испорченной информационной базы 1С 8.3: от безопасной проверки до резервной копии

· 10 мин

Содержание

Повреждённую базу данных 1С 8.3 восстанавливают в таком порядке: копия файла базы → Конфигуратор → Администрирование → Тестирование и исправление → утилита chdbfl.exe (только файловая база) → выгрузка и загрузка .dt → восстановление из резервной копии. Каждый следующий шаг радикальнее предыдущего, поэтому переходить к нему стоит, только если прошлый не помог.

Самостоятельно и без потери данных удаётся спасти большинство баз с повреждёнными индексами, итогами и битыми ссылками. Если же разрушена физическая структура файла 1Cv8.1CD или страницы таблиц СУБД, часть данных придётся брать из архива или восстанавливать вручную.

Как понять, что база действительно повреждена

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

Типичные признаки:

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

Сначала исключите простые причины. Очистите кэш клиента: запустите 1С с параметром /ClearCache или удалите каталоги базы в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8 (сеансы этой базы на компьютере должны быть закрыты). Проверьте, открывается ли база с другого рабочего места. Если ошибка исчезла — база цела.

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

Отчего портятся базы и почему от причины зависит способ ремонта

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

ПричинаЧто обычно ломаетсяС чего начинать
Отключение питания, зависание компьютера во время записиСтраницы файла 1Cv8.1CD, индексыchdbfl.exe, затем тестирование
Разрыв сети при работе с файловой базой по общей папкеОтдельные записи, итогиТестирование и исправление
Антивирус или резервное копирование, заблокировавшие файл на ходуСтруктура файлаchdbfl.exe
Ошибки диска, переполненный томФизические страницыПроверка диска, затем chdbfl.exe или архив
Прерванное обновление конфигурацииКонфигурация базы данныхРезервная копия, сделанная перед обновлением
Сбой сервера СУБДТаблицы и индексы СУБДDBCC CHECKDB и средства СУБД
Удаление объектов напрямую, без контроля ссылокСсылочная целостностьТестирование с исправлением ссылок

Файловые базы страдают чаще клиент-серверных. Их запись идёт в один файл, и любой обрыв посреди операции оставляет его в неполном состоянии. Особенно рискованна работа с файловой базой по Wi-Fi или через VPN.

Подготовка: что сделать до любых исправлений

Все методы ниже меняют данные. Если что-то пойдёт не так, нужна точка отката.

  1. Попросите пользователей выйти из базы. Тестирование, chdbfl.exe и загрузка .dt требуют монопольного доступа.
  2. Для файловой базы скопируйте всю папку базы, а не только 1Cv8.1CD, на другой диск.
  3. Для клиент-серверной базы сделайте резервную копию средствами СУБД (полный бэкап в MS SQL Server или pg_dump в PostgreSQL).
  4. Проверьте свободное место: на время тестирования и сжатия нужно не меньше двух объёмов базы.
  5. Если причина — диск, сначала проверьте его (chkdsk для Windows) и перенесите копию базы на исправный носитель.

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

Попытка сделать выгрузку в .dt до ремонта тоже полезна. Если выгрузка прошла, у вас есть полноценный архив. Если упала — сообщение об ошибке укажет на повреждённую таблицу.

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

Это первый и самый безопасный способ восстановить базу 1С 8.3. Он работает и для файловых, и для клиент-серверных баз.

Запуск проверки

  1. Откройте базу в режиме Конфигуратора.
  2. Выберите Администрирование → Тестирование и исправление.
  3. Сначала отметьте только проверки и режим «Тестирование» без исправления. Так вы увидите масштаб проблемы.
  4. Если ошибки найдены, запустите повторно с режимом «Тестирование и исправление».

Какие флажки ставить

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

Режимы для битых ссылок

Здесь решается судьба данных. При ссылках на несуществующие объекты доступны три варианта:

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

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

Запустить ту же проверку можно из командной строки, например ночью: 1cv8.exe DESIGNER /F "D:\Bases\Buh" /N Админ /P пароль /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals -BadRefCreate -BadDataCreate /Out "D:\log.txt". Для серверной базы вместо /F используют /S "сервер\база".

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

Метод 2. Утилита chdbfl.exe для файла 1Cv8.1CD

Если файловая база не открывается вообще, Конфигуратор до тестирования не дойдёт. На этот случай в поставке платформы есть утилита проверки физической целостности chdbfl.exe. Для клиент-серверных баз она не применяется.

Где взять: в каталоге установленной платформы, например C:\Program Files\1cv8\8.3.24.1342\bin\chdbfl.exe. Номер версии в пути у вас будет свой. Берите утилиту из той же версии платформы, которой вы открываете базу.

Порядок работы:

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

chdbfl.exe правит физический уровень: страницы, размещение записей, индексы. Логическую целостность данных она не проверяет. Поэтому шаг 6 не пропускайте.

Если база клиент-серверная

Вместо chdbfl.exe проверку физического уровня делают средствами СУБД:

  • в MS SQL Server — DBCC CHECKDB, сначала без параметров исправления;
  • в PostgreSQL — проверка журнала сервера, VACUUM и REINDEX для повреждённых таблиц.
-- MS SQL Server: только проверка, без исправлений
DBCC CHECKDB ('buh_base') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Режим REPAIR_ALLOW_DATA_LOSS в DBCC CHECKDB удаляет повреждённые страницы и может оставить базу 1С в несогласованном состоянии. Используйте его только на копии и только если резервной копии СУБД нет. Перед этим базу переводят в однопользовательский режим, и все сеансы 1С обрываются.

Метод 3. Выгрузка в .dt и ручной разбор файла

Когда тестирование завершилось, но ошибки остались, помогает пересоздание базы через выгрузку.

Выгрузка и загрузка

  1. В Конфигураторе: Администрирование → Выгрузить информационную базу, сохраните файл .dt.
  2. Создайте новую пустую базу в другом каталоге или на сервере.
  3. В новой базе: Администрирование → Загрузить информационную базу, укажите сохранённый .dt.
  4. Запустите тестирование и исправление уже в новой базе.

При загрузке платформа строит все таблицы заново. Остатки повреждённой физической структуры не переносятся. Старую базу не удаляйте, пока не проверите отчёты в новой.

Если выгрузка падает на конкретной таблице, имя таблицы в сообщении подскажет, какой объект повреждён. Иногда помогает удалить этот объект средствами 1С (например, документ-«пустышку» после тестирования) и повторить выгрузку.

Сторонние инструменты для опытных пользователей

Если файл 1Cv8.1CD не открывают ни платформа, ни chdbfl.exe, остаются сторонние средства:

  • Tool_1CD — бесплатная утилита для чтения файла 1CD напрямую. Позволяет просмотреть таблицы, сохранить конфигурацию и выгрузить уцелевшие данные.
  • v8unpack — распаковывает и собирает контейнеры .cf, .cfe, .epf. С файлом данных она не работает, зато помогает, когда повреждён именно файл конфигурации или внешняя обработка.

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

Метод 4. Восстановление из резервной копии

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

Вид копииКак восстановить
Файл .dtНовая пустая база → Администрирование → Загрузить информационную базу
Копия папки файловой базыЗакрыть базу, заменить папку на копию целиком
Бэкап MS SQL Server или PostgreSQLВосстановить средствами СУБД в новую базу, затем зарегистрировать её в кластере 1С
Автоматическая копия перед обновлениемЗагрузить её .dt или файл так же, как выше

Что делать с данными после даты копии:

  1. Определите период потерь: от даты архива до дня сбоя.
  2. Если повреждённая база хоть частично открывается, выгрузите из неё документы за этот период. Подойдёт типовая «Выгрузка и загрузка данных XML» с диска ИТС или ваш обмен.
  3. Остальное восстановите по первичке, выпискам банка и данным ЭДО. Документы ЭДО и выписки можно загрузить повторно.
  4. Сверьте остатки по ключевым счетам и регистрам с последними отчётами, сданными в налоговую.

Когда нужен специалист и сколько это стоит

Звать программиста 1С стоит, если:

  • chdbfl.exe завершается с ошибкой или после неё база по-прежнему не открывается;
  • выгрузка .dt падает, а резервной копии нет;
  • клиент-серверная база с ошибками DBCC CHECKDB;
  • после тестирования пропали проводки или документы, и непонятно какие.

Ориентировочные цены у франчайзи и частных специалистов по рынку:

РаботаПримерная стоимость
Диагностика, тестирование и исправление2 000–5 000 ₽
Восстановление файловой базы с физическими повреждениями5 000–15 000 ₽
Извлечение данных из неоткрываемого 1CD, перенос в чистую базуот 15 000 ₽ и выше, часто почасово
Восстановление клиент-серверной базы на уровне СУБДот 10 000 ₽, зависит от объёма

Цены зависят от региона, размера базы и срочности. Если есть договор сопровождения, первичная диагностика часто входит в него.

Профилактика: как не доводить базу до повреждения

Большинство поломок возникает из-за обрыва записи. Поэтому защищают в первую очередь питание, сеть и копии.

Защита базы 1С от повреждений
Выполнено: 0 / 8

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

Для файловых баз больше чем на 5–10 одновременных пользователей подумайте о переходе на клиент-серверный вариант. СУБД пишет данные через журнал транзакций и переносит обрывы связи гораздо спокойнее.

Частые вопросы о ремонте базы 1С

Можно ли запускать chdbfl.exe, пока бухгалтер работает в базе?
Нет. Утилите нужен монопольный доступ к файлу. Попросите всех выйти и закройте фоновые сеансы, иначе проверка не начнётся.
Почему после тестирования в справочниках появились элементы «Объект не найден»?
Это заглушки, созданные в режиме «Создавать объекты». Откройте документы, которые на них ссылаются, и замените заглушку правильным элементом или заполните её реквизиты.
Сколько времени идёт тестирование большой базы?
Зависит от размера и выбранных флажков. Базу на 1–2 ГБ проверяют обычно за 10–40 минут, реструктуризация таблиц может идти в разы дольше. Запускайте вечером или в выходные.
Поможет ли обновление платформы при повреждении базы?
Само обновление файл не чинит. Но если ошибка вызвана дефектом конкретной сборки, новая версия платформы и свежий chdbfl.exe иногда справляются там, где старая сборка падала.
Восстановится ли конфигурация, если повреждена только она?
Если есть файл .cf той же конфигурации и релиза, загрузите его в Конфигураторе и обновите конфигурацию базы данных. Данные при этом остаются, но доработки, которых нет в .cf, пропадут.