Администрирование · 12 мин
Индексный файл 1С: что это и как с ним работать
Индексный файл 1С — что это такое, где хранится, зачем нужен и что делать, если индексы повреждены. Пошаговая инструкция по восстановлению и профилактике.
Индексный файл 1С — это служебный файл, в котором платформа хранит индексы таблиц базы данных. Индексы ускоряют поиск записей: вместо последовательного перебора всех строк таблицы система обращается к упорядоченной структуре и мгновенно находит нужную запись по ключу. Без индексов даже простой отбор документа по номеру превратился бы в полное сканирование таблицы, что на больших базах заняло бы часы.
В файловом варианте работы индексы физически находятся внутри основного файла базы данных 1Cv8.1CD — там же, где сами данные, настройки и служебные структуры. В клиент-серверном варианте индексами управляет СУБД (MS SQL Server, PostgreSQL, Oracle), и отдельного «файла индексов» в каталоге базы нет. Однако термин «индексный файл» прочно закрепился в практике администраторов 1С, и обычно под ним понимают именно индексные структуры базы, которые могут повреждаться и требовать перестроения.
Чаще всего с индексным файлом сталкиваются в двух ситуациях: когда база начинает выдавать ошибки вида «Ошибка формата потока» или «Файл базы данных поврежден», и когда нужно ускорить работу системы через тестирование и исправление с реиндексацией. Ниже разберём устройство индексов, признаки их повреждения и безопасные способы восстановления.
Что такое индекс и как он устроен в 1С
Индекс — это упорядоченная структура данных, построенная по одному или нескольким полям таблицы. Платформа 1С автоматически создаёт индексы для ключевых полей: ссылок, кодов, номеров документов, дат, измерений регистров. Кроме того, разработчик может включить индексирование для произвольных реквизитов в конфигураторе — свойство «Индексировать» у реквизита объекта.
Когда пользователь открывает список документов, платформа строит запрос к таблице. Если по полям отбора или сортировки есть индекс, СУБД (или движок файловой базы) быстро находит нужные строки. Если индекса нет, выполняется полное сканирование таблицы — на больших объёмах это заметно тормозит работу и создаёт блокировки.
Важно понимать: индекс — производная от данных. Его можно удалить и построить заново без потери информации, потому что исходные записи хранятся отдельно. Именно поэтому реиндексация — безопасная и штатная операция, которую платформа выполняет регулярно, например при реструктуризации базы после изменения конфигурации.
Где физически находится индексный файл
В файловом варианте базы 1С все структуры — данные, индексы, служебные таблицы — упакованы в один файл 1Cv8.1CD, который лежит в каталоге информационной базы. Отдельного файла с расширением «индекс» у современной платформы 1С:Предприятие 8 нет — это отличие от старых систем, где индексы хранились в отдельных файлах.
В клиент-серверном варианте индексы создаются средствами СУБД и хранятся в её служебных структурах. Например, в MS SQL Server индексы физически размещаются в файлах данных базы (.mdf/.ndf), а управлять ими можно через план обслуживания или запросы к системным представлениям.
Индексы внутри этого файла, восстановление — через chdbfl.exe или конфигуратор
Индексами управляет СУБД, нужны средства MS SQL / PostgreSQL
Проверить базу утилитой chdbfl.exe и выполнить реиндексацию
Признаки повреждения индексов
Повреждение индексных структур проявляется характерными симптомами. Самый частый — ошибка «Ошибка формата потока» при открытии списка документов, запуске отчёта или проведении документа. Второй типичный признак — сообщение «Файл базы данных поврежден» с указанием пути к 1Cv8.1CD.
Косвенные признаки: документы «пропадают» из списков, хотя поиск по номеру их находит; отчёты показывают неполные данные; резко падает скорость работы без роста объёма базы; платформа аварийно завершается при обращении к конкретным объектам. Все эти симптомы могут указывать на рассинхронизацию индексов с данными.
Причины повреждений почти всегда внешние: аварийное отключение питания во время записи, разрыв сетевого соединения при работе с файловой базой по сети, сбои диска, некорректное завершение процесса 1С, работа антивируса, который блокирует файл базы в момент записи. Понимание причины важно, чтобы после восстановления устранить источник проблемы, иначе повреждение повторится.
Как восстановить индексы в файловой базе
Первый инструмент — утилита chdbfl.exe из каталога установки платформы (папка bin соответствующей версии). Она проверяет физическую целостность файла 1Cv8.1CD и умеет исправлять ошибки, включая повреждённые индексные страницы. Перед запуском обязательно закройте все сеансы работы с базой и сделайте резервную копию файла.
Второй этап — реиндексация через конфигуратор. Меню «Администрирование → Тестирование и исправление», флаг «Реиндексация таблиц информационной базы». Процедура перестраивает все индексы заново. На больших базах это занимает заметное время, работа пользователей в этот момент невозможна — требуется монопольный доступ.
Реиндексация в клиент-серверной базе
В клиент-серверном варианте файл chdbfl.exe неприменим — физического файла базы, доступного администратору 1С, нет. Реиндексацию выполняют либо штатным тестированием и исправлением через конфигуратор (платформа сформирует нужные команды для СУБД), либо средствами самой СУБД.
Для MS SQL Server перестроение индексов делается командой ALTER INDEX ... REBUILD или через план обслуживания. В PostgreSQL используется команда REINDEX. Такие операции требуют прав администратора СУБД и понимания нагрузки: перестроение крупных индексов создаёт нагрузку на дисковую подсистему и может блокировать таблицы, поэтому его планируют на нерабочее время.
Способы восстановления индексов
Только для файловых баз. Проверяет физическую целостность 1Cv8.1CD. Не работает с клиент-серверными базами.
Универсальный способ для обоих вариантов. Требует монопольного доступа и времени на больших базах.
Для клиент-серверных баз. Гибкое управление, но нужны права администратора СУБД и знание конкретной СУБД.
Профилактика: как не допустить повреждения индексов
Главная мера для файловых баз — исключить аварийные прерывания записи. Используйте источник бесперебойного питания на сервере или компьютере с базой, не размещайте файловую базу на сетевом диске с нестабильным каналом, не выключайте компьютер, пока сеансы 1С открыты.
Добавьте каталог базы в исключения антивируса — проверка файла 1Cv8.1CD «на лету» может конфликтовать с записью платформы. Настройте регулярное резервное копирование: для файловой базы — копирование файла при закрытых сеансах или выгрузка в .dt, для клиент-серверной — штатные средства СУБД.
Периодическая реиндексация в регламентных работах полезна для клиент-серверных баз: со временем индексы фрагментируются, и их перестроение ускоряет запросы. Для небольших файловых баз регулярная реиндексация «для профилактики» необязательна — достаточно выполнять её при появлении проблем или после массовых загрузок данных.
Как проверить результат восстановления
Списки открываются без ошибок, записи на месте
Ошибка формата потока или пустые списки
Отчёты строятся, обороты сходятся с ожидаемыми
Отчёт падает с ошибкой или показывает неполные данные
Ошибок не обнаружено или все исправлены
Остаются неисправленные ошибки — нужна повторная проверка или восстановление из копии
Документ находится и открывается
Документ не находится, хотя существовал
Когда индексация влияет на скорость работы
Отдельная тема — использование индексов для ускорения системы. Если отчёты и списки работают медленно, причина часто в отсутствии индекса по полям отбора. В конфигураторе у реквизитов есть свойство «Индексировать», а у регистров — возможность индексирования измерений. Включение индексации по часто используемым в отборах полям заметно ускоряет запросы.
Обратная сторона: каждый индекс замедляет запись, потому что при добавлении или изменении записи платформа обновляет и индексные структуры. Индексировать все поля подряд — плохая идея. Разумный подход: включать индексацию только для полей, которые реально участвуют в отборах, поиске и соединениях, и проверять эффект на копии базы.
Как выбрать действие
Часто задаваемые вопросы
Можно ли просто удалить индексный файл, чтобы 1С создала его заново?
В платформе 1С:Предприятие 8 отдельного индексного файла нет — индексы встроены в 1Cv8.1CD, поэтому удалять нечего. Перестроение индексов выполняется штатной реиндексацией через конфигуратор, это безопасный и правильный способ.
Теряются ли данные при реиндексации?
Нет. Реиндексация перестраивает только служебные индексные структуры по существующим данным. Сами записи документов, справочников и регистров не изменяются. Тем не менее резервная копия перед любыми сервисными операциями обязательна.
Сколько времени занимает реиндексация?
Зависит от размера базы и скорости дисков. Небольшая файловая база обрабатывается за минуты, крупная клиент-серверная база — за часы. Планируйте операцию на нерабочее время, так как требуется монопольный доступ.
Чем chdbfl.exe отличается от тестирования и исправления?
chdbfl.exe проверяет физическую структуру файла 1Cv8.1CD — страницы, заголовки, целостность. Тестирование и исправление работает на логическом уровне: реиндексация, проверка ссылочной целостности, пересчёт итогов. При повреждениях обычно применяют оба инструмента последовательно.
Нужно ли регулярно делать реиндексацию для профилактики?
Для клиент-серверных баз периодическое перестроение индексов полезно из-за фрагментации — обычно его включают в регламент обслуживания СУБД. Для файловых баз регулярная реиндексация не обязательна; достаточно выполнять её при появлении ошибок или заметного замедления.
Что делать, если ни chdbfl, ни тестирование не помогли?
Остаётся восстановление из резервной копии. Если копии нет, можно попробовать загрузить базу в новую пустую базу через выгрузку-загрузку (если выгрузка ещё выполняется) или обратиться к специалистам по восстановлению данных. Именно поэтому регулярное резервное копирование — главная защита.
Что важно запомнить
Индексный файл 1С — это индексные структуры базы, в файловом варианте встроенные в 1Cv8.1CD. При повреждении: сначала резервная копия, затем chdbfl.exe и реиндексация через конфигуратор. При повторяющихся ошибках ищите внешнюю причину — сеть, диск, антивирус или питание.