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

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

Индексный файл 1С: что это, зачем нужен и как его восстановить

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

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

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

Важно понимать разницу: в файловом варианте 1С:Предприятие 8 вся база, включая данные и индексы, хранится в одном файле 1Cv8.1CD, а индексы встроены внутрь него. В клиент-серверном варианте индексами управляет СУБД (MS SQL, PostgreSQL, Oracle), и отдельных «индексных файлов» как таковых администратор 1С не видит. Устаревший формат 1С 7.7 использовал отдельные файлы с расширением .cdx — именно их чаще всего называют индексными файлами в узком смысле.

Что такое индекс и зачем он нужен базе 1С

Индекс работает по принципу алфавитного указателя в конце книги: вместо чтения всех страниц вы сразу смотрите нужную букву и получаете номер страницы. В базе 1С индекс сортирует значения ключевых полей (код, наименование, номер документа, дата) и хранит ссылки на физическое расположение записей.

Платформа создаёт индексы автоматически для стандартных реквизитов, а разработчик может добавить собственные через свойство «Индексировать» у реквизита объекта. Например, если поиск по артикулу товара выполняется постоянно, для реквизита «Артикул» включают индексирование — иначе каждый запрос будет сканировать всю таблицу номенклатуры.

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

Где хранятся индексы в разных версиях 1С

Расположение индексных структур зависит от версии платформы и режима работы базы. Это ключевой момент, потому что способ восстановления отличается.

Вариант базыГде хранятся индексыИнструмент восстановления
1С 7.7 (файловая, DBF)Отдельные файлы .cdx рядом с таблицами .dbfУдаление .cdx и реиндексация в конфигураторе
1С 8, файловый режимВнутри файла 1Cv8.1CDТестирование и исправление, утилита chdbfl.exe
1С 8, клиент-серверВнутри СУБД (MS SQL, PostgreSQL и др.)Тестирование и исправление, средства СУБД

В 1С 7.7 каждая таблица данных (.dbf) имела парный индексный файл .cdx. При повреждении достаточно было удалить файлы .cdx и запустить конфигуратор — платформа перестраивала индексы заново. Именно отсюда пошла привычка называть индексным файлом отдельный объект на диске.

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

Признаки повреждения индексов

Понять, что проблема связана именно с индексами, можно по характерным симптомам. Ни один из них по отдельности не является стопроцентным доказательством, но совокупность двух-трёх признаков — веский повод запустить проверку.

  • Ошибка при запуске или в процессе работы: «Файл базы данных поврежден», «Ошибка формата потока», сообщения о невозможности прочитать страницу данных.
  • Резкое замедление отборов и отчётов, которые раньше выполнялись быстро, при неизменном объёме данных.
  • Записи «пропадают» из списков, хотя через поиск по коду или напрямую они открываются.
  • Запросы возвращают неполные или неверные результаты без изменения кода.
  • После аварийного завершения (отключение питания, разрыв сети, сбой диска) база перестала открываться.

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

База не открывается с ошибкой форматаВероятно повреждение структуры файла

Проверить утилитой chdbfl.exe из каталога платформы

Отчёты стали медленнымиВозможна деградация или отсутствие индексов

Выполнить реиндексацию через тестирование и исправление

Записи не находятся отборомИндекс рассогласован с данными

Проверить поиск по коду и запустить реиндексацию

Ошибка после сбоя питанияТипичный сценарий повреждения индексов

Сделать копию файла и запустить проверку

Как восстановить индексы файловой базы 1С 8

Стандартный способ — режим «Тестирование и исправление» в конфигураторе. Перед любыми действиями обязательно сделайте резервную копию: достаточно скопировать файл 1Cv8.1CD в отдельную папку при остановленной работе пользователей.

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

Если конфигуратор не открывает базу вообще, используйте утилиту chdbfl.exe из каталога bin установленной платформы. Укажите путь к файлу 1Cv8.1CD, включите флаг «Исправлять обнаруженные ошибки» и запустите проверку. Утилита работает на уровне физической структуры файла и часто восстанавливает базы, которые конфигуратор открыть отказывается.

text
C:\Program Files\1cv8\<версия>\bin\chdbfl.exe

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

Реиндексация в 1С 7.7 через удаление файлов .cdx

