К статье
Практический материал

Администрирование · 10 мин

Файлы CDX в 1С: назначение, ошибки и восстановление

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

Файлы с расширением CDX появляются в каталогах баз 1С, работающих в файловом формате DBF (например, 1С:Предприятие 7.7 и ряд устаревших или специализированных конфигураций). Это составные индексные файлы, которые платформа создаёт автоматически рядом с таблицами DBF, чтобы ускорять поиск и выборку данных. Без корректного CDX-файла таблица может открываться медленно, выдавать ошибки или показывать неполные данные.

Типичная ситуация, с которой сталкиваются администраторы: при запуске базы появляется сообщение об ошибке открытия индексного файла, повреждении индекса или несоответствии индекса таблице. Чаще всего причина — аварийное завершение работы, сбой сети при доступе к общей папке с базой или некорректное копирование каталога, когда файл DBF скопировали, а CDX забыли или скопировали устаревший.

Понимание роли CDX-файлов помогает быстро локализовать проблему, не прибегая к полному восстановлению базы из архива. В большинстве случаев достаточно перестроить индексы штатными средствами, и база снова начинает работать. Ниже разобрано назначение этих файлов, признаки их повреждения и безопасный порядок восстановления.

Что такое файл CDX и какую роль он играет в базе 1С

CDX (Compound Index) — составной индексный файл формата xBASE, который хранит один или несколько индексов для таблицы DBF. Индекс — это упорядоченная структура ключей, позволяющая находить записи не перебором всей таблицы, а по отсортированному дереву. В контексте 1С индексы строятся по кодам элементов справочников, номерам и датам документов, ключевым полям регистров.

Когда пользователь открывает список документов, выполняет поиск контрагента по коду или проводит документ с контролем остатков, платформа обращается именно к индексам. Без CDX-файла каждая выборка превращалась бы в полное сканирование таблицы, что на больших объёмах данных привело бы к неприемлемым задержкам.

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

Где находятся CDX-файлы и как они связаны с DBF

В файловых базах формата DBF каждая таблица представлена парой файлов: собственно таблицей с расширением DBF и индексным файлом CDX с тем же именем. Например, таблице справочника может соответствовать пара файлов вида SC167.DBF и SC167.CDX. Оба файла лежат в одном каталоге базы или её подкаталогах.

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

Отсюда практическое правило при копировании базы вручную: переносить нужно каталог целиком, а не отдельные файлы. Копирование только DBF без CDX не критично — индекс перестроится, — а вот копирование старого CDX поверх нового каталога почти гарантированно приведёт к ошибкам.

Признаки повреждения индексного файла

Повреждённый CDX проявляется по-разному в зависимости от того, какая операция обращается к индексу. Типичные симптомы: сообщения об ошибке открытия или чтения индексного файла при запуске, внезапные «зависания» при открытии журналов документов, пропажа части записей в списках, ошибки при проведении документов с контролем уникальности.

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

Ошибка при открытии базыВероятно повреждение CDX

Текст ошибки упоминает индексный файл или конкретную таблицу

Записи «пропадают» из списковРассинхронизация индекса

Проверьте, видна ли запись при полном просмотре таблицы

Медленная работа после сбояВозможна частичная порча индекса

Сравните скорость открытия журналов до и после реиндексации

Ошибки после копирования каталогаНесоответствие пары DBF/CDX

Проверьте даты изменения файлов таблицы и индекса

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

Как восстановить CDX: реиндексация штатными средствами

Основной способ восстановления индексов — полная реиндексация таблиц в конфигураторе. Процедура перестраивает все CDX-файлы на основе актуального содержимого DBF-таблиц, и в подавляющем большинстве случаев этого достаточно для устранения ошибок.

Порядок действий
  1. 1
    Завершите работу всех пользователей и убедитесь, что база никем не открыта
  2. 2
    Сделайте полную копию каталога базы на другой диск или в архив
  3. 3
    Откройте базу в режиме конфигуратора в монопольном режиме
  4. 4
    Запустите пункт меню Администрирование — Тестирование и исправление
  5. 5
    Отметьте режим реиндексации таблиц и запустите выполнение
  6. 6
    Дождитесь завершения и изучите протокол на предмет ошибок
  7. 7
    Откройте базу в режиме предприятия и проверьте проблемные операции

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

