Оборвалось обновление 1С: что случится с данными и как вернуть базу
Содержание
Данные после сбоя обновления чаще всего целы, если у вас клиент-серверная база
: СУБД откатывает незавершённую транзакцию. В файловой базе риск выше. Файл 1Cv8.1CD при аварийном обрыве может остаться в неконсистентном состоянии, и тогда спасает только резервная копия.
Исход зависит от того, на каком этапе оборвалось обновление, где лежит база и что именно упало: сервер, сеть, питание, сам процесс 1С. Ниже разобрано, что происходит под капотом, как понять, в каком состоянии база, и что делать по шагам.
Если сбой случился только что, ничего не перезапускайте и не открывайте базу «посмотреть, что получилось». Сначала сделайте копию того, что есть. Любой повторный вход может усугубить повреждение.
Из каких этапов состоит обновление и где можно потерять данные
Обновление не одна операция, а цепочка. Сбой на разных звеньях даёт разные последствия.
- Загрузка новой конфигурации. Конфигуратор объединяет файл релиза с конфигурацией поставщика. Пользовательские данные на этом этапе не трогаются, меняется только описание объектов.
- Обновление конфигурации базы данных. Здесь платформа сверяет структуру таблиц с новой конфигурацией и выполняет реструктуризацию: добавляет поля, меняет типы, перестраивает индексы. Это самый опасный этап.
- Обработчики обновления. При первом входе в обновлённую базу выполняются процедуры, которые переносят данные в новые структуры, заполняют новые реквизиты, пересчитывают итоги.
- Отложенные обработчики. Часть работы уходит в фон и может идти несколько дней после обновления.
Для сравнения рисков:
| Этап | Что меняется | Риск для данных |
|---|---|---|
| Загрузка конфигурации | Описание объектов | Низкий: данные не затронуты |
| Реструктуризация таблиц | Структура таблиц, индексы | Высокий, особенно в файловой базе |
| Основные обработчики | Содержимое таблиц | Средний: возможны частично преобразованные данные |
| Отложенные обработчики | Фоновая доработка | Низкий: можно продолжить позже |
Почему реструктуризация опаснее всего
Платформа перестраивает таблицы, нередко с копированием данных во временную структуру. Пока копирование идёт, половина записей уже в новом формате, половина в старом. Обрыв именно в этот момент оставляет базу в промежуточном состоянии.
На крупных базах этап занимает десятки минут, а иногда часы. Чем он дольше, тем больше окно, в которое может попасть сбой.
Что бывает при аварийном завершении: типичные сценарии
Сбой сбою рознь. Вот что встречается на практике.
- ⚡ Отключили питание. Файловая база может получить битые страницы. SQL-сервер при старте прогонит журнал и откатит незавершённое.
- 🖥️ Зависла или упала служба сервера 1С. Сеансы обновления сброшены, блокировка на базе может остаться висеть.
- 🌐 Пропала сеть у пользователя, который обновлял по сети. Конфигуратор потерял связь, но сервер мог продолжить операцию или откатить её.
- 🔒 Закончилось место на диске. Частая причина: реструктуризация требует свободного места под временные копии таблиц.
- ❌ Убили процесс вручную из диспетчера задач, потому что «долго висит». Для файловой базы это худший вариант.
- 🧱 Ошибка в обработчике обновления. Платформа не падает, но выдаёт сообщение и останавливается на полпути.
Последний случай отдельный: данные физически целы, но часть из них уже преобразована, а часть нет. Работать в такой базе нельзя, пока обработчик не доработает.
Что остаётся после сбоя
Возможны четыре состояния:
- База не изменилась. Откат прошёл полностью, старая версия работает.
- База осталась в промежуточном состоянии. Конфигурация уже новая, а структура таблиц ещё старая или смешанная.
- База повреждена на уровне файла или таблиц.
- База в порядке, но висят блокировки или монопольный режим.
Определить, какое из состояний ваше, помогает диагностика ниже. Сначала о различиях между типами баз.
Файловая и клиент-серверная база: как различаются последствия
От способа хранения зависит почти всё: надёжность отката, способы восстановления, скорость.
Файловая база
Все данные лежат в одном файле 1Cv8.1CD. Транзакционности на уровне СУБД нет: платформа сама пишет в файл. Если процесс оборвали посреди записи, файл теряет целостность.
Последствия бывают такие:
- при запуске появляется сообщение о повреждении структуры, ошибки чтения таблиц;
- база открывается, но часть документов не проводится или не открывается;
- база не открывается вовсе.
Для файловых баз резервная копия перед обновлением не рекомендация, а единственная гарантия. Скопируйте каталог базы целиком, пока никто не работает .
Клиент-серверная база (PostgreSQL, MS SQL)
Операции идут через СУБД, и незавершённая транзакция откатывается автоматически. Реструктуризация выполняется транзакциями, поэтому вероятность получить «полупреобразованные» таблицы заметно ниже.
Но у сервера свои риски:
- переполнился журнал транзакций, и операция остановилась;
- заняты ресурсы: блокировки таблиц удерживает зависший сеанс;
- при выключенном или неправильно настроенном резервировании откатиться нечем, если проблема проявилась позже.
| Параметр | Файловая | Клиент-серверная |
|---|---|---|
| Откат незавершённой операции | Нет, зависит от платформы | Да, средствами СУБД |
| Шанс повреждения при аварии | Заметный | Ниже |
| Основной способ восстановления | Копия каталога, chdbfl | Бэкап СУБД, выгрузка .dt |
| Что часто висит после сбоя | Файл блокировки | Сеансы и блокировки на сервере |
Как понять, в каком состоянии база после инцидента
Не гадайте и не запускайте рабочие операции. Проверяйте по порядку, от безопасного к рискованному.
Шаг 1. Сохраните то, что есть
Остановите сервер 1С или закройте все сеансы. Скопируйте каталог файловой базы или сделайте бэкап базы на SQL-сервере. Даже повреждённая копия пригодится: по ней можно искать причину и пробовать восстановление, не рискуя оригиналом.
Шаг 2. Выясните, что показывает журнал
Проверьте журнал регистрации в режиме Конфигуратор: меню администрирования, журнал регистрации. Смотрите события за время обновления: ошибки реструктуризации, сообщения обработчиков, обрывы сеансов. Если вход в Конфигуратор невозможен, смотрите технологический журнал сервера и журналы СУБД.
Шаг 3. Посмотрите на сообщение при запуске
Текст ошибки подскажет этап:
- сообщение о том, что конфигурация базы данных не соответствует основной конфигурации, значит, обновление структуры не завершено;
- сообщение о монопольном доступе или блокировке, значит, остался висеть сеанс или блокировка;
- ошибки чтения таблиц или файла, значит, повреждение данных.
Шаг 4. Проверьте целостность
Для файловой базы есть утилита chdbfl, она лежит в каталоге платформы. Запускайте её только на копии базы. Режим исправления вносит изменения, и повторить его нельзя.
В Конфигураторе есть штатное средство: пункт «Администрирование», затем «Тестирование и исправление». Для проверки без изменений выберите режим «Тестирование без исправления». Если он ничего не нашёл, а база всё равно не работает, проблема скорее в конфигурации или блокировках.
На SQL-сервере целостность проверяйте и средствами самой СУБД. У MS SQL для этого есть DBCC CHECKDB, у PostgreSQL помогает pg_dump как проверка чтения всех таблиц: если выгрузка прошла, таблицы читаются.
1Cv8.1CD. Проверьте копию утилитой chdbfl, а при неудаче восстановите базу из резервной копии.Порядок восстановления: что делать и в какой последовательности
Идите от самого щадящего способа к самому радикальному. Каждый следующий шаг оправдан, только если предыдущий не помог.
Способ 1. Завершить обновление
Подходит, если данные целы и обновление просто не дошло до конца. Откройте Конфигуратор в монопольном режиме и выполните обновление конфигурации базы данных. Платформа продолжит реструктуризацию с того места, где остановилась, или переделает её.
Условие одно: свободное место на диске. Для крупной базы закладывайте запас, сопоставимый с её размером.
Способ 2. Снять зависшие блокировки
Если база цела, но не пускает:
- Завершите все сеансы пользователей в консоли серверов 1С или через список активных пользователей.
- На сервере проверьте, не остались ли процессы
1cv8илиrphost, и корректно завершите их. - Для файловой базы убедитесь, что рядом с файлом базы нет залипшего файла блокировки от завершённого сеанса, и только потом удаляйте его.
Способ 3. Исправить структуру штатными средствами
Запустите «Тестирование и исправление» на копии базы. Включайте только нужные режимы: реструктуризация таблиц, проверка логической целостности. Затем снова обновите конфигурацию базы.
Способ 4. Восстановить из резервной копии
Самый надёжный вариант. Берите последнюю копию до обновления: ту, которую сделали перед началом. Если автоматической нет, ищите бэкап СУБД или выгрузку .dt.
Что вы теряете: все изменения, внесённые между копией и сбоем. Если обновление шло ночью или в нерабочее время, потерь обычно нет.
Не восстанавливайте поверх рабочей базы без копии текущего состояния. Разверните восстановленную базу рядом, проверьте её, и только потом переключайте пользователей.
Способ 5. Выгрузить и загрузить данные
Если конфигурация обновилась, а база открывается, но вызывает сомнения, сделайте выгрузку информационной базы в .dt и загрузите её в чистую, заново созданную базу. Загрузка пересобирает таблицы, и часть скрытых проблем с индексами уходит.
Выгрузка работает только если база читается целиком. Из сильно повреждённой её сделать не получится.
Способ 6. Специалисты по восстановлению
Если копий нет, а файл повреждён, остаётся ручное восстановление: вытаскивание данных из страниц файла или с диска, где лежала база. Это платные услуги, результат не гарантирован. Дороже всего обходится ситуация, когда копия нужна, а её нет.
Что проверить в базе после восстановления
Даже если база открылась, не возвращайте её сразу в работу. Пройдите короткий чек-лист.
Что сверить с цифрами до обновления
Перед обновлением сохраните эталонные отчёты: оборотно-сальдовую ведомость за последний период, остатки по складам, сводку по взаиморасчётам. После сбоя сформируйте те же отчёты и сравните. Расхождение в одном-двух документах говорит о неполностью перенесённых данных, и тогда лучше вернуться к копии.
Как не попасть в эту историю: правила безопасного обновления
Большинство тяжёлых последствий случается там, где копию не делали. Минимальный набор правил:
- Копия перед каждым обновлением. Для файловой базы это копия каталога, для SQL бэкап базы. Проверьте, что копия открывается.
- Свободное место. Свободно должно быть не меньше размера базы, лучше полтора-два.
- Закрытые сеансы. Все пользователи вышли, регламентные задания остановлены, сервер не перезагружается по расписанию в это время.
- Источник бесперебойного питания на сервере с файловой базой, особенно в небольших офисах.
- Тест на копии. Крупное обновление сначала прогоните на копии базы и оцените время.
- Рабочее окно. Выбирайте момент, когда у вас есть запас времени на откат: не конец отчётного периода.
- Не прерывайте процесс. Если обновление «висит» час, это ещё не повод убивать его. Смотрите нагрузку на диск и процессор: если они есть, платформа работает.
Для баз на сервере включите регулярные резервные копии и храните их отдельно от самого сервера. Копия на том же диске, где лежит база, при отказе диска пропадёт вместе с ней.
Решить, как действовать в вашем случае, поможет короткое дерево.
chdbfl и тестирование и исправление. Если не помогло, обращайтесь к специалистам по восстановлению.