Проверка информационной базы 1С 8.3: найти повреждения и исправить их без потери данных

· 10 мин

Содержание

Протестировать базу 1С на ошибки можно штатно: откройте Конфигуратор, выберите Администрирование → Тестирование и исправление, отметьте нужные проверки и запустите сначала режим «Только тестирование». Для этого нужен монопольный доступ: все пользователи должны выйти из базы. Файловую базу дополнительно стоит прогнать утилитой chdbfl.exe, которая проверяет физическую целостность файла 1Cv8.1CD.

Порядок действий общий для платформы 1С:Предприятие 8.3 и не зависит от конфигурации: так же проверяют базу Бухгалтерии, ЗУП, УТ или самописной системы. Отличается только одно — файловая база или клиент-серверная, и об этом отдельно сказано в каждом шаге.

Когда пора проверить базу 1С на ошибки

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

  • ⚡ аварийное выключение компьютера или сервера во время работы пользователей;
  • 💾 сбой диска, переполнение места на диске, где лежит база;
  • 🧩 сообщения при запуске или проведении: Ошибка формата потока, Файл базы данных поврежден, Нарушение целостности структуры конфигурации;
  • 🔗 в документах и справочниках вместо значений видно <Объект не найден> (123:8f2a…);
  • 📊 отчёт по остаткам не сходится с оборотно-сальдовой ведомостью, хотя документы проведены правильно;
  • 🐢 база заметно замедлилась после массового удаления помеченных объектов или перезаполнения регистров;
  • 🔄 перед обновлением конфигурации, если база давно не обслуживалась и предыдущее обновление прошло с ошибками.

Если симптом один и он случился сразу после правки кода или обновления, начните с очистки кэша: запустите клиент с параметром /ClearCache. Часть «странных» ошибок уходит уже на этом шаге, и тестирование не понадобится.

Подготовка к тестированию информационной базы

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

Резервная копия

Перед запуском исправления сделайте полную копию базы — без неё не начинайте.

  • 📁 Файловая база: закройте все сеансы и скопируйте каталог базы целиком, вместе с файлом 1Cv8.1CD. Копирование файла надёжнее, чем выгрузка в .dt: если файл повреждён, выгрузка может прерваться на середине.
  • 🗄 Клиент-серверная база : сделайте резервную копию средствами СУБД (MS SQL Server или PostgreSQL). Дополнительно можно выгрузить .dt через Администрирование → Выгрузить информационную базу в Конфигураторе.

Монопольный доступ

Тестирование и исправление работает только в монопольном режиме. Если в базе есть хоть один сеанс, Конфигуратор сообщит, что не может установить монопольный режим.

Как освободить базу:

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

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

Место на диске и время

Для файловой базы оставьте на диске свободного места не меньше двойного размера 1Cv8.1CD: при реструктуризации и сжатии платформа создаёт временные копии таблиц. Время работы зависит от объёма и выбранных флажков. Пересчёт итогов и проверка ссылочной целостности на крупной базе могут идти несколько часов, поэтому запускайте их на ночь.

Как запустить тестирование и исправление в Конфигураторе

Шаг 1. Откройте окно проверки

  1. Запустите 1С, выберите базу и нажмите Конфигуратор.
  2. В меню выберите Администрирование → Тестирование и исправление….
  3. Откроется окно с флажками проверок и настройками реакции на найденные ошибки.

Шаг 2. Выберите проверки

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

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

Шаг 3. Настройте реакцию на найденные ошибки

Для ссылочной целостности платформа спрашивает, что делать в двух ситуациях.

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

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

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

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

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

Шаг 4. Сначала только тестирование

В нижней части окна выберите режим «Только тестирование» и нажмите Выполнить. Платформа пройдёт по базе, ничего не меняя, и выведет список проблем в окно служебных сообщений.

Если ошибок нет — на этом всё. Если есть, сохраните протокол (скопируйте текст из окна сообщений в файл), убедитесь, что резервная копия на месте, переключите режим на «Тестирование и исправление» и запустите ещё раз.

Как читать протокол проверки и что значат ошибки

