К статье
Практический материал

Администрирование · 9 мин

Как прервать тестирование и исправление базы 1С

Как безопасно прервать тестирование и исправление информационной базы 1С, чем это рискованно, что делать после отмены и как восстановить работу базы.

Тестирование и исправление информационной базы (ТиИ) — штатный механизм конфигуратора 1С, который проверяет целостность данных и устраняет обнаруженные ошибки. Процедура может занимать часы на больших базах, и у администратора нередко возникает необходимость её прервать: закончилось регламентное окно, база срочно нужна пользователям, процесс завис или диск переполнен.

Прерывание ТиИ — операция с риском. Процедура работает в монопольном режиме и изменяет данные напрямую, поэтому резкая остановка на этапе исправления может оставить базу в промежуточном состоянии. Безопасность прерывания зависит от того, в каком режиме запущена проверка, каким способом её остановить и что сделать сразу после отмены.

Ниже описаны способы прерывания для файловых и клиент-серверных баз, оценка рисков, порядок проверки базы после отмены и типичные ошибки, которые приводят к потере данных.

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

Не всякая долгая работа ТиИ — признак зависания. На больших базах проверка ссылочной целостности и реиндексация могут идти часами, при этом дисковая активность продолжается. Перед прерыванием убедитесь, что процесс действительно не двигается: проверьте загрузку диска и процессора, размер файла базы (для файлового варианта), журнал сервера 1С или СУБД.

Оправданные причины прерывания: процесс завис без дисковой активности, заканчивается регламентное окно и базу нужно вернуть пользователям, переполнен диск, аварийная ситуация на сервере. Если ТиИ запущено в режиме «Только тестирование» (без исправления), прерывание почти безопасно — данные не изменяются. Если включено исправление ошибок, риск заметно выше.

Режим «Только тестирование»Данные не изменяются

Прерывание практически безопасно, база останется в исходном состоянии

Режим «Тестирование и исправление»Данные изменяются

Прерывание может оставить частично исправленные объекты, нужна проверка

Нет дисковой активности длительное времяВероятное зависание

Процесс, скорее всего, завис — прерывание оправдано

Растёт файл базы или tempdbПроцесс работает

ТиИ идёт штатно, по возможности дождитесь завершения

Подготовка: что сделать до прерывания

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

Зафиксируйте, на каком этапе находится процедура: в окне ТиИ видны выполняемые проверки (реструктуризация, проверка ссылочной целостности, реиндексация и др.). Эта информация понадобится при анализе последствий: прерывание на реиндексации менее опасно, чем на исправлении ссылочной целостности.

Способы прервать тестирование и исправление

Штатная отмена через конфигуратор

Наиболее безопасный способ — в окне запущенной процедуры нажать кнопку отмены (если она доступна) либо закрыть окно ТиИ и подтвердить прерывание. Платформа попытается завершить текущую операцию корректно. Учтите: отмена не мгновенная, платформа может довольно долго «дожимать» текущий шаг, особенно на этапе реструктуризации.

Завершение процесса для файловой базы

Если конфигуратор завис и не отвечает, завершите процесс 1cv8.exe через диспетчер задач. Файловая база при этом останется в том состоянии, в котором её застало завершение транзакции. Перед повторным запуском убедитесь, что рядом с файлом 1Cv8.1CD не осталось блокировок, и проверьте базу утилитой chdbfl.exe или повторным ТиИ в режиме «Только тестирование».

Остановка для клиент-серверной базы

В клиент-серверном варианте основную работу выполняет СУБД. Порядок такой: сначала завершите сеанс конфигуратора через консоль кластера серверов 1С (сеансы → принудительное завершение), затем при необходимости остановите длительный запрос на стороне СУБД — в MS SQL Server через Activity Monitor или команду KILL по идентификатору сессии, в PostgreSQL через pg_terminate_backend. Откат транзакции на СУБД может занять значительное время — это нормально, не перезагружайте сервер в этот момент.

Порядок безопасного прерывания
  1. 1
    Убедитесь, что есть актуальная резервная копия базы
  2. 2
    Проверьте, что процесс действительно завис: нет дисковой активности продолжительное время
  3. 3
    Попробуйте штатную отмену в окне тестирования и исправления
  4. 4
    Если не помогло — завершите сеанс через консоль кластера (клиент-сервер) или процесс 1cv8.exe (файловая база)
  5. 5
    Дождитесь отката транзакции на СУБД, не перезагружая сервер
  6. 6
    Проверьте базу в режиме «Только тестирование» или утилитой chdbfl.exe
  7. 7
    При обнаружении повреждений восстановите базу из резервной копии

