Проверка информационной базы 1С 8.3: найти повреждения и исправить их без потери данных
Содержание
Протестировать базу 1С на ошибки можно штатно: откройте Конфигуратор, выберите Администрирование → Тестирование и исправление, отметьте нужные проверки и запустите сначала режим «Только тестирование». Для этого нужен монопольный доступ: все пользователи должны выйти из базы. Файловую базу
дополнительно стоит прогнать утилитой chdbfl.exe, которая проверяет физическую целостность файла 1Cv8.1CD.
Порядок действий общий для платформы 1С:Предприятие 8.3 и не зависит от конфигурации: так же проверяют базу Бухгалтерии, ЗУП, УТ или самописной системы. Отличается только одно — файловая база или клиент-серверная, и об этом отдельно сказано в каждом шаге.
Когда пора проверить базу 1С на ошибки
Тестирование — не профилактика «на всякий случай» каждую неделю. Его запускают, когда есть повод. Типичные поводы такие:
- ⚡ аварийное выключение компьютера или сервера во время работы пользователей;
- 💾 сбой диска, переполнение места на диске, где лежит база;
- 🧩 сообщения при запуске или проведении:
Ошибка формата потока,Файл базы данных поврежден,Нарушение целостности структуры конфигурации; - 🔗 в документах и справочниках вместо значений видно
<Объект не найден> (123:8f2a…); - 📊 отчёт по остаткам не сходится с оборотно-сальдовой ведомостью, хотя документы проведены правильно;
- 🐢 база заметно замедлилась после массового удаления помеченных объектов или перезаполнения регистров;
- 🔄 перед обновлением конфигурации, если база давно не обслуживалась и предыдущее обновление прошло с ошибками.
Если симптом один и он случился сразу после правки кода или обновления, начните с очистки кэша: запустите клиент с параметром /ClearCache. Часть «странных» ошибок уходит уже на этом шаге, и тестирование не понадобится.
Подготовка к тестированию информационной базы
Тестирование и исправление меняет данные напрямую, в обход логики конфигурации. Отменить его результат нельзя. Поэтому подготовка обязательна.
Резервная копия
Перед запуском исправления сделайте полную копию базы — без неё не начинайте.
- 📁 Файловая база: закройте все сеансы и скопируйте каталог базы целиком, вместе с файлом
1Cv8.1CD. Копирование файла надёжнее, чем выгрузка в.dt: если файл повреждён, выгрузка может прерваться на середине. - 🗄 Клиент-серверная база
: сделайте резервную копию средствами СУБД (MS SQL Server или PostgreSQL). Дополнительно можно выгрузить
.dtчерезАдминистрирование → Выгрузить информационную базув Конфигураторе.
Монопольный доступ
Тестирование и исправление работает только в монопольном режиме. Если в базе есть хоть один сеанс, Конфигуратор сообщит, что не может установить монопольный режим.
Как освободить базу:
- Предупредите пользователей и выберите время вне рабочего дня: их сеансы будут закрыты.
- В клиент-серверном варианте откройте консоль администрирования серверов 1С, найдите базу в списке информационных баз, в её свойствах включите блокировку начала сеансов и задайте код разрешения.
- Завершите оставшиеся сеансы в узле «Сеансы» той же консоли. Незаписанные данные пользователей при этом пропадут.
- В типовых конфигурациях на БСП то же делается из пользовательского режима: в разделе
Администрированиеесть команда блокировки работы пользователей (в разных релизах она находится в группе «Обслуживание» или «Поддержка и обслуживание»). - Откройте Конфигуратор. При блокировке сеансов в параметрах запуска укажите код разрешения:
/UC <код>.
Не удаляйте вручную файлы блокировки и не перезапускайте службу сервера 1С ради «быстрого выхода» пользователей. Это обрывает сеансы посреди записи и само по себе может повредить данные.
Место на диске и время
Для файловой базы оставьте на диске свободного места не меньше двойного размера 1Cv8.1CD: при реструктуризации и сжатии платформа создаёт временные копии таблиц. Время работы зависит от объёма и выбранных флажков. Пересчёт итогов и проверка ссылочной целостности на крупной базе могут идти несколько часов, поэтому запускайте их на ночь.
Как запустить тестирование и исправление в Конфигураторе
Шаг 1. Откройте окно проверки
- Запустите 1С, выберите базу и нажмите
Конфигуратор. - В меню выберите
Администрирование → Тестирование и исправление…. - Откроется окно с флажками проверок и настройками реакции на найденные ошибки.
Шаг 2. Выберите проверки
| Флажок | Что делает | Когда включать |
|---|---|---|
| Реиндексация таблиц информационной базы | Перестраивает индексы таблиц | Ошибки поиска, «пропавшие» записи в списках, после сбоя |
| Проверка логической целостности информационной базы | Проверяет структуру таблиц и данных на соответствие конфигурации | Почти всегда |
| Проверка ссылочной целостности информационной базы | Ищет ссылки на несуществующие объекты | При <Объект не найден> и после удаления объектов |
| Пересчёт итогов | Пересчитывает итоги регистров накопления и бухгалтерии | Не сходятся остатки, отчёты дают странные суммы |
| Сжатие таблиц информационной базы | Физически удаляет записи, помеченные как удалённые | Файловая база после массового удаления |
| Реструктуризация таблиц информационной базы | Пересоздаёт таблицы заново | Когда остальные проверки не помогли; самая долгая операция |
Первым проходом отметьте реиндексацию, логическую и ссылочную целостность. Пересчёт итогов добавьте, если проблема в остатках. Сжатие и реструктуризацию оставьте на второй проход.
Шаг 3. Настройте реакцию на найденные ошибки
Для ссылочной целостности платформа спрашивает, что делать в двух ситуациях.
При наличии ссылок на несуществующие объекты:
- Создавать объекты — платформа создаст объекты-заглушки на месте потерянных. Ссылки в документах сохранятся, потом заглушки можно найти и заполнить.
- Удалять ссылки — поле в документе станет пустым. Потом уже не понять, какой контрагент или номенклатура там были.
- Не изменять — ошибка только попадёт в протокол.
При частичной потере данных объектов:
- Создавать объекты — объект восстановят по тому, что от него осталось.
- Удалять объекты — остатки повреждённого объекта будут удалены.
- Не изменять — только запись в протокол.
Для рабочей базы безопаснее вариант «Создавать объекты». Заглушку легко найти и привести в порядок, а удалённую ссылку не вернуть.
Шаг 4. Сначала только тестирование
В нижней части окна выберите режим «Только тестирование» и нажмите Выполнить. Платформа пройдёт по базе, ничего не меняя, и выведет список проблем в окно служебных сообщений.
Если ошибок нет — на этом всё. Если есть, сохраните протокол (скопируйте текст из окна сообщений в файл), убедитесь, что резервная копия на месте, переключите режим на «Тестирование и исправление» и запустите ещё раз.
Как читать протокол проверки и что значат ошибки
Протокол — это список сообщений по таблицам и объектам. Он длинный, но разобраться в нём проще, если знать, какие группы ошибок встречаются.
- 🔗 Ссылки на несуществующие объекты. Документ или регистр ссылается на объект, которого в базе нет. Причина — удаление объекта без контроля ссылок, неудачный обмен, ручная правка данных. Лечится выбранным режимом ссылочной целостности.
- 🧱 Нарушения логической структуры. Записи таблиц не соответствуют метаданным: лишние поля, неверные типы. Обычно возникают после сбоя при реструктуризации или обновлении.
- 📉 Расхождения итогов. Сообщения при пересчёте итогов указывают, что сохранённые итоги не совпадали с движениями. После исправления остатки в отчётах выровняются.
- 🧩 Повреждённые объекты. Часть данных объекта не читается. Здесь срабатывает настройка «при частичной потере данных».
Как найти объекты-заглушки после исправления
Созданные объекты-заглушки появятся в справочниках и списках документов с пустыми или служебными реквизитами. Удобнее всего искать их по номерам из протокола проверки или отбором списка по пустому наименованию и дате. Найденный элемент откройте, заполните наименование и обязательные реквизиты по смыслу документов, в которых он используется.
Если заглушка оказалась дублем уже существующего объекта, замените её на правильный элемент. В типовых конфигурациях на БСП для этого есть обработка поиска и удаления дублей с заменой ссылок.
Проверка базы 1С внешними средствами: chdbfl, пакетный режим, СУБД
Утилита chdbfl.exe для файловой базы
chdbfl.exe проверяет физическую целостность файла 1Cv8.1CD: структуру страниц и таблиц. Логику данных она не анализирует. Утилита лежит в каталоге bin установленной платформы, например C:\Program Files\1cv8\8.3.25.1374\bin\chdbfl.exe.
- Закройте все сеансы базы, включая Конфигуратор.
- Запустите
chdbfl.exe. - Укажите путь к файлу
1Cv8.1CD. - Сначала запустите проверку без флажка «Исправлять обнаруженные ошибки».
- Если найдены повреждения — сделайте копию файла, установите флажок и запустите снова.
После chdbfl всё равно выполните тестирование и исправление в Конфигураторе: утилита чинит структуру файла, но не ссылки и итоги.
Пакетный запуск Конфигуратора
Тестирование можно запускать из командной строки — удобно для ночного регламента или если интерфейс Конфигуратора не открывается. Пример для файловой базы, только проверка, без изменений:
"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals -TestOnly /Out "D:\Logs\check.txt"
Для клиент-серверной базы вместо /F укажите /S "сервер\имя_базы". Ключевые параметры /IBCheckAndRepair:
-ReIndex— реиндексация;-LogAndRefsIntegrity— логическая и ссылочная целостность;-RecalcTotals— пересчёт итогов;-IBCompression— сжатие таблиц;-Rebuild— реструктуризация;-TestOnly— только тестирование, без исправления;-BadRefCreate,-BadRefClear,-BadRefNone— что делать со ссылками на несуществующие объекты.
Результат работы попадёт в файл, указанный в /Out. Уберите -TestOnly и добавьте -BadRefCreate, когда будете готовы исправлять.
Пароль в командной строке виден в списке процессов и в планировщике. Для регламентного задания заведите отдельного пользователя с ролью администратора и храните скрипт в каталоге, куда нет доступа у обычных пользователей.
Проверка на уровне СУБД
В клиент-серверной базе часть проблем лежит ниже 1С — в самой СУБД. Конфигуратор их не видит.
- 🟦 MS SQL Server: проверка целостности командой
DBCC CHECKDB, обслуживание индексов и обновление статистики через план обслуживания. - 🐘 PostgreSQL: регулярные
VACUUM ANALYZEпо базе, контроль журналов сервера на ошибки чтения.
-- MS SQL Server: проверка базы без исправления
DBCC CHECKDB ('buh_base') WITH NO_INFOMSGS;
Если DBCC CHECKDB нашёл повреждения, не запускайте режимы с потерей данных наугад. Сначала восстановите базу из последней исправной резервной копии на тестовый сервер и сравните.
Поиск битых ссылок запросом
Найти документы с потерянными ссылками можно и без монопольного режима — консолью запросов. Пример для реквизита «Контрагент» в реализации:
ВЫБРАТЬ
Док.Ссылка,
Док.Контрагент
ИЗ
Документ.РеализацияТоваровУслуг КАК Док
ГДЕ
Док.Контрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
И Док.Контрагент.Ссылка ЕСТЬ NULL
Ссылка заполнена, но объекта за ней нет — значит, ссылка битая. Так удобно оценить масштаб до того, как запускать исправление.
Что сделать после исправления базы
Исправление закрывает найденные ошибки, но базу стоит привести в порядок целиком.
- Сделайте второй проход «Только тестирование». Протокол должен быть пустым или содержать только предупреждения.
- Сожмите файловую базу. Флажок «Сжатие таблиц информационной базы» уменьшает размер
1Cv8.1CDпосле массовых удалений и ускоряет работу. - Пересчитайте итоги, если в первом проходе их не трогали, а исправление затронуло документы с движениями.
- Проверьте учёт. В бухгалтерских конфигурациях сформируйте оборотно-сальдовую ведомость за проблемный период и сравните с данными до сбоя. Если были созданы заглушки — заполните их.
- Удалите помеченные объекты. Штатное удаление проверяет ссылки, поэтому мусор уйдёт без новых битых ссылок.
- Обновите статистику СУБД в клиент-серверном варианте: после массовых изменений запросы иначе работают медленно.
- Снимите блокировку сеансов и сообщите пользователям, что база доступна.
Сохраните протокол и дату проверки. Если через месяц ошибки повторятся в тех же таблицах, у вас будет с чем сравнить.
Если тестирование не помогло
Бывает, что исправление завершается с ошибкой или проблемы остаются. Варианты действий — от мягких к радикальным:
| Способ | Когда применять | Риски |
|---|---|---|
| Повторить тестирование с реструктуризацией | Ошибки остались после первого прохода | Долго; нужно место на диске |
chdbfl.exe с исправлением | Файловая база, ошибки чтения файла | Может удалить повреждённые страницы данных |
Выгрузить в .dt и загрузить в новую пустую базу | Файл повреждён, но выгрузка проходит | Если выгрузка падает, способ не сработает |
| Восстановить из резервной копии | Остальное не помогло | Потеря данных, введённых после копии |
| Перенести данные в новую базу обменом | Копии нет, база частично читается | Трудоёмко, нужен специалист |
Выгрузка в .dt и загрузка в новую базу — сильный приём для файловой базы. Платформа читает данные и записывает их в новый, чистый файл. Внутренние повреждения структуры, которые не задели сами данные, при этом исчезают.
Если повреждения повторяются регулярно, ищите внешнюю причину. Файловая база по сети на сетевом диске, сбои питания без ИБП, диск с ошибками SMART, антивирус, проверяющий 1Cv8.1CD во время записи, — частые источники. Пока причина не устранена, тестирование будет лишь временно убирать последствия.