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