Администрирование · 12 мин
Что такое индексирование в 1С и как его выполнить
Что значит индексировать базу 1С, зачем нужна реиндексация, как запустить её через конфигуратор и chdbfl, когда процедура помогает и какие есть риски.
Индексирование в 1С — это процедура перестроения внутренних индексов базы данных, по которым платформа быстро находит нужные записи: документы, элементы справочников, строки регистров. Индексы работают как алфавитный указатель в книге: вместо полного перебора всех записей система сразу переходит к нужному месту. Со временем, особенно при активной работе, аварийных завершениях и массовых загрузках данных, индексы файловой базы могут рассогласоваться с фактическим содержимым таблиц.
Когда пользователи говорят «проиндексировать 1С», чаще всего имеют в виду реиндексацию — полное пересоздание индексных таблиц. Эта операция входит в штатную процедуру «Тестирование и исправление» конфигуратора, а также доступна при массовой загрузке данных через типовые обработки. Реиндексация не меняет сами данные: она перестраивает только служебные структуры ускоренного поиска.
Процедура считается безопасной, но требует монопольного доступа к базе и обязательной резервной копии. Ниже разобраны признаки, по которым понятно, что индексация нужна, способы её выполнения для файловых и клиент-серверных баз, типичные ошибки и способы проверить результат.
Что такое индексы и зачем их перестраивать
Каждая таблица базы 1С — справочник, документ, регистр сведений — содержит не только сами записи, но и индексы: отсортированные структуры по ключевым полям (код, номер, дата, ссылка). Когда пользователь открывает список документов за период или программа ищет контрагента по наименованию, платформа использует именно индексы. Без них любой поиск превратился бы в последовательное чтение всей таблицы.
В файловом варианте работы (база в виде файла 1Cv8.1CD) индексы хранятся внутри того же файла. При аварийном выключении компьютера, разрыве сети при работе по общему ресурсу, нехватке места на диске индексные страницы могут записаться не полностью. В результате возникают характерные симптомы: документ «пропадает» из журнала, хотя открывается по ссылке; отчёт показывает разные суммы при повторном формировании; поиск по справочнику не находит заведомо существующий элемент.
В клиент-серверном варианте (MS SQL, PostgreSQL и другие СУБД) индексы обслуживаются средствами самой СУБД. Там реиндексация средствами конфигуратора тоже возможна, но обычно её выполняют штатными инструментами сервера баз данных по регламенту администратора.
Признаки того, что базе нужна индексация
Однозначного индикатора «индексы повреждены» в интерфейсе 1С нет, поэтому ориентируются на совокупность симптомов. Наиболее типичная картина — данные ведут себя непоследовательно: запись существует, но не видна в списке, либо наоборот, удалённый объект продолжает отображаться. Часто это сопровождается заметным замедлением открытия журналов и формирования отчётов.
Ещё одна группа признаков — ошибки формата потока и сообщения о несоответствии данных при обращении к конкретным объектам. После аварийного завершения работы (отключение электричества, сбой сервера, принудительное завершение процесса) реиндексацию рекомендуется выполнить профилактически, даже если явных ошибок пока нет.
Откройте объект по прямой ссылке или через «Все функции» — если открывается, проблема в индексе
Пересчитайте итоги и сравните с аналогичным отчётом за соседний период
Сравните скорость на копии базы после реиндексации
Сначала проверьте базу утилитой chdbfl, затем выполните тестирование и исправление
Подготовка: копия и монопольный доступ
Перед любой реиндексацией сделайте резервную копию. Для файловой базы достаточно скопировать файл 1Cv8.1CD при остановленной работе пользователей или выполнить выгрузку в файл .dt через конфигуратор («Администрирование» → «Выгрузить информационную базу»). Копия файла надёжнее для отката, выгрузка в .dt дополнительно проверяет читаемость данных.
Реиндексация требует монопольного доступа: все пользователи должны выйти из базы, фоновые задания и сеансы — завершены. Если база опубликована на веб-сервере или к ней подключаются сторонние обмены, отключите эти каналы на время процедуры. Попытка выполнить тестирование при активных сеансах завершится ошибкой монопольного режима.
Убедитесь, что на диске достаточно свободного места. В процессе перестроения индексов и таблиц файловой базы создаются временные структуры, и при нехватке места операция может прерваться, оставив файл в промежуточном состоянии. Ориентир — свободное место не меньше размера самого файла базы.
Как проиндексировать базу через конфигуратор
Основной способ — штатная процедура «Тестирование и исправление». Она выполняется в конфигураторе и для задачи реиндексации требует включения только одного флажка, без режимов исправления данных.
- 1Завершите работу всех пользователей и сделайте резервную копию базы
- 2Откройте базу в конфигураторе под пользователем с полными правами
- 3Перейдите в меню «Администрирование» → «Тестирование и исправление»
- 4Снимите все флажки проверок, оставьте только «Реиндексация таблиц информационной базы»
- 5Выберите вариант «Тестирование и исправление» и нажмите «Выполнить»
- 6Дождитесь окончания процесса и изучите протокол в окне сообщений
- 7Проверьте работу базы: поиск, журналы, ключевые отчёты
Если в той же процедуре включить «Проверку логической целостности» и «Проверку ссылочной целостности», время работы заметно вырастет, а режим «Исправление» может изменять данные (например, создавать объекты-заглушки по битым ссылкам). Для задачи чистой индексации эти режимы не нужны — включайте их осознанно и только на копии либо после надёжного бэкапа.
Длительность зависит от размера базы и скорости диска: небольшая файловая база обрабатывается за минуты, объёмная — за часы. Прогресс отображается в строке состояния конфигуратора. Прерывать процесс нельзя, поэтому крупные базы планируют на нерабочее время.
Индексация при загрузке данных
Отдельный сценарий — реиндексация при массовом переносе данных. Типовые обработки конвертации и загрузки (например, «Универсальный обмен данными в формате XML») содержат опцию индексации после записи объектов. Она ускоряет саму загрузку: индексы перестраиваются один раз в конце, а не обновляются при записи каждого объекта. Если загружаете большой массив данных в пустую или очищенную базу, эту опцию стоит использовать.
Проверка файловой базы утилитой chdbfl
Если подозрение выходит за рамки индексов — например, база не открывается или выдаёт ошибку формата потока — используют утилиту chdbfl.exe из каталога установки платформы (папка bin соответствующей версии). Она проверяет физическую целостность файла 1Cv8.1CD на низком уровне, без участия механизмов конфигуратора.
Запустите утилиту, укажите путь к файлу базы и выберите режим проверки. Исправлять ошибки следует только на копии файла: утилита может удалять повреждённые участки, и данные из них восстановлению не подлежат. После успешной физической проверки базу открывают в конфигураторе и выполняют тестирование и исправление, включая реиндексацию.
Клиент-серверный вариант: что меняется
В клиент-серверной архитектуре таблицы и индексы хранятся в СУБД, и их обслуживание — задача регламентных заданий сервера: перестроение или реорганизация индексов, обновление статистики. Реиндексация через конфигуратор в этом случае тоже доступна, но используется реже — в основном при подозрении на рассогласование после восстановления из бэкапа или нештатных работ.
Признаки проблем с индексами на стороне СУБД — деградация производительности запросов без изменения нагрузки и рост фрагментации индексов. Диагностику выполняет администратор баз данных по метрикам сервера; самостоятельно перестраивать индексы в продакшен-базе без понимания плана обслуживания не стоит — неудачно выбранное время может надолго заблокировать таблицы.
Способы реиндексации
Подходит для файловых баз и разового обслуживания; требует монопольного доступа и резервной копии
Для файловых баз с физическими повреждениями; работает с файлом напрямую, исправления только на копии
Для клиент-серверных баз; выполняются администратором по регламенту, обычно в нерабочее время
При массовом переносе данных; ускоряет загрузку, не заменяет полноценное обслуживание
Как проверить результат и частые ошибки
После завершения реиндексации проверьте симптомы, с которых всё начиналось: найдите «пропадавшую» запись поиском, сформируйте проблемный отчёт дважды и сравните итоги, откройте журналы документов и оцените скорость. Если проблема сохранилась, причина, скорее всего, не в индексах — нужна проверка логической и ссылочной целостности или анализ физических повреждений файла.
Как проверить результат
Запись находится и открывается из списка
Запись по-прежнему не находится — нужна проверка целостности данных
Итоги стабильны при каждом запуске
Суммы меняются — проверяйте итоги регистров и логику данных
Нет сообщений об ошибках и пропущенных таблицах
Есть ошибки или обрыв процесса — восстановите копию и повторите
Заметно быстрее или на прежнем нормальном уровне
Замедление сохраняется — проблема в ресурсах или СУБД, а не в индексах
Распространённая ошибка — запускать реиндексацию как универсальное лекарство от любых тормозов. Медленная работа чаще связана с нехваткой ресурсов сервера, неоптимальными запросами в доработках или разросшимися таблицами, и перестроение индексов эффекта не даст. Вторая ошибка — прерывание процесса: оборванная на середине реиндексация оставляет файл в неопределённом состоянии, и восстановление займёт больше времени, чем исходная процедура.
Что важно запомнить
Индексирование (реиндексация) в 1С — это перестроение служебных индексов таблиц без изменения самих данных. Выполняется через «Тестирование и исправление» в конфигураторе при монопольном доступе и обязательной резервной копии. Помогает при «пропадающих» записях и нестабильных итогах после сбоев, но не лечит проблемы производительности и повреждения самих данных.
Частые вопросы
Индексация удалит или изменит мои данные?
Нет. Реиндексация пересоздаёт только служебные индексные структуры, документы, справочники и проводки остаются без изменений. Данные могут изменить другие режимы процедуры «Тестирование и исправление» — например, исправление ссылочной целостности, поэтому для чистой индексации включайте только соответствующий флажок.
Как часто нужно делать реиндексацию файловой базы?
Жёсткого регламента нет. Обоснованная практика — выполнять процедуру после аварийных завершений, массовых загрузок данных и при появлении характерных симптомов. Некоторые администраторы включают её в плановое обслуживание раз в несколько месяцев для активно используемых баз.
Можно ли проиндексировать базу без конфигуратора?
Для файловой базы полноценная реиндексация выполняется именно через конфигуратор. Утилита chdbfl проверяет физическую целостность файла, но не заменяет реиндексацию. В клиент-серверном варианте индексы перестраиваются средствами СУБД без открытия конфигуратора.
Почему процедура зависла и что делать?
На больших базах реиндексация может идти часами, при этом индикатор прогресса обновляется нерегулярно. Проверьте активность диска и процессора — если нагрузка есть, процесс работает, дождитесь завершения. Прерывать его принудительно нельзя: восстанавливать базу из копии дольше и рискованнее.
После реиндексации проблема осталась — что дальше?
Значит, причина не в индексах. Следующие шаги: полная проверка логической и ссылочной целостности на копии базы, проверка файла утилитой chdbfl (для файлового варианта), пересчёт итогов по регистрам. Если повреждены сами данные, может потребоваться восстановление из архивной копии с переносом актуальных изменений.
Нужна ли реиндексация после обновления конфигурации?
Обычно нет: при обновлении платформа сама выполняет реструктуризацию изменённых таблиц. Отдельная реиндексация имеет смысл, только если после обновления появились симптомы рассогласования индексов или обновление прерывалось аварийно.