Повреждённые метаданные в базе 1С 8.3: пошаговое восстановление

· 10 мин

Содержание

Сообщение Нарушена целостность структуры конфигурации в 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. Закройте все окна 1С на этом компьютере.
  2. Откройте папки %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8.
  3. Удалите в них каталоги с длинными именами вида a1b2c3d4-... (идентификаторы баз). Остальные файлы в этих папках не трогайте.
  4. Запустите базу снова: кэш соберётся заново, первый запуск будет дольше обычного.

Вместо ручной чистки можно добавить к строке запуска базы параметр /ClearCache: Изменить → Далее → Дополнительные параметры запуска.

Способ 2. Тестирование и исправление информационной базы

Главный встроенный инструмент. Он проверяет и чинит в том числе служебные таблицы, где хранится конфигурация. Работает и для файловых, и для клиент-серверных баз.

  1. Убедитесь, что в базе никто не работает: для тестирования нужен монопольный доступ.
  2. В Конфигураторе выберите Администрирование → Тестирование и исправление.
  3. Отметьте флажки «Реиндексация таблиц информационной базы», «Проверка логической целостности информационной базы» и «Реструктуризация таблиц информационной базы».
  4. Переключатель режима поставьте в положение «Тестирование и исправление», а не «Только тестирование».
  5. Нажмите «Выполнить» и дождитесь окончания. На базе в десятки гигабайт это может занять несколько часов.

Если Конфигуратор не открывает базу через интерфейс, тот же механизм запускается из командной строки:

"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. Она проверяет внутреннюю структуру файла и умеет её исправлять без запуска Конфигуратора.

  1. Закройте все сеансы. Пока база открыта хотя бы у одного пользователя, утилита работать не будет.
  2. Перейдите в каталог платформы: C:\Program Files\1cv8\<номер версии>\bin\. Для 32-разрядной платформы — C:\Program Files (x86)\1cv8\....
  3. Запустите chdbfl.exe.
  4. В поле «Имя файла БД» укажите путь к 1Cv8.1CD.
  5. Поставьте флажок «Исправлять обнаруженные ошибки» и нажмите «Выполнить».
  6. Дождитесь окончания и прочитайте протокол в окне утилиты.

Запускайте chdbfl.exe из той же версии платформы, которой обычно открываете базу.

После chdbfl обязательно выполните «Тестирование и исправление» из Конфигуратора. Утилита чинит файл как контейнер, а логическую структуру таблиц и метаданных проверяет уже платформа.

Если база лежит в сетевой папке, скопируйте 1Cv8.1CD на локальный диск и проверяйте там. Обрыв сети во время исправления добавит новых повреждений.

Протокол chdbfl сохраните. Если ошибки повторяются через неделю-две, это повод проверить диск сервера, а не искать проблему в 1С.

Клиент-серверная база: что делать на сервере и в СУБД

В клиент-серверном варианте файла 1Cv8.1CD нет, и chdbfl здесь неприменима. Метаданные лежат в таблицах базы на MS SQL Server или PostgreSQL, а сервер 1С держит свой кэш.

Порядок действий:

  1. Проверьте базу средствами СУБД. В MS SQL Server — DBCC CHECKDB по базе 1С. В PostgreSQL ориентируйтесь на журнал сервера СУБД: ошибки чтения страниц там видны сразу. Если СУБД сообщает о физических повреждениях, сначала решайте их на уровне СУБД или восстанавливайте бэкап.
  2. Выполните «Тестирование и исправление». Запускайте Конфигуратор на любом клиентском компьютере, база при этом проверяется на сервере. Требование монопольного доступа то же самое: заранее завершите сеансы через консоль администрирования.
  3. Очистите сеансовые данные сервера 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 или работают удалённо, переходите на клиент-серверный вариант или публикацию через веб-сервер.
  • 🛡️ Исключения в антивирусе для каталогов баз, а в программах резервного копирования — копирование только при закрытой базе.
  • ⏱️ Обновление в нерабочее время, когда в базе никого нет.

Работа с хранилищем конфигурации

Хранилище защищает от потери доработок: в нём хранится история версий, и любую из них можно получить обратно. Если основная конфигурация повреждена, а база подключена к хранилищу, её можно восстановить из последней версии хранилища.

  1. Отключите базу от хранилища: Конфигурация → Хранилище конфигурации → Отключиться от хранилища.
  2. Восстановите структуру одним из способов выше.
  3. Подключитесь к хранилищу заново: Конфигурация → Хранилище конфигурации → Подключиться к хранилищу. Платформа предложит получить конфигурацию из хранилища.

Объекты, которые были захвачены и не помещены в хранилище, при переподключении теряются. Перед отключением сохраните основную конфигурацию в .cf, если это ещё возможно.

Само хранилище — тоже файл 1cv8ddb.1CD. Делайте его копию по расписанию так же, как копию рабочей базы.

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

Пропадут ли документы и проводки при восстановлении структуры конфигурации?
Очистка кэша, «Тестирование и исправление» и возврат к конфигурации БД данные не удаляют. Риск потери данных есть только при загрузке старой выгрузки .dt — теряется всё, что внесли после её даты.
Можно ли продолжать работать, если ошибка появляется изредка?
Нет. Редкая ошибка значит, что повреждение уже есть и растёт. Сделайте копию и выполните тестирование в ближайшее нерабочее окно.
Почему ошибка вернулась через несколько дней после исправления?
Причина осталась: сбоит диск, рвётся сеть до файловой базы или антивирус блокирует файл. Проверьте диск, журнал событий Windows и сетевое подключение.
Сколько длится тестирование и исправление?
Зависит от размера базы и диска. База в 2–5 ГБ на SSD обычно проверяется за 10–30 минут, база в 50 ГБ и больше — за несколько часов.
Нужно ли обращаться к программисту, если ничего не помогло?
Да, если ни один способ не сработал и свежей выгрузки нет. Специалист может извлечь данные из повреждённого файла вручную, но для этого ему понадобится нетронутая копия базы — та, что сделана до первых попыток восстановления.