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