Сбой служебной таблицы FILES: возвращаем базу 1С 8.3 в рабочее состояние

· 10 мин

Содержание

Если 1С пишет, что повреждены данные таблицы FILES, первым делом закройте базу у всех пользователей и скопируйте её каталог целиком. Затем запустите утилиту chdbfl.exe из папки bin платформы с галочкой исправления ошибок. Для файловой базы этого часто хватает, чтобы программа снова открылась. Если не помогло — тестирование и исправление в Конфигураторе, выгрузка в .dt и загрузка в чистую базу, а в крайнем случае восстановление из резервной копии.

Сама таблица FILES — служебная. В ней нет ваших документов и проводок, поэтому сбой в ней обычно не означает потерю учёта. Но платформа читает эту таблицу при каждом запуске, и пока она повреждена, база может не открываться вообще.

Что лежит в таблице FILES и почему она ломается

Файловая база 1С 8.3 хранится в одном файле 1Cv8.1CD. Внутри него — набор таблиц. Часть из них содержит данные учёта (справочники, документы, регистры), часть — служебная информация самой платформы.

Служебные таблицы, которые встречаются в каждой базе:

  • 🗂 CONFIG — основная конфигурация базы;
  • 🗂 CONFIGSAVE — конфигурация, которую редактируют в Конфигураторе, но ещё не применили;
  • 🗂 PARAMS — параметры информационной базы;
  • 🗂 FILES — служебные файлы платформы, которые она хранит прямо в базе;
  • 🗂 DBSCHEMA — описание структуры таблиц.

В клиент-серверном варианте те же таблицы лежат в базе СУБД. В MS SQL это dbo.Files, в PostgreSQL — files в нижнем регистре. Поэтому одна и та же ошибка встречается и в файловых, и в серверных базах, но лечится по-разному.

Типичные причины повреждения

  • ⚡ Внезапное отключение питания компьютера или сервера, на котором лежит база.
  • 🔌 Обрыв сети, когда файловая база открыта с общей папки по SMB.
  • 🛑 Принудительное закрытие 1С через диспетчер задач во время записи.
  • 🦠 Антивирус, который сканирует или блокирует 1Cv8.1CD в момент работы.
  • 💽 Сбойные сектора диска, переполненный диск, проблемы RAID-контроллера.
  • 📁 Копирование открытой базы «на ходу» программой резервного копирования.
  • 🔄 Прерванное обновление конфигурации или реструктуризация.

Для серверной базы добавьте сбои самой СУБД: аварийную остановку службы, ошибки ввода-вывода, повреждённые страницы данных.

Признаки и диагностика: убедитесь, что сломана именно FILES

Текст ошибки бывает разным в зависимости от того, когда платформа наткнулась на повреждение. Чаще всего это одно из сообщений:

  • Повреждены данные таблицы FILES или похожее с именем таблицы;
  • Файл базы данных поврежден;
  • Ошибка формата потока при запуске или открытии формы;
  • для MS SQL — Ошибка СУБД с упоминанием Files и сообщением о несогласованности страниц.

Перед лечением соберите факты. Это займёт 5–10 минут и подскажет, какой способ выбрать.

  1. Запишите точный текст ошибки. Сделайте снимок экрана, нажав на ссылку «Подробно» в окне сообщения, если она есть.
  2. Проверьте, в каком режиме ошибка: в «Предприятии», в Конфигураторе или в обоих. Если Конфигуратор открывается, выбор способов шире.
  3. Посмотрите размер 1Cv8.1CD и свободное место на диске. Ноль байт свободного места — частая причина сбоя записи.
  4. Проверьте журнал Windows: Просмотр событий → Журналы Windows → Система. Ошибки диска (disk, Ntfs) указывают на железо.
  5. Попробуйте открыть копию базы на другом компьютере. Если там всё работает, дело не в базе, а в кэше или в клиенте.

Ошибка формата потока часто возникает не из-за базы, а из-за испорченного кэша клиента. Запустите 1С с параметром /ClearCache или удалите папки кэша в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8. Если после этого база открылась, лечить таблицу не нужно.

Диагностика: выберите симптом

Подготовка: что сделать до любого восстановления таблицы files

Любой способ ниже меняет файл базы. Если что-то пойдёт не так, нужна точка возврата.

Скопируйте каталог базы целиком до запуска любых утилит. Без копии исправление может сделать хуже.