В базах 1С 7.7 механизм проще: индексы лежат в отдельных файлах .cdx в каталоге базы, и их можно полностью удалить. При следующем запуске конфигуратора с реиндексацией платформа создаст индексы заново на основе данных из файлов .dbf.

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

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

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

  • Используйте источник бесперебойного питания на компьютере с файловой базой и на сервере.
  • Не размещайте файловую базу на сетевых дисках с нестабильным соединением; при нескольких пользователях рассмотрите веб-сервер или клиент-серверный вариант.
  • Исключите каталог базы и файл 1Cv8.1CD из оперативной проверки антивируса — блокировки во время записи повреждают страницы файла.
  • Настройте регулярное резервное копирование и периодически проверяйте, что копии реально восстанавливаются.
  • Для больших баз планируйте регламентную реиндексацию и обновление статистики в нерабочее время.
Типичные ошибки
01
Запуск тестирования и исправления без резервной копии — при серьёзном повреждении исправление может удалить часть записей, и откатить это будет нечем.
02
Работа с файловой базой по Wi-Fi или через нестабильный VPN — обрыв соединения в момент записи регулярно приводит к повреждению индексов.
03
Удаление файлов базы «по совету из интернета» без понимания их назначения — вместо индексов удаляют данные.
04
Игнорирование повторяющихся сбоев — если индексы повреждаются регулярно, причина в диске, сети или питании, и реиндексация лишь маскирует проблему.

Когда реиндексация не помогает

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

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

Маршрут решения

Как выбрать действие

База открывается, но работает медленно или неверно ищет записиСделайте копию и выполните реиндексацию через тестирование и исправление
База не открывается, конфигуратор выдаёт ошибкуСкопируйте файл 1Cv8.1CD и проверьте его утилитой chdbfl.exe
База 1С 7.7 выдаёт ошибки индексовПри закрытых сеансах удалите файлы .cdx и запустите реиндексацию в конфигураторе
Ошибки повторяются после восстановленияПроверяйте диск, память и сеть; привлеките специалиста, не экспериментируйте с файлом данных
Итог

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

Индексный файл 1С — служебная структура быстрого поиска, а не хранилище учётных данных. В 1С 7.7 это файлы .cdx, в 1С 8 индексы внутри 1Cv8.1CD или в СУБД. Повреждённые индексы перестраиваются реиндексацией, но любое восстановление начинается с резервной копии.

Частые вопросы об индексных файлах 1С

Можно ли удалить индексный файл без потери данных?

В 1С 7.7 — да: файлы .cdx содержат только индексы и перестраиваются платформой после удаления. В 1С 8 отдельного индексного файла нет, поэтому удалять нечего — восстановление выполняется реиндексацией. В обоих случаях перед действиями делается копия базы.

Чем реиндексация отличается от тестирования и исправления?

Реиндексация — это один из пунктов режима «Тестирование и исправление». Она только перестраивает индексы и не затрагивает данные. Полное тестирование дополнительно проверяет логическую и ссылочную целостность и может изменять или удалять повреждённые записи, поэтому требует более осторожного подхода.

Почему база тормозит, хотя реиндексацию делали недавно?

Реиндексация устраняет только рассогласование и фрагментацию индексов. Если отборы идут по неиндексированным полям, запросы в конфигурации неоптимальны или таблицы выросли, перестроение индексов эффекта не даст. Нужен анализ замеров производительности и, возможно, добавление индексов в конфигурации.

Где находится утилита chdbfl.exe и когда её применять?

Утилита лежит в каталоге bin установленной платформы 1С:Предприятие 8. Её запускают, когда файловая база повреждена настолько, что конфигуратор не может её открыть. Перед запуском обязательно копируют файл 1Cv8.1CD, поскольку утилита исправляет структуру файла напрямую.

Нужно ли делать реиндексацию регулярно для профилактики?

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

Что делать, если индексы повреждаются снова и снова?

Повторяющиеся повреждения указывают на внешнюю причину: сбойный диск, проблемы с памятью, нестабильную сеть, отключения питания или антивирус, блокирующий файл базы. Устраните источник — проверьте оборудование, настройте ИБП и исключения антивируса, иначе каждая реиндексация будет лишь временной мерой.