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