Порядок подготовки:

  1. Попросите всех пользователей выйти из базы. Сеансы, которые остались открытыми, оборвутся при исправлении, а несохранённые документы пропадут.
  2. Убедитесь, что 1С закрыта на всех компьютерах. Для файловой базы проверьте, что рядом с 1Cv8.1CD нет активной блокировки: файл 1Cv8.1CL не должен удерживаться процессом.
  3. Скопируйте всю папку базы на другой диск или в другую папку. Копируйте папку, а не только 1Cv8.1CD.
  4. Проверьте свободное место: для исправления и последующей выгрузки нужно не меньше двух размеров базы.
  5. Если база лежит в сетевой папке, перенесите копию на локальный диск и работайте с ней там. Восстанавливать базу по сети — лишний риск.

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

Способы восстановить базу с повреждённой таблицей files: от простого к сложному

Идите по порядку. Переходите к следующему способу, только если предыдущий не помог.

СпособКогда подходитРиски
Очистка кэша клиентаОшибка на одном ПК, база открывается на другомНет
chdbfl.exeФайловая база не открываетсяВозможна потеря повреждённых записей
Тестирование и исправлениеКонфигуратор открываетсяУдаление битых объектов, долгое выполнение
Выгрузка и загрузка .dtПосле исправления остаются сбоиНужна монопольная работа и время
Восстановление из резервной копииНичего не помоглоПотеря данных после даты копии

Способ 1. Утилита chdbfl.exe для файловой базы

chdbfl.exe — штатная утилита проверки физической целостности файла базы. Она лежит в каталоге платформы, например C:\Program Files\1cv8\<версия платформы>\bin\chdbfl.exe. Вместо <версия платформы> — номер вашей платформы, например папка вида 8.3.24.xxxx.

  1. Закройте базу у всех пользователей.
  2. Запустите chdbfl.exe от имени администратора.
  3. В поле имени файла укажите путь к 1Cv8.1CD.
  4. Поставьте галочку «Исправлять обнаруженные ошибки».
  5. Нажмите «Выполнить» и дождитесь окончания. На базе в несколько гигабайт это может занять от 10 минут до часа.
  6. Прочитайте отчёт в окне утилиты. Если там перечислены исправленные ошибки в таблице FILES, попробуйте открыть базу .

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

Если утилита завершилась с ошибкой или зависла на одной таблице, вернитесь к копии и переходите к выгрузке через Конфигуратор, если он запускается.

Способ 2. Тестирование и исправление в Конфигураторе

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

  1. Откройте базу в режиме «Конфигуратор».
  2. Выберите Администрирование → Тестирование и исправление.
  3. Отметьте проверки:
    • «Реиндексация таблиц информационной базы»;
    • «Проверка логической целостности информационной базы»;
    • «Проверка ссылочной целостности информационной базы»;
    • «Пересчёт итогов»;
    • «Сжатие таблиц информационной базы» — для файловой базы.
  4. Выберите режим «Тестирование и исправление».
  5. Для битых ссылок выберите «Создавать объекты» — так вы сохраните связи и потом разберёте их вручную.
  6. Нажмите «Выполнить».

Если Конфигуратор не открывается, этот способ недоступен. Тогда сначала chdbfl.exe для файловой базы или проверка средствами СУБД для серверной.

Способ 3. Выгрузка в .dt и загрузка в новую базу

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

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

Если выгрузка прерывается ошибкой о той же таблице, вернитесь к способу 1 или 2, а затем повторите выгрузку.

Способ 4. Серверная база: проверка средствами СУБД

В клиент-серверном варианте chdbfl.exe не применяется. Повреждение таблицы Files в MS SQL — это повреждение страниц базы данных, и проверять его нужно средствами SQL Server.

-- Проверка одной таблицы
DBCC CHECKTABLE ('dbo.Files') WITH NO_INFOMSGS;

-- Полная проверка базы
DBCC CHECKDB ('ИмяБазы') WITH NO_INFOMSGS, ALL_ERRORMSGS;

DBCC CHECKDB сам по себе ничего не исправляет. Он показывает, какие страницы повреждены, и какой минимальный уровень восстановления рекомендует SQL Server.

Режим REPAIR_ALLOW_DATA_LOSS удаляет повреждённые страницы вместе с данными. Его запускают только после полной резервной копии, в однопользовательском режиме базы, когда остановлены все сеансы 1С. Перед этим сообщите пользователям: работа с базой будет прервана.

Для серверной базы предпочтительнее восстановление из резервной копии SQL с журналами транзакций, если модель восстановления позволяет. Это быстрее и безопаснее, чем ремонт с потерей данных.

В PostgreSQL штатного аналога DBCC CHECKDB нет. Признак повреждения — ошибки при pg_dump или при чтении таблицы files. Тут основной путь — восстановление из резервной копии и последующее тестирование и исправление в Конфигураторе.