Если штатная реиндексация завершается ошибкой на конкретной таблице, вероятно, повреждена не только индексная часть, но и сама DBF-таблица. В этом случае индекс перестроить не удастся до восстановления данных таблицы — либо из архивной копии, либо специализированными средствами ремонта DBF.

Ручная перестройка индексов и её ограничения

Альтернативный приём, который иногда применяют администраторы, — удаление CDX-файлов из каталога базы с последующим запуском реиндексации. Платформа обнаружит отсутствие индексов и создаст их заново. Метод работает, но требует аккуратности: удалять нужно только CDX, не трогая DBF и служебные файлы, и строго при закрытой базе.

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

Сравнение вариантов

Реиндексация в конфигураторе

Штатный и безопасный способ; подходит для большинства случаев, требует монопольного доступа

Удаление CDX вручную

Помогает, когда база не открывается из-за индекса; риск ошибиться с выбором файлов, копия обязательна

Восстановление из архива

Гарантированный результат при серьёзных повреждениях; теряются данные, введённые после создания копии

Профилактика: как снизить риск повреждения индексов

Большинство проблем с CDX предотвращается организационными мерами. Ключевые из них: корректное завершение работы пользователей, стабильная сеть при размещении базы в общей папке, источник бесперебойного питания на компьютере с базой и исключение каталога базы из оперативного сканирования антивируса.

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

Контрольные точки

Как проверить результат

Протокол тестирования
Норма

Нет сообщений об ошибках таблиц и индексов

Тревожный признак

Ошибки на конкретных таблицах после реиндексации

Открытие проблемных журналов
Норма

Списки открываются быстро, записи на месте

Тревожный признак

Часть записей не отображается или поиск не находит документы

Проведение документов
Норма

Документы проводятся без сообщений об уникальности и индексах

Тревожный признак

Ошибки при проведении, ранее работавших документов

Если база продолжает регулярно «терять» индексы даже после профилактики, это повод рассмотреть переход с файлового DBF-формата на клиент-серверный вариант, где индексацией управляет СУБД и подобные сбои практически исключены.

Типичные ошибки
01
Копирование только DBF-файлов при переносе базы — индексы остаются старыми, база работает с ошибками
02
Запуск реиндексации без резервной копии — при обрыве процесса восстанавливать нечего
03
Удаление «лишних» файлов из каталога базы — вместе с CDX удаляют служебные файлы, и база перестаёт открываться
04
Игнорирование повторяющихся сбоев — разовая реиндексация маскирует проблему с сетью или диском, и повреждения возвращаются

Частые вопросы о файлах CDX в 1С

Можно ли удалить файл CDX без последствий?

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

Почему CDX-файл оказался больше самой таблицы DBF?

Это нормальная ситуация для таблиц с несколькими индексами и длинными строковыми ключами: индекс хранит ключи по каждому из них плюс служебную структуру. Сам по себе большой размер CDX не признак проблемы; тревожны только ошибки чтения и рассинхронизация с таблицей.

База выдаёт ошибку индекса сразу после копирования на другой компьютер. Что делать?

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

Реиндексация зависла — можно ли прервать процесс?

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

Используются ли CDX-файлы в современных версиях 1С?

В платформах линейки 1С:Предприятие 8 файловый формат базы устроен иначе — данные и индексы хранятся в едином файле 1Cv8.1CD, а отдельных CDX-файлов нет. CDX актуальны для баз формата DBF, прежде всего 1С 7.7 и решений на её основе.

Антивирус удалил CDX-файл, посчитав его подозрительным. Как восстановить работу?

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

Итог

Что важно запомнить

CDX — служебный индексный файл для DBF-таблиц 1С, который не содержит данных и всегда может быть перестроен. При ошибках индекса делайте копию каталога и запускайте реиндексацию в конфигураторе; повторяющиеся сбои — сигнал проверить сеть, диски и антивирус.