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

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

Как провести индексацию в 1С

Способы переиндексации базы 1С: через конфигуратор, тестирование и исправление, chdbfl и сервер СУБД. Когда нужна индексация, риски и проверка результата.

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

Процедура выполняется штатными средствами — конфигуратором, утилитой тестирования и исправления, а для файловых баз — утилитой chdbfl.exe. В клиент-серверном варианте индексы перестраиваются средствами СУБД (MS SQL, PostgreSQL). Ниже разобраны все сценарии, условия их применения и способы проверить результат.

Перед любым вариантом индексации обязательно сделайте резервную копию базы. Операция считается безопасной, но при аварийном прерывании (отключение питания, разрыв соединения) файл базы может оказаться повреждён, и восстановить его удастся только из копии.

Когда базе нужна переиндексация

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

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

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

Сравнить время проведения с прошлым периодом

Ошибки СУБД при открытии таблицВозможно повреждение индексов или данных

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

Отчёты формируются дольше обычногоУстаревшая статистика или фрагментация

Выполнить переиндексацию и обновление статистики

Аварийное завершение работыРиск рассогласования индексов

Проверить базу утилитой chdbfl или ТиИ

Подготовка: резервная копия и монопольный доступ

Для файловой базы резервная копия — это копирование файла 1Cv8.1CD в отдельный каталог при закрытых сеансах либо выгрузка через конфигуратор («Администрирование → Выгрузить информационную базу»). Копирование файла надёжнее и быстрее для больших баз. Для серверной базы копию делайте средствами СУБД — штатным backup в MS SQL или pg_dump в PostgreSQL.

Переиндексация требует монопольного доступа: все пользователи и фоновые сеансы должны быть завершены. В конфигураторе активные сеансы видны в разделе «Администрирование → Активные пользователи». В клиент-серверном варианте сеансы завершают через консоль кластера, предварительно установив блокировку начала сеансов, чтобы пользователи не подключились в процессе.

Переиндексация через конфигуратор

Стандартный способ — «Тестирование и исправление» (ТиИ). Откройте базу в конфигураторе, перейдите в «Администрирование → Тестирование и исправление», отметьте флажок «Реиндексация таблиц информационной базы» и при необходимости «Проверка логической целостности» и «Проверка ссылочной целостности». Режим оставьте «Тестирование» без исправления, если цель — только переиндексация и диагностика.

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

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

Проверка файловой базы утилитой chdbfl.exe

Утилита chdbfl.exe поставляется вместе с платформой и лежит в каталоге bin установленной версии. Она работает только с файловыми базами и проверяет физическую целостность файла 1Cv8.1CD — это более низкий уровень, чем ТиИ. Запустите утилиту, укажите путь к файлу базы, отметьте «Исправлять обнаруженные ошибки» только после того, как сделана копия, и нажмите «Выполнить».

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

Индексация в клиент-серверном варианте

В серверной архитектуре таблицы и индексы хранятся в СУБД, поэтому перестроение индексов эффективнее выполнять её штатными средствами. Для MS SQL это команды ALTER INDEX ... REBUILD или планы обслуживания с задачей «Перестроение индекса», для PostgreSQL — REINDEX TABLE или REINDEX DATABASE. Такие операции часто выполняются без полного монопольного режима, но нагружают сервер, поэтому их планируют на нерабочее время.

Переиндексацию через ТиИ в клиент-серверном варианте тоже можно выполнять — платформа пересоздаст индексы средствами СУБД. Однако для больших баз администраторы чаще совмещают подходы: логическую проверку делают через ТиИ, а регламентную дефрагментацию индексов и обновление статистики — скриптами СУБД по расписанию.

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

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

Универсальный способ для файловых и серверных баз; требует монопольного доступа, на больших базах работает долго

Chdbfl.exe

Только файловые базы; проверяет физическую целостность, подходит когда база не открывается

Средства СУБД (REBUILD, REINDEX)

Только клиент-серверный вариант; быстро и гибко, можно по расписанию, но требует навыков администрирования СУБД

Как проверить результат и частые ошибки

Главный признак успешной переиндексации — чистый протокол ТиИ без ошибок и субъективное ускорение операций: откройте крупный журнал документов, проведите типовой документ, сформируйте отчёт, который раньше «тормозил». Если ошибки в протоколе есть, их нужно разбирать отдельно: битые ссылки, потерянные записи и повреждённые таблицы переиндексацией не лечатся.

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

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

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

Протокол ТиИ
Норма

Нет строк с ошибками

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

Сообщения о повреждённых таблицах или битых ссылках

Скорость открытия журналов и отчётов
Норма

Заметно быстрее, чем до процедуры

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

Изменений нет — искать причину в статистике, итогах или оборудовании

Проведение типового документа
Норма

Время проведения вернулось к обычному

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

Проведение по-прежнему медленное — нужна диагностика запросов и регистров

FAQ

Как часто нужно делать переиндексацию базы 1С?

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

Можно ли выполнять переиндексацию при работающих пользователях?

Через конфигуратор — нет, ТиИ требует монопольного доступа. В клиент-серверном варианте перестроение индексов средствами СУБД технически возможно без выгона пользователей (например, REBUILD WITH ONLINE в подходящих редакциях MS SQL), но операция нагружает сервер, поэтому её планируют на период минимальной активности.

Чем переиндексация отличается от пересчёта итогов?

Переиндексация перестраивает индексы таблиц — структуры ускоренного поиска записей. Пересчёт итогов обновляет агрегированные данные регистров (остатки и обороты), которые используются отчётами. Это независимые операции, и замедление отчётов по остаткам часто требует именно пересчёта итогов, а не индексации.

База не открывается даже в конфигураторе. Поможет индексация?

Напрямую нет — сначала проверьте физическую целостность файла утилитой chdbfl.exe (для файловой базы). Если она исправила ошибки и база открылась, затем выполните ТиИ с реиндексацией и проверкой целостности. При серверной базе аналогичную проверку делайте средствами СУБД.

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

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

Удалит ли переиндексация или исправит мои данные?

Сама по себе реиндексация не изменяет данные — она перестраивает только служебные индексы. Данные могут изменяться при выборе в ТиИ режима «Тестирование и исправление» с опциями исправления (например, создание объектов по битым ссылкам). Поэтому для диагностики выбирайте режим без исправления и всегда работайте после резервного копирования.

Итог

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

Переиндексация — безопасная регламентная операция при соблюдении трёх условий: резервная копия, монопольный доступ, непрерываемый процесс. Файловые базы обслуживают через ТиИ и chdbfl, серверные — через ТиИ или средства СУБД. Результат проверяйте по протоколу без ошибок и реальной скорости типовых операций.