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

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

Индексация в 1С: что это такое и как правильно выполнить

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

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

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

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

Как устроены индексы в информационной базе 1С

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

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

В файловом варианте работы индексы хранятся внутри файла базы 1Cv8.1CD. В клиент-серверном варианте индексами управляет СУБД — Microsoft SQL Server, PostgreSQL или другая — и там существуют собственные механизмы обслуживания индексов. Это принципиальное различие, которое определяет, как именно выполнять реиндексацию в каждом случае.

Когда реиндексация действительно нужна

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

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

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

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

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

Ошибки чтения после сбоя питанияВозможно повреждение индексов или таблиц

Запустить тестирование и исправление с реиндексацией

База тормозит сразу после обновления конфигурацииМожет требоваться реструктуризация, а не реиндексация

Проверить, завершилась ли реструктуризация корректно

Медленно работает один конкретный отчётПроблема скорее в запросе отчёта

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

Как выполнить реиндексацию через конфигуратор

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

Порядок действий одинаков для большинства конфигураций и версий платформы. Перед началом обязательно создаётся резервная копия: для файловой базы достаточно скопировать файл 1Cv8.1CD при закрытых сеансах, для серверной — сделать выгрузку в dt или штатный бэкап средствами СУБД.

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

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

Особенности для файловых и клиент-серверных баз

Для файлового варианта «Тестирование и исправление» — основной и по сути единственный штатный способ перестроить индексы. Дополнительно существует утилита chdbfl.exe из каталога установки платформы: она проверяет физическую целостность файла 1Cv8.1CD и применяется при серьёзных повреждениях, когда конфигуратор не может открыть базу. Это инструмент восстановления, а не планового обслуживания.

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

Способы реиндексации

Тестирование и исправление в конфигураторе

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

Средства СУБД (SQL Server, PostgreSQL)

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

Утилита chdbfl.exe

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

Индексация при разработке: реквизиты и запросы

Отдельный смысл термин «индексация» имеет для разработчиков и внедренцев. В конфигураторе у реквизитов объектов есть свойство «Индексировать»: его включение создаёт дополнительный индекс по этому полю. Это ускоряет поиск и отборы по реквизиту, но замедляет запись, потому что при каждом изменении индекс приходится обновлять.

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

Проверить, используется ли индекс конкретным запросом, можно через план запроса в консоли запросов или средствами СУБД. Если запрос выполняет полное сканирование таблицы вместо поиска по индексу, стоит пересмотреть условия отбора или добавить индекс по нужному полю.

Типичные ошибки
01
Запуск реиндексации без резервной копии — при сбое базу придётся восстанавливать, а данные за день будут потеряны
02
Реиндексация при работающих пользователях — процедура не запустится без монопольного доступа, а принудительное отключение сеансов обрывает работу людей
03
Включение индексации для всех реквизитов подряд — замедляется запись документов без выигрыша в скорости поиска
04
Ожидание эффекта от реиндексации при проблемах в коде — неоптимальные запросы перестройка индексов не исправит
05
Прерывание процесса кнопкой отмены — риск физического повреждения файла базы

Как проверить результат и как часто повторять процедуру

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

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

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

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

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

Нет сообщений об ошибках, процедура завершена полностью

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

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

Скорость типовых операций
Норма

Отчёты и списки открываются заметно быстрее, чем до процедуры

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

Скорость не изменилась — проблема не в индексах

Работа пользователей после запуска
Норма

База открывается, документы проводятся без ошибок

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

Ошибки при записи или чтении — нужна проверка целостности

Часто задаваемые вопросы

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

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

Можно ли запустить реиндексацию, пока пользователи работают?

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

Сколько времени занимает реиндексация?

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

Нужна ли реиндексация для клиент-серверной базы на SQL Server?

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

Поможет ли реиндексация, если база работает медленно?

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

Опасна ли реиндексация для данных?

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

Итог

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

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