Проверка базы после прерывания

После любого прерывания на этапе исправления базу нужно проверить до возврата пользователям. Для файловой базы запустите утилиту chdbfl.exe из каталога bin платформы и выполните проверку физической целостности файла 1Cv8.1CD без исправления. Затем откройте конфигуратор и запустите ТиИ в режиме «Только тестирование» с проверкой логической и ссылочной целостности.

Для клиент-серверной базы дополнительно проверьте целостность средствами СУБД: DBCC CHECKDB для MS SQL Server или аналогичные механизмы для PostgreSQL. Обратите внимание на журнал регистрации и логи СУБД на момент прерывания — там видно, какие операции были откачены.

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

Контрольные точки

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

Открытие конфигуратора и предприятия
Норма

База открывается без ошибок

Тревожный признак

Ошибки формата потока, повреждения таблиц

chdbfl.exe (файловая база)
Норма

Проверка завершается без сообщений о повреждениях

Тревожный признак

Найдены повреждённые страницы или таблицы

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

Ошибок не обнаружено или только те, что были до запуска

Тревожный признак

Новые ошибки ссылочной или логической целостности

Ключевые документы и отчёты
Норма

Данные открываются, обороты сходятся

Тревожный признак

Пропавшие записи, расхождения итогов

Как избежать необходимости прерывания в будущем

Большинство ситуаций с вынужденным прерыванием предотвращаются планированием. Запускайте ТиИ в регламентное окно с запасом времени, ориентируясь на длительность прошлых запусков. Для больших баз рассмотрите разбиение проверок: отдельно реиндексация, отдельно ссылочная целостность — так проще контролировать прогресс и безопаснее останавливаться между этапами.

Следите за свободным местом на диске: реструктуризация и реиндексация могут временно требовать объём, сопоставимый с размером базы. Перед запуском убедитесь, что резервная копия создана и проверена на восстановление. Для клиент-серверных баз полезно настроить мониторинг длительных запросов, чтобы отличать зависание от штатной работы.

Если ТиИ регулярно не укладывается в регламентное окно, это повод пересмотреть подход: чаще всего помогает переход на клиент-серверный вариант, свертка базы, очистка устаревших данных или перенос проверок на выходные с запуском по расписанию через пакетный режим конфигуратора.
ПЗ
Практическое замечание

Типичные ошибки при прерывании ТиИ

Типичные ошибки
01
Снятие процесса без резервной копии — при повреждении базы восстанавливать будет нечего
02
Перезагрузка сервера во время отката транзакции — СУБД может оставить базу в состоянии восстановления надолго
03
Повторный запуск ТиИ с исправлением сразу после прерывания без диагностики — можно усугубить повреждения
04
Прерывание при первой же паузе — процедура могла штатно работать, а остановка создала проблему на ровном месте
05
Возврат пользователей в базу до проверки целостности — ошибки всплывут уже на рабочих данных

Отдельная ошибка — путать зависание конфигуратора с зависанием самой процедуры. Иногда интерфейс конфигуратора перестаёт отвечать, но СУБД продолжает выполнять запрос. Прежде чем убивать процесс на сервере, проверьте активность на стороне СУБД: если запрос выполняется, дайте ему завершиться.

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

Что будет с базой, если просто выключить компьютер во время ТиИ?

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

Можно ли прервать ТиИ, запущенное в пакетном режиме через командную строку?

Да. Завершите соответствующий процесс 1cv8.exe (или сеанс на сервере для клиент-серверного варианта). Логика рисков та же: безопасность зависит от режима проверки и наличия резервной копии.

chdbfl.exe нашла повреждения после прерывания — что делать?

Оптимальный вариант — восстановить базу из резервной копии, сделанной до запуска ТиИ. Исправление средствами chdbfl.exe возможно, но утилита может удалять повреждённые данные без возможности их восстановления, поэтому применяйте её только на копии файла.

Сколько времени может занимать откат транзакции на СУБД после принудительной остановки?

Откат может длиться сопоставимо со временем самой операции — от минут до часов на больших базах. Это нормальное поведение. Прерывать откат перезагрузкой сервера нельзя: база данных останется в состоянии восстановления.

Нужно ли заново запускать ТиИ после прерывания?

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

Итог

Что важно запомнить

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