Повреждённые метаданные в базе 1С 8.3: пошаговое восстановление
Содержание
Сообщение Нарушена целостность структуры конфигурации в 1С 8.3 означает, что платформа не может прочитать описание метаданных, хранящееся в самой информационной базе. Чаще всего помогает такой порядок: резервная копия → очистка кэша → «Тестирование и исправление» в Конфигураторе → для файловой базы утилита chdbfl.exe → возврат к конфигурации БД или загрузка .cf/.dt.
Данные (документы, справочники, регистры) при этом обычно целы: ломается служебная часть, где лежит структура объектов. Поэтому почти всегда базу удаётся поднять без потери учёта, если не начинать с радикальных шагов.
Что сделать до любых попыток восстановления
Каждый следующий способ из этой статьи что-то переписывает в базе. Если он сработает неудачно, без копии откатиться будет некуда.
Сначала снимите копию базы в её текущем, даже повреждённом, состоянии.
- 📁 Файловая база. Закройте все сеансы и скопируйте каталог базы целиком. Главное в нём — файл
1Cv8.1CD. Выгрузка в.dtпри повреждённой структуре может не пройти, поэтому копия файла надёжнее. - 🖥️ Клиент-серверная база
. Сделайте полный бэкап средствами СУБД: в MS SQL Server —
BACKUP DATABASE, в PostgreSQL —pg_dump. Через Конфигуратор копию на этом этапе не делайте: он может не открыть базу . - 📝 Зафиксируйте текст ошибки. Скопируйте полное сообщение и момент, когда оно появляется: при запуске Конфигуратора, при входе в режим «Предприятие», при открытии конкретного объекта или при обновлении. От этого зависит, какой способ ставить первым.
- 🔢 Запишите версию платформы. Она видна в окне «О программе». Базу после сбоя открывайте той же версией, что работала до него.
Работайте с копией на отдельном компьютере или в отдельном каталоге, а рабочую базу пока не трогайте. Получилось на копии — повторите на оригинале или просто подмените им рабочую базу.
Почему нарушается целостность структуры конфигурации
Описание метаданных хранится в служебных таблицах базы. Основная конфигурация (та, что редактирует разработчик) и конфигурация базы данных (та, по которой работают пользователи) лежат отдельно. Ошибка появляется, когда одна из них записана не до конца или прочитана с искажениями.
Типичные причины:
- ⚡ Прерванное обновление. Выключили свет, закрыли Конфигуратор через диспетчер задач, оборвалась сеть во время команды
Обновить конфигурацию базы данныхили загрузки.cf. - 🌐 Файловая база в сетевой папке. Обрыв SMB-соединения посреди записи — классический способ испортить
1Cv8.1CD. Особенно часто это случается по Wi-Fi или VPN. - 💽 Сбой диска или файловой системы. Битые сектора, переполненный диск, аварийное завершение работы Windows.
- 🛡️ Антивирус и программы резервного копирования. Они блокируют или копируют файл базы, пока платформа в него пишет.
- 🗂️ Повреждённый кэш конфигурации на клиенте. Ошибка есть только на одном компьютере, а на соседних база открывается нормально.
- 📦 Битый файл
.cfили.cfu. Его скачали не полностью или загрузили с ошибками. - 🔗 Сбой при работе с хранилищем конфигурации. Захват или помещение объектов прервались на середине.
Как понять, где именно сломалось
Первая задача — определить, что повреждено: основная конфигурация, конфигурация БД, физический файл базы или только кэш на компьютере. По ответу на этот вопрос выбирается способ восстановления.
Проверка по симптомам
| Симптом | Вероятная зона поломки |
|---|---|
| Ошибка только на одном рабочем месте | Кэш конфигурации в профиле пользователя |
| Конфигуратор открывается, но падает на «Открыть конфигурацию» | Основная конфигурация |
| Пользователи не могут войти в режим «Предприятие», а Конфигуратор открывает дерево | Конфигурация базы данных |
| Ошибка появилась сразу после обрыва при обновлении | Конфигурация БД или незавершённая реструктуризация |
| Вместе с ошибкой структуры падают и другие операции с файлом базы | Физическое повреждение 1Cv8.1CD |
Проверка средствами Конфигуратора
Если Конфигуратор запускается, выполните Конфигурация → Открыть конфигурацию, а затем Конфигурация → Проверка конфигурации. Включите флажок «Проверка логической целостности конфигурации». Отчёт покажет объекты с ошибками, и станет понятно, затронута ли структура целиком или отдельные объекты.
Затем сравните основную конфигурацию с конфигурацией БД: Конфигурация → Сравнить конфигурации. Если сравнение падает на одной из сторон, поломка именно там.
Полезно заглянуть и в журнал регистрации: Администрирование → Журнал регистрации в Конфигураторе. По событиям в момент сбоя видно, кто и какую операцию выполнял, когда структура сломалась.
Восстановление структуры конфигурации в Конфигураторе
Способы идут от безопасного к радикальному. После каждого проверяйте, ушла ли ошибка, и только потом переходите к следующему.
Способ 1. Очистить кэш конфигурации
Самый безопасный шаг: в базе ничего не меняется. Платформа хранит копию метаданных в профиле пользователя Windows, и если эта копия испорчена, ошибка воспроизводится только на одном компьютере.
- Закройте все окна 1С на этом компьютере.
- Откройте папки
%APPDATA%\1C\1cv8и%LOCALAPPDATA%\1C\1cv8. - Удалите в них каталоги с длинными именами вида
a1b2c3d4-...(идентификаторы баз). Остальные файлы в этих папках не трогайте. - Запустите базу снова: кэш соберётся заново, первый запуск будет дольше обычного.
Вместо ручной чистки можно добавить к строке запуска базы параметр /ClearCache: Изменить → Далее → Дополнительные параметры запуска.
Способ 2. Тестирование и исправление информационной базы
Главный встроенный инструмент. Он проверяет и чинит в том числе служебные таблицы, где хранится конфигурация. Работает и для файловых, и для клиент-серверных баз.
- Убедитесь, что в базе никто не работает: для тестирования нужен монопольный доступ.
- В Конфигураторе выберите
Администрирование → Тестирование и исправление. - Отметьте флажки «Реиндексация таблиц информационной базы», «Проверка логической целостности информационной базы» и «Реструктуризация таблиц информационной базы».
- Переключатель режима поставьте в положение «Тестирование и исправление», а не «Только тестирование».
- Нажмите «Выполнить» и дождитесь окончания. На базе в десятки гигабайт это может занять несколько часов.
Если Конфигуратор не открывает базу через интерфейс, тот же механизм запускается из командной строки:
"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /IBCheckAndRepair -ReIndex -LogIntegrity -Rebuild /Out"D:\Logs\check.txt"
Номер версии в пути замените на свой. Результат проверки окажется в файле, указанном в /Out.
Флажки «Сжатие таблиц» и «Пересчёт итогов» для этой ошибки не нужны. Они лишь удлиняют проверку. Включайте их отдельно, когда база уже открывается.
Способ 3. Вернуться к конфигурации БД
Подходит, когда сломана основная конфигурация, а пользователи в режиме «Предприятие» работают. Команда Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД заменяет основную конфигурацию рабочей копией.
Учтите: все несохранённые в конфигурацию БД изменения разработчика пропадут. Если в основной конфигурации шла доработка, сначала попробуйте сохранить её в файл через Конфигурация → Сохранить конфигурацию в файл.
Обратная ситуация — сломана конфигурация БД, а основная цела. Тогда помогает повторное обновление: Конфигурация → Обновить конфигурацию базы данных.
Способ 4. Загрузка конфигурации или выгрузки целиком
Крайние меры, когда предыдущие шаги не дали результата.
- Загрузить
.cfтого же релиза.Конфигурация → Загрузить конфигурацию из файла, затем обновить конфигурацию БД. Для типовой конфигурации файл берут из каталога шаблонов. Доработки, которых нет в загружаемом файле, будут потеряны — сравните конфигурации до загрузки. - Перенести базу через
.dt. Создайте новую пустую базу и загрузите в неё выгрузку:Администрирование → Загрузить информационную базу. Используйте последнюю исправную выгрузку или попробуйте выгрузить повреждённую базу после тестирования.
| Способ | Когда применять | Риски |
|---|---|---|
| Очистка кэша | Ошибка на одном компьютере | Нет |
| Тестирование и исправление | Ошибка у всех, база частично открывается | Долго на больших базах, нужен монопольный режим |
| Вернуться к конфигурации БД | Сломана основная конфигурация | Потеря несохранённых доработок |
Загрузка .cf | Обе конфигурации повреждены, данные целы | Потеря доработок, если файл не совпадает с базой |
Загрузка .dt в новую базу | Ничего не помогло | Потеря данных после даты выгрузки |
Файловая база: проверка 1Cv8.1CD утилитой chdbfl
Если файловая база не открывается вообще, повреждён может быть сам файл 1Cv8.1CD на физическом уровне. Для этого случая в составе платформы есть утилита chdbfl.exe. Она проверяет внутреннюю структуру файла и умеет её исправлять без запуска Конфигуратора.
- Закройте все сеансы. Пока база открыта хотя бы у одного пользователя, утилита работать не будет.
- Перейдите в каталог платформы:
C:\Program Files\1cv8\<номер версии>\bin\. Для 32-разрядной платформы —C:\Program Files (x86)\1cv8\.... - Запустите
chdbfl.exe. - В поле «Имя файла БД» укажите путь к
1Cv8.1CD. - Поставьте флажок «Исправлять обнаруженные ошибки» и нажмите «Выполнить».
- Дождитесь окончания и прочитайте протокол в окне утилиты.
Запускайте chdbfl.exe из той же версии платформы, которой обычно открываете базу.
После chdbfl обязательно выполните «Тестирование и исправление» из Конфигуратора. Утилита чинит файл как контейнер, а логическую структуру таблиц и метаданных проверяет уже платформа.
Если база лежит в сетевой папке, скопируйте 1Cv8.1CD на локальный диск и проверяйте там. Обрыв сети во время исправления добавит новых повреждений.
Протокол chdbfl сохраните. Если ошибки повторяются через неделю-две, это повод проверить диск сервера, а не искать проблему в 1С.
Клиент-серверная база: что делать на сервере и в СУБД
В клиент-серверном варианте файла 1Cv8.1CD нет, и chdbfl здесь неприменима. Метаданные лежат в таблицах базы на MS SQL Server или PostgreSQL, а сервер 1С держит свой кэш.
Порядок действий:
- Проверьте базу средствами СУБД. В MS SQL Server —
DBCC CHECKDBпо базе 1С. В PostgreSQL ориентируйтесь на журнал сервера СУБД: ошибки чтения страниц там видны сразу. Если СУБД сообщает о физических повреждениях, сначала решайте их на уровне СУБД или восстанавливайте бэкап. - Выполните «Тестирование и исправление». Запускайте Конфигуратор на любом клиентском компьютере, база при этом проверяется на сервере. Требование монопольного доступа то же самое: заранее завершите сеансы через консоль администрирования.
- Очистите сеансовые данные сервера 1С, если ошибка остаётся у всех пользователей, хотя проверка прошла чисто. Для этого останавливают службу «Агент сервера 1С:Предприятия 8.3» и удаляют каталоги
snccntx*в папке кластераsrvinfo\reg_1541. Файлы реестра кластера в той же папке не трогайте.
-- MS SQL Server: проверка базы 1С без исправления
DBCC CHECKDB ('Buh_Base') WITH NO_INFOMSGS, ALL_ERRORMSGS;
Остановка службы агента сервера обрывает сеансы всех пользователей во всех базах этого кластера. Делайте это вне рабочего времени и предупредите людей заранее.
Параметр REPAIR_ALLOW_DATA_LOSS в DBCC CHECKDB применяйте только к копии и только когда другого выхода нет: название честное, данные действительно могут пропасть.
Как не допустить повторения и что учесть при работе с хранилищем
Нарушение целостности структуры конфигурации почти всегда — следствие прерванной записи. Профилактика сводится к тому, чтобы запись не прерывалась, а при сбое была свежая копия.
- 🔋 ИБП на сервере и на компьютере администратора. Обновление конфигурации БД нельзя прерывать, а длится оно иногда больше часа.
- 💾 Выгрузка
.dtперед каждым обновлением. Плюс регулярные бэкапы СУБД для клиент-серверных баз. - 🌐 Никаких файловых баз по Wi-Fi и VPN. Если пользователей больше 3–5 или работают удалённо, переходите на клиент-серверный вариант или публикацию через веб-сервер.
- 🛡️ Исключения в антивирусе для каталогов баз, а в программах резервного копирования — копирование только при закрытой базе.
- ⏱️ Обновление в нерабочее время, когда в базе никого нет.
Работа с хранилищем конфигурации
Хранилище защищает от потери доработок: в нём хранится история версий, и любую из них можно получить обратно. Если основная конфигурация повреждена, а база подключена к хранилищу, её можно восстановить из последней версии хранилища.
- Отключите базу от хранилища:
Конфигурация → Хранилище конфигурации → Отключиться от хранилища. - Восстановите структуру одним из способов выше.
- Подключитесь к хранилищу заново:
Конфигурация → Хранилище конфигурации → Подключиться к хранилищу. Платформа предложит получить конфигурацию из хранилища.
Объекты, которые были захвачены и не помещены в хранилище, при переподключении теряются. Перед отключением сохраните основную конфигурацию в .cf, если это ещё возможно.
Само хранилище — тоже файл 1cv8ddb.1CD. Делайте его копию по расписанию так же, как копию рабочей базы.
Частые вопросы
Пропадут ли документы и проводки при восстановлении структуры конфигурации?
.dt — теряется всё, что внесли после её даты.