Протокол — это список сообщений по таблицам и объектам. Он длинный, но разобраться в нём проще, если знать, какие группы ошибок встречаются.

  • 🔗 Ссылки на несуществующие объекты. Документ или регистр ссылается на объект, которого в базе нет. Причина — удаление объекта без контроля ссылок, неудачный обмен, ручная правка данных. Лечится выбранным режимом ссылочной целостности.
  • 🧱 Нарушения логической структуры. Записи таблиц не соответствуют метаданным: лишние поля, неверные типы. Обычно возникают после сбоя при реструктуризации или обновлении.
  • 📉 Расхождения итогов. Сообщения при пересчёте итогов указывают, что сохранённые итоги не совпадали с движениями. После исправления остатки в отчётах выровняются.
  • 🧩 Повреждённые объекты. Часть данных объекта не читается. Здесь срабатывает настройка «при частичной потере данных».
Диагностика: выберите симптом

Как найти объекты-заглушки после исправления

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

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

Проверка базы 1С внешними средствами: chdbfl, пакетный режим, СУБД

Утилита chdbfl.exe для файловой базы

chdbfl.exe проверяет физическую целостность файла 1Cv8.1CD: структуру страниц и таблиц. Логику данных она не анализирует. Утилита лежит в каталоге bin установленной платформы, например C:\Program Files\1cv8\8.3.25.1374\bin\chdbfl.exe.

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

После 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

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

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

Исправление закрывает найденные ошибки, но базу стоит привести в порядок целиком.

  1. Сделайте второй проход «Только тестирование». Протокол должен быть пустым или содержать только предупреждения.
  2. Сожмите файловую базу. Флажок «Сжатие таблиц информационной базы» уменьшает размер 1Cv8.1CD после массовых удалений и ускоряет работу.
  3. Пересчитайте итоги, если в первом проходе их не трогали, а исправление затронуло документы с движениями.
  4. Проверьте учёт. В бухгалтерских конфигурациях сформируйте оборотно-сальдовую ведомость за проблемный период и сравните с данными до сбоя. Если были созданы заглушки — заполните их.
  5. Удалите помеченные объекты. Штатное удаление проверяет ссылки, поэтому мусор уйдёт без новых битых ссылок.
  6. Обновите статистику СУБД в клиент-серверном варианте: после массовых изменений запросы иначе работают медленно.
  7. Снимите блокировку сеансов и сообщите пользователям, что база доступна.

Сохраните протокол и дату проверки. Если через месяц ошибки повторятся в тех же таблицах, у вас будет с чем сравнить.

Если тестирование не помогло

Бывает, что исправление завершается с ошибкой или проблемы остаются. Варианты действий — от мягких к радикальным:

СпособКогда применятьРиски
Повторить тестирование с реструктуризациейОшибки остались после первого проходаДолго; нужно место на диске
chdbfl.exe с исправлениемФайловая база, ошибки чтения файлаМожет удалить повреждённые страницы данных
Выгрузить в .dt и загрузить в новую пустую базуФайл повреждён, но выгрузка проходитЕсли выгрузка падает, способ не сработает
Восстановить из резервной копииОстальное не помоглоПотеря данных, введённых после копии
Перенести данные в новую базу обменомКопии нет, база частично читаетсяТрудоёмко, нужен специалист

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

Если повреждения повторяются регулярно, ищите внешнюю причину. Файловая база по сети на сетевом диске, сбои питания без ИБП, диск с ошибками SMART, антивирус, проверяющий 1Cv8.1CD во время записи, — частые источники. Пока причина не устранена, тестирование будет лишь временно убирать последствия.

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

Можно ли протестировать базу 1С без Конфигуратора?
Полноценно — нет: тестирование и исправление есть только в Конфигураторе или в его пакетном запуске. Без монопольного режима можно лишь найти битые ссылки запросом.
Как часто проверять базу на ошибки?
По поводу: после сбоев, перед обновлением после долгого перерыва, при странных остатках. Для крупных баз удобно раз в квартал запускать «Только тестирование» по расписанию.
Удалит ли тестирование мои документы?
В режиме «Только тестирование» — нет. При исправлении удаляются только повреждённые данные и только при выборе вариантов «Удалять ссылки» или «Удалять объекты».
Почему проверка идёт несколько часов?
Дольше всего работают пересчёт итогов, ссылочная целостность и реструктуризация. На базах в десятки гигабайт это норма; прерывать процесс нельзя.
Нужно ли тестировать базу в облаке 1С:Фреш?
Нет, доступа к Конфигуратору там нет. Обслуживанием базы занимается провайдер сервиса, к нему и обращайтесь при ошибках.