Способ 5. Восстановление из резервной копии

Если ни один способ не помог, возьмите последнюю исправную копию. Для файловой базы это копия каталога или файл .dt, для серверной — бэкап СУБД.

После восстановления выясните, какие документы были введены после даты копии. Их придётся внести заново по первичке или загрузить из обменов, если база обменивается с другими программами.

Частые промахи при восстановлении

Ошибки, которые превращают поправимый сбой в потерю данных:

  • 🚫 Запуск исправления без копии. Утилита может удалить повреждённые записи, и вернуть их будет неоткуда.
  • 🚫 Исправление прямо на сетевой папке. Обрыв связи во время записи повредит файл ещё сильнее.
  • 🚫 Повторные запуски на сбойном диске. Если диск сыплет ошибками, каждая попытка ухудшает картину. Сначала смените носитель.
  • 🚫 Замена базы без проверки. После загрузки .dt проверьте остатки и обороты до того, как пускать пользователей.
  • 🚫 Удаление 1Cv8.1CD «чтобы пересоздать». В этом файле все данные учёта: удалив его, вы удалите базу целиком.
  • 🚫 Ремонт серверной базы при работающих сеансах. Сначала заблокируйте начало сеансов и завершите текущие.

Профилактика: как не допустить повреждения таблиц базы 1С

Таблица FILES повреждается по тем же причинам, что и любые другие. Защищаете файл базы — защищаете и её.

Для файловой базы

  1. Поставьте источник бесперебойного питания на компьютер или сервер, где лежит база. Настройте корректное завершение работы при разряде батареи.
  2. Не держите базу на нестабильной сети или Wi-Fi. Если с базой работают 5–7 человек и больше, задумайтесь о переходе на клиент-серверный вариант.
  3. Добавьте каталог базы в исключения антивируса. Сканирование 1Cv8.1CD во время работы — частый источник блокировок и сбоев.
  4. Делайте резервные копии при закрытой базе: ночью, по расписанию. Копирование открытого файла даёт копию, которая может не открыться.
  5. Раз в месяц запускайте chdbfl.exe в режиме проверки на копии базы.
  6. Следите за свободным местом на диске: держите запас не меньше двух размеров базы.

Для серверной базы

  • Настройте регулярные полные бэкапы и журналы транзакций в СУБД.
  • Включите регламентную проверку целостности (DBCC CHECKDB по расписанию в MS SQL).
  • Следите за состоянием дисков и RAID-массива: предупреждения контроллера нельзя игнорировать.
  • Не завершайте рабочие процессы 1С принудительно без необходимости.
Профилактика повреждения базы 1С
Выполнено: 0 / 6

Когда восстановление таблицы files лучше доверить специалисту

Самостоятельные действия разумны, пока есть копия и понятен следующий шаг. Обращайтесь к администратору 1С или к сервисной организации, если:

  • 🔧 chdbfl.exe и тестирование не помогли, а свежей резервной копии нет;
  • 🔧 диск физически неисправен и данные нужно снимать с него;
  • 🔧 серверная база показывает множественные ошибки DBCC CHECKDB, а вы не работали с SQL;
  • 🔧 база содержит доработки, и после загрузки .dt перестали работать обработки или обмены;
  • 🔧 на кону данные за несколько месяцев, и любая ошибка обойдётся дороже работы специалиста.

Ориентировочно разовое восстановление базы у фрилансера или в сервисной компании стоит от 3 000 до 15 000 рублей. Сложные случаи с извлечением данных из сильно повреждённого файла — дороже, цена считается индивидуально.

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

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

Пропадут ли документы, если повреждена только таблица FILES?
Обычно нет. Документы и проводки хранятся в других таблицах. Но при исправлении утилита может затронуть соседние повреждённые участки, поэтому копия обязательна.
Можно ли запускать chdbfl.exe, пока пользователи работают в базе?
Нет. Утилита требует закрытой базы. Работающие сеансы нужно завершить заранее, иначе исправление не начнётся или повредит файл.
Какую версию chdbfl.exe использовать?
Ту, что лежит в папке bin платформы, на которой работает база. Утилита из другой версии платформы может не распознать формат файла.
Ошибка появилась снова через неделю. Что это значит?
Повреждение возвращается из-за внешней причины: сбойного диска, антивируса, обрывов сети. Лечить базу повторно бесполезно, пока не устранена причина.
Помогает ли сжатие таблиц при этой ошибке?
Само по себе нет. Сжатие уменьшает файл и перестраивает таблицы, но повреждения исправляет режим «Тестирование и исправление» или chdbfl.exe.