Администрирование · 11 мин
Как остановить реструктуризацию 1С и не потерять базу
Что делать, если реструктуризация базы 1С зависла или идёт слишком долго: безопасные способы остановки, риски потери данных, восстановление из копии.
Реструктуризация в 1С — это процесс изменения структуры таблиц базы данных, который запускается при обновлении конфигурации, если изменились объекты метаданных: справочники, документы, регистры. На больших базах процесс может идти часами, и у администратора возникает законный вопрос: можно ли его остановить и что будет с данными.
Короткий ответ: остановить реструктуризацию «мягко» штатными средствами нельзя — в конфигураторе нет кнопки «Отмена». Единственные способы — дождаться завершения или принудительно завершить процесс, что почти всегда приводит к повреждению базы и необходимости восстановления из резервной копии. Поэтому правильная стратегия — не «останавливать», а оценивать, завис процесс или работает, и заранее готовить план восстановления.
Ниже разобраны признаки зависания, безопасные действия, способы принудительной остановки для файлового и клиент-серверного вариантов, а также как минимизировать риски при повторном запуске обновления.
Что происходит во время реструктуризации
При обновлении конфигурации базы данных 1С сравнивает старую и новую структуру метаданных. Если изменились реквизиты, измерения, ресурсы или добавились объекты, платформа перестраивает физические таблицы: создаёт новые, копирует в них данные, удаляет старые. На этом этапе в окне конфигуратора отображается список таблиц и полоса прогресса.
Длительность зависит от размера затронутых таблиц. Реструктуризация регистра накопления с десятками миллионов записей может занять несколько часов — и это норма, а не зависание. В клиент-серверном варианте основную работу выполняет СУБД (MS SQL, PostgreSQL), в файловом — процесс конфигуратора на компьютере администратора.
Как отличить долгую работу от зависания
Прежде чем что-либо останавливать, нужно убедиться, что процесс действительно «умер». Первый признак живого процесса — активность на диске и в процессоре. В файловом варианте откройте диспетчер задач и посмотрите на процесс 1cv8.exe: если он потребляет CPU и идёт чтение/запись на диск, реструктуризация работает.
В клиент-серверном варианте проверяйте активность на стороне СУБД. Для MS SQL Server используйте Activity Monitor или запрос к sys.dm_exec_requests — вы увидите выполняющиеся запросы от рабочего процесса кластера 1С. Для PostgreSQL — представление pg_stat_activity. Если запросы выполняются и меняются, процесс идёт.
Дополнительный признак — рост файлов базы или журнала транзакций. Если размер файлов данных меняется, СУБД активно переносит записи. Полное отсутствие активности в течение длительного времени (десятки минут при нулевой нагрузке на CPU и диск) — уже повод подозревать зависание или взаимоблокировку.
Дождитесь завершения, не прерывайте
Проверьте запросы в Activity Monitor или pg_stat_activity
Ищите блокировки в СУБД и консоли кластера
Интерфейс может не обновляться при живом процессе
Что сделать до того, как останавливать процесс
Первое и главное правило: пока реструктуризация идёт, не выключайте компьютер, не перезагружайте сервер и не обрывайте сеть. Если есть хоть малейший шанс, что процесс жив, — ждите. На практике реструктуризация больших баз может занимать всю ночь, и именно поэтому обновления рекомендуют запускать в нерабочее время.
Проверьте наличие свежей резервной копии. Если копии нет, а процесс, по вашей оценке, завис — не спешите его убивать: сначала попытайтесь скопировать файл базы (1Cv8.1CD) или сделать бэкап средствами СУБД, если это технически возможно при текущих блокировках. Копия, снятая в середине реструктуризации, сама по себе может быть непригодной, но иногда это единственный шанс.
Проверьте блокировки. В клиент-серверном варианте реструктуризация может «висеть» из-за того, что другие сеансы держат таблицы. Завершите все пользовательские сеансы через консоль кластера, снимите фоновые задания — возможно, процесс сам продолжится, и останавливать его не придётся.
- 1Проверьте активность CPU, диска и СУБД — убедитесь, что процесс действительно завис
- 2Завершите все пользовательские сеансы и фоновые задания через консоль кластера
- 3Проверьте и снимите взаимоблокировки на стороне СУБД
- 4Убедитесь, что есть рабочая резервная копия, сделанная до начала обновления
- 5Только после этого переходите к принудительному завершению процесса
Как принудительно остановить реструктуризацию
Файловый вариант базы
В файловом варианте реструктуризацию выполняет процесс конфигуратора. Чтобы её остановить, завершите процесс 1cv8.exe через диспетчер задач Windows («Снять задачу»). После этого файл базы с высокой вероятностью окажется в рассогласованном состоянии: часть таблиц уже перестроена, часть — нет.
Не пытайтесь сразу открыть такую базу в рабочем режиме. Сначала восстановите файл 1Cv8.1CD из резервной копии, сделанной до обновления. Если копии нет, запустите утилиту chdbfl.exe из каталога установки платформы и выполните проверку физической целостности файла, затем — тестирование и исправление в конфигураторе. Шансы на успех без копии невысоки, и часть данных может быть потеряна.
Клиент-серверный вариант
В клиент-серверном варианте сначала завершите сеанс конфигуратора в консоли кластера серверов 1С. Затем проверьте, остались ли выполняющиеся запросы на стороне СУБД: если да, завершите соответствующие сессии средствами СУБД (KILL в MS SQL, pg_terminate_backend в PostgreSQL).
После принудительной остановки база данных останется в промежуточном состоянии: временные таблицы реструктуризации могут существовать рядом с основными, а транзакция будет откачена или зафиксирована частично в зависимости от момента прерывания. Практически всегда правильное решение — восстановить базу из бэкапа СУБД, сделанного до обновления, и повторить обновление с учётом выявленных проблем.
Восстановление базы после прерванной реструктуризации
Основной сценарий восстановления — возврат к резервной копии. Для файловой базы скопируйте сохранённый файл 1Cv8.1CD на место повреждённого. Для клиент-серверной — выполните RESTORE из бэкапа СУБД. После восстановления база вернётся к состоянию на момент копии: старая конфигурация, все данные до начала обновления.
Если резервной копии нет, порядок действий для файловой базы: проверка физической целостности через chdbfl.exe с включённым исправлением ошибок, затем «Тестирование и исправление» в конфигураторе с опциями реиндексации и проверки ссылочной целостности. Для клиент-серверной базы без бэкапа — проверка целостности средствами СУБД (DBCC CHECKDB для MS SQL) и анализ оставшихся временных таблиц, из которых иногда удаётся вручную вытащить данные.
Отдельно проверьте журнал регистрации и сравните ключевые итоги (обороты, остатки) с данными до обновления, если есть чем сверить. Прерванная реструктуризация может оставить не только технические повреждения, но и незаметные расхождения в данных.
Как проверить результат восстановления
База открывается без ошибок
Ошибки формата потока или чтения таблиц
Проверки завершаются без ошибок
Найдены битые ссылки или повреждённые таблицы
Совпадают с данными до обновления
Расхождения в итогах
Нет массовых ошибок после восстановления
Повторяющиеся ошибки доступа к таблицам
Как не допустить проблемы при повторном обновлении
После восстановления разберитесь, почему реструктуризация шла так долго или зависла. Типичные причины: нехватка места на диске под временные таблицы и журнал транзакций, медленный диск, активные пользовательские сеансы, слишком большой объём изменяемых таблиц, недостаток оперативной памяти у СУБД.
Практические меры: запускайте обновление в монопольном режиме в нерабочее время, заранее освободите дисковое пространство (запас должен сопоставляться с размером самых больших таблиц), для MS SQL переведите базу на время обновления в простую модель восстановления, чтобы журнал транзакций не разросся. На очень больших базах имеет смысл сначала выполнить свёртку или очистку устаревших данных.
Если обновление «скачкообразное» — через много релизов — разбейте его на этапы через промежуточные версии конфигурации. Это удлинит процесс в целом, но каждая отдельная реструктуризация будет короче и предсказуемее, а риск зависания снизится.
Полезная привычка: перед обновлением боевой базы прогоните то же обновление на копии и засеките время реструктуризации. Тогда на рабочей базе вы будете знать ориентировочную длительность и не примете нормальную работу за зависание.
Частые вопросы
Можно ли отменить реструктуризацию кнопкой или командой?
Нет, штатной отмены в платформе 1С не предусмотрено. Окно реструктуризации не содержит кнопки «Отмена». Единственный способ прервать процесс — принудительно завершить сеанс или процесс, что ведёт к повреждению базы и восстановлению из копии.
Сколько времени может идти реструктуризация, и это нормально?
На больших базах с объёмными регистрами — несколько часов, иногда всю ночь. Если есть активность CPU, диска или запросов в СУБД, длительная работа — норма. Ориентир лучше получить заранее, прогнав обновление на копии базы.
Что делать, если резервной копии перед обновлением не было?
Не паникуйте и не запускайте повторное обновление. Для файловой базы выполните проверку через chdbfl.exe и тестирование-исправление в конфигураторе. Для клиент-серверной — проверку целостности средствами СУБД. Часть данных может быть потеряна, поэтому после восстановления тщательно сверьте итоги.
Можно ли продолжить реструктуризацию с места обрыва?
Нет, платформа не умеет возобновлять прерванную реструктуризацию. После восстановления базы из копии обновление запускается заново, полностью. Именно поэтому важно устранить причину зависания до повторного запуска.
Почему конфигуратор показывает «Не отвечает» при живой реструктуризации?
Интерфейс конфигуратора может не перерисовываться, пока основной поток занят ожиданием ответа от базы. Это не признак зависания: оценивайте состояние по нагрузке на процессор, диск и активности в СУБД, а не по отзывчивости окна.
Безопасно ли завершать сеансы пользователей во время реструктуризации?
Да, и это рекомендуется. Пользовательские сеансы и фоновые задания могут блокировать таблицы и тормозить реструктуризацию. Завершение их через консоль кластера безопасно и часто позволяет «зависшему» обновлению продолжиться.
Что важно запомнить
Остановить реструктуризацию 1С штатно нельзя — только принудительно, с почти гарантированным повреждением базы. Сначала убедитесь, что процесс действительно завис, снимите блокировки и сеансы, проверьте резервную копию. После прерывания восстанавливайте базу из копии, устраняйте причину зависания и только потом запускайте обновление заново.