Флажки тестирования и исправления базы 1С 8.3: что включать и в каком порядке
Содержание
Тестирование и исправление запускают в Конфигураторе: Администрирование → Тестирование и исправление.... Для первого прохода ставьте реиндексацию, проверку логической и ссылочной целостности и пересчёт итогов, а режим оставьте «Только проверка». Исправление включайте вторым запуском, когда уже видите, какие ошибки нашлись, и сделали копию базы
.
Утилита работает только в монопольном режиме: в базе не должно быть ни одного сеанса, кроме вашего Конфигуратора. Неверно выбранная галка в блоке битых ссылок может удалить документы без возможности вернуть их, поэтому ниже разобрано, что делает каждый флажок и когда его включать.
Что делает тестирование и исправление информационной базы 1С
Механизм встроен в платформу 1С:Предприятие 8.3 и одинаков для всех конфигураций: Бухгалтерии, ЗУП, УТ, ERP. Он проверяет служебную структуру базы, а не бухгалтерскую логику. Неправильную проводку или неверно рассчитанную зарплату он не найдёт.
Что умеет утилита:
- 🔧 перестраивать индексы таблиц;
- 🔍 искать записи, нарушающие внутреннюю структуру данных (логическая целостность);
- 🔗 находить ссылки на объекты, которых в базе уже нет (ссылочная целостность);
- 🧮 заново считать итоги регистров накопления и бухгалтерии;
- 📦 сжимать таблицы и пересоздавать их целиком (реструктуризация).
Типичные поводы для запуска:
- в отчётах остатки не сходятся с оборотами за период;
- в документах и справочниках появились значения вида
<Объект не найден> (123:a8b1...); - после аварийного отключения питания база открывается с ошибками;
- файловая база «разбухла» после массового удаления объектов;
- обновление конфигурации прервалось на этапе реструктуризации.
Для файловой базы есть ещё утилита chdbfl.exe в каталоге bin установленной платформы. Она проверяет физическую целостность файла 1Cv8.1CD, то есть то, до чего Конфигуратор не дотягивается. Если файл повреждён на этом уровне, Конфигуратор часто просто не открывает базу.
Подготовка к запуску: копия базы и монопольный режим
Порядок подготовки один и тот же для любой базы.
- Выгрузите базу:
Администрирование → Выгрузить информационную базу...в файл.dt. Для файловой базы дополнительно скопируйте каталог с файлом1Cv8.1CDцеликом, пока база закрыта. - Для клиент-серверной базы сделайте резервную копию средствами СУБД (MS SQL или PostgreSQL). Выгрузка
.dtна большой базе идёт долго и при повреждённых данных может завершиться ошибкой. - Предупредите пользователей и завершите их сеансы.
- Для файловой базы проверьте файл через
chdbfl.exeс отключённым флажком исправления. Если физические ошибки есть, сначала разберитесь с ними. - Откройте Конфигуратор под пользователем с правом администрирования и запустите тестирование.
Без копии базы тестирование в режиме исправления не запускайте: часть изменений необратима.
Как выгнать пользователей из базы
Монопольный режим нужен, потому что утилита перестраивает таблицы, а не только читает их. Если в базе есть хотя бы один чужой сеанс, вы увидите сообщение о невозможности установить монопольный режим.
| Тип базы | Как завершить сеансы |
|---|---|
| Файловая | Попросить всех выйти. В типовых конфигурациях на БСП: в пользовательском режиме Администрирование → Обслуживание → Блокировка работы пользователей |
| Клиент-серверная | Та же блокировка из пользовательского режима или блокировка начала сеансов в свойствах базы в консоли кластера серверов |
Принудительное завершение сеансов через консоль кластера обрывает работу пользователей: несохранённые документы пропадут. Делайте это после рабочего дня или по согласованию.
Сеансы фоновых и регламентных заданий тоже мешают монопольному режиму. В клиент-серверной базе при включённой блокировке начала сеансов заодно отметьте блокировку регламентных заданий, иначе они могут стартовать во время проверки.
Галки проверок: реиндексация, целостность и пересчёт итогов
Окно разделено на две части. Сверху флажки, что проверять. Снизу — режим работы и действия с найденными ошибками.
Реиндексация таблиц информационной базы
Удаляет и заново строит индексы. Лечит медленные отборы и ошибки вида «нарушение уникальности индекса», которые появляются после сбоев.
Ставить: почти всегда. Операция безопасна для данных, она не меняет сами записи.
Проверка логической целостности
Ищет записи, нарушающие внутреннюю структуру базы: строки табличных частей без владельца, неправильные служебные поля, нарушения в хранении данных регистров.
Ставить: всегда. Без неё утилита не узнает, что именно в базе сломано.
Проверка ссылочной целостности
Ищет поля, которые ссылаются на удалённые или несуществующие объекты. Это самый частый источник «битых» значений после прямого удаления объектов, неудачного обмена или ручной правки данных.
Ставить: всегда, когда есть подозрение на <Объект не найден>. При включении этой проверки логическая выполняется тоже.
Пересчёт итогов
Обнуляет таблицы итогов регистров накопления и бухгалтерии и заново считает их по движениям. Лечит ситуацию, когда в отчёте об остатках одна цифра, а по сумме движений другая.
Ставить: когда расходятся остатки или после аварии. На базе в 50–100 ГБ пересчёт итогов может занять несколько часов, закладывайте время.
Если подозрение только на итоги, а структуру трогать не нужно, итоги можно пересчитать без монопольного режима из пользовательского режима: Все функции → Стандартные → Управление итогами. Команда «Все функции» включается в параметрах главного меню.
Только проверка или исправление: когда включать режим исправления
Внизу окна переключатель режима:
- Только проверка — утилита пишет список ошибок в окно сообщений и ничего не меняет;
- Тестирование и исправление — утилита исправляет найденное по правилам, которые вы выберете ниже.
Правило простое: первый запуск — всегда «Только проверка». Сохраните сообщения в файл и посмотрите, сколько ошибок и в каких объектах. Десять битых ссылок в справочнике номенклатуры и тысячи повреждённых документов — разные ситуации, и выбор галок будет разным.
Что делать со ссылками на несуществующие объекты
Для этого блока три варианта.
| Вариант | Что произойдёт | Когда выбирать |
|---|---|---|
| Создавать объекты | В справочнике или документах появятся объекты-заглушки, на которые теперь ссылаются поля. Их видно по пометке «Объект не найден» в наименовании | Основной вариант: данные не теряются, заглушки можно потом заменить на правильные значения |
| Очищать ссылки | Поле станет пустым | Когда ссылка точно не нужна и восстанавливать её не из чего |
| Не изменять | Ошибка остаётся в базе, попадает только в протокол | Когда исправлять будете вручную или обменом |
Вариант «Создавать объекты» даёт точку опоры. После проверки найдите заглушки поиском по наименованию, посмотрите, где они используются, и замените их на правильные элементы. В типовых конфигурациях на БСП для замены есть обработка поиска и удаления дублей.
Что делать при частичной потере данных объектов
Это случай, когда объект есть, но часть его данных повреждена: например, у документа потеряна табличная часть или шапка.
| Вариант | Что произойдёт | Риск |
|---|---|---|
| Создавать объекты | Утилита восстановит объект из того, что осталось | Объект может оказаться неполным, его нужно проверить |
| Удалять объекты | Повреждённый объект будет удалён вместе с движениями | Данные пропадают безвозвратно |
| Не изменять | Ничего не меняется | Ошибка остаётся |
«Удалять объекты» на рабочей базе без копии не выбирайте никогда. Удалённый документ с движениями меняет остатки, обороты и закрытые периоды, и найти потом, что именно исчезло, можно только сравнением с копией.
Сжатие и реструктуризация таблиц базы
Эти две галки трогают физическое хранение данных, поэтому идут отдельно от проверок.
Сжатие таблиц информационной базы
Удаляет из таблиц освобождённое место, оставшееся после удаления записей. Для файловой базы это заметно уменьшает размер 1Cv8.1CD: после удаления помеченных объектов за несколько лет файл может сжаться на десятки процентов.
Для клиент-серверной базы эффект слабее: свободным местом управляет СУБД, и сжимать файлы данных лучше её средствами.
Реструктуризация таблиц информационной базы
Полностью пересоздаёт таблицы и переносит в них данные. Самая долгая операция, по времени она может превышать все остальные вместе.
Ставить, когда:
- обычная проверка не помогла, а ошибки повторяются;
- обновление конфигурации прервалось на реструктуризации;
- файловая база после сбоя работает нестабильно.
Если места на диске мало, реструктуризация не дойдёт до конца: ей нужно примерно столько же свободного места, сколько занимает база.
Итоги регистров и их оптимизация
Пересчёт итогов из основного окна считает итоги за всё время. В пользовательском режиме, в обработке «Управление итогами», можно настроить период рассчитанных итогов: платформа хранит итоги до заданной даты, а свежие периоды считает по движениям. На базах с большим числом движений это ускоряет проведение задним числом. Менять настройки итогов без понимания нагрузки на базу не стоит: неправильный период замедлит отчёты.
Какие галки ставить в типовых ситуациях
Ниже рабочие наборы под частые задачи. Первым идёт запуск «Только проверка», вторым — исправление.
| Ситуация | Реиндексация | Логическая | Ссылочная | Итоги | Сжатие | Реструктуризация |
|---|---|---|---|---|---|---|
| Плановая профилактика раз в квартал | ✅ | ✅ | ✅ | ✅ | ✅ (файловая) | — |
| Не сходятся остатки | ✅ | ✅ | — | ✅ | — | — |
<Объект не найден> в документах | ✅ | ✅ | ✅ | ✅ | — | — |
| База разбухла после удаления объектов | ✅ | ✅ | — | — | ✅ | — |
| Ошибки после сбоя питания или прерванного обновления | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Запуск из командной строки
Для регулярной профилактики тестирование запускают пакетно, ночью, без открытия Конфигуратора. Пример для файловой базы:
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /IBCheckAndRepair -ReIndex -LogAndRefsIntegrity -RecalcTotals -TestOnly /Out"D:\Logs\check.txt"
Путь к 1cv8.exe подставьте свой, по номеру установленной платформы. Для клиент-серверной базы вместо /F указывают /S"сервер\имябазы".
Основные ключи после /IBCheckAndRepair:
-ReIndex— реиндексация;-LogIntegrity— логическая целостность,-LogAndRefsIntegrity— логическая и ссылочная;-RecalcTotals— пересчёт итогов;-IBCompression— сжатие таблиц;-Rebuild— реструктуризация;-TestOnly— только проверка, без исправления;-BadRefCreate,-BadRefClear,-BadRefNone— что делать с битыми ссылками;-BadDataCreate,-BadDataDelete— что делать при частичной потере данных.
Протокол из файла /Out проверяйте утром до начала работы. Пароль в bat-файле храните на сервере с ограниченным доступом.
Частые ошибки при тестировании и исправлении
- ❌ Сразу запускать исправление. Без первого прохода «Только проверка» вы не знаете, что утилита собирается менять.
- ❌ Прерывать зависший процесс. На большой базе тестирование может молчать часами, особенно на пересчёте итогов и реструктуризации. Снятие процесса через диспетчер задач в момент записи в таблицы способно повредить базу сильнее исходной проблемы. Сначала проверьте, растёт ли нагрузка на диск и процессор.
- ❌ Лечить клиент-серверную базу только утилитой 1С. Если повреждены страницы данных на уровне СУБД, 1С их не исправит. Сначала проверка средствами СУБД.
- ❌ Не сохранять протокол. Окно сообщений очищается при следующем запуске. Скопируйте его в файл: по нему потом ищут, какие объекты восстановлены или очищены.
- ❌ Запускать на сетевом диске. Для файловой базы на сетевой папке тестирование идёт медленнее, а обрыв связи прерывает его посередине. Если возможно, скопируйте базу на локальный диск, проверьте и верните обратно.