Администрирование · 9 мин
Как провести индексацию в 1С
Способы переиндексации базы 1С: через конфигуратор, тестирование и исправление, chdbfl и сервер СУБД. Когда нужна индексация, риски и проверка результата.
Индексация в 1С — это перестроение внутренних индексов таблиц базы данных, по которым платформа быстро находит записи. Со временем индексы фрагментируются: документы проводятся медленнее, отчёты формируются дольше, а списки открываются с заметной задержкой. Переиндексация устраняет эту деградацию и заодно выявляет логические повреждения таблиц.
Процедура выполняется штатными средствами — конфигуратором, утилитой тестирования и исправления, а для файловых баз — утилитой chdbfl.exe. В клиент-серверном варианте индексы перестраиваются средствами СУБД (MS SQL, PostgreSQL). Ниже разобраны все сценарии, условия их применения и способы проверить результат.
Перед любым вариантом индексации обязательно сделайте резервную копию базы. Операция считается безопасной, но при аварийном прерывании (отключение питания, разрыв соединения) файл базы может оказаться повреждён, и восстановить его удастся только из копии.
Когда базе нужна переиндексация
Переиндексация — не ежедневная операция, а ответ на конкретные симптомы или часть планового обслуживания. Запускать её стоит, когда наблюдается заметное замедление типовых операций: долгое открытие журналов документов, медленное проведение, зависание отчётов, которые раньше формировались быстро.
Дополнительные поводы — ошибки вида «ошибка СУБД» при обращении к конкретным таблицам, некорректные итоги в отчётах при правильных данных в документах, а также восстановление базы после аварийного завершения работы. В плановом порядке переиндексацию крупных активных баз обычно включают в регламент обслуживания вместе с обновлением статистики.
Сравнить время проведения с прошлым периодом
Запустить тестирование и исправление с проверкой ссылочной целостности
Выполнить переиндексацию и обновление статистики
Проверить базу утилитой chdbfl или ТиИ
Подготовка: резервная копия и монопольный доступ
Для файловой базы резервная копия — это копирование файла 1Cv8.1CD в отдельный каталог при закрытых сеансах либо выгрузка через конфигуратор («Администрирование → Выгрузить информационную базу»). Копирование файла надёжнее и быстрее для больших баз. Для серверной базы копию делайте средствами СУБД — штатным backup в MS SQL или pg_dump в PostgreSQL.
Переиндексация требует монопольного доступа: все пользователи и фоновые сеансы должны быть завершены. В конфигураторе активные сеансы видны в разделе «Администрирование → Активные пользователи». В клиент-серверном варианте сеансы завершают через консоль кластера, предварительно установив блокировку начала сеансов, чтобы пользователи не подключились в процессе.
Переиндексация через конфигуратор
Стандартный способ — «Тестирование и исправление» (ТиИ). Откройте базу в конфигураторе, перейдите в «Администрирование → Тестирование и исправление», отметьте флажок «Реиндексация таблиц информационной базы» и при необходимости «Проверка логической целостности» и «Проверка ссылочной целостности». Режим оставьте «Тестирование» без исправления, если цель — только переиндексация и диагностика.
Нажмите «Выполнить» и дождитесь окончания: для базы в десятки гигабайт процесс может занять от десятков минут до нескольких часов. Прогресс отображается в окне состояния, прерывать его не следует. По завершении изучите протокол — там перечислены обработанные таблицы и найденные ошибки.
- 1Сделайте резервную копию базы
- 2Завершите все сеансы пользователей и фоновые задания
- 3Откройте конфигуратор в монопольном режиме
- 4Выберите «Администрирование → Тестирование и исправление»
- 5Отметьте «Реиндексация таблиц информационной базы» и нажмите «Выполнить»
- 6Дождитесь завершения и изучите протокол ошибок
- 7Проверьте скорость типовых операций в пользовательском режиме
Проверка файловой базы утилитой chdbfl.exe
Утилита chdbfl.exe поставляется вместе с платформой и лежит в каталоге bin установленной версии. Она работает только с файловыми базами и проверяет физическую целостность файла 1Cv8.1CD — это более низкий уровень, чем ТиИ. Запустите утилиту, укажите путь к файлу базы, отметьте «Исправлять обнаруженные ошибки» только после того, как сделана копия, и нажмите «Выполнить».
Chdbfl имеет смысл запускать, когда база не открывается даже в конфигураторе или ТиИ завершается с ошибкой доступа к таблицам. Если утилита сообщает об исправленных ошибках, после неё рекомендуется прогнать ТиИ с реиндексацией и проверкой целостности — физическое исправление не гарантирует логическую корректность данных.
Индексация в клиент-серверном варианте
В серверной архитектуре таблицы и индексы хранятся в СУБД, поэтому перестроение индексов эффективнее выполнять её штатными средствами. Для MS SQL это команды ALTER INDEX ... REBUILD или планы обслуживания с задачей «Перестроение индекса», для PostgreSQL — REINDEX TABLE или REINDEX DATABASE. Такие операции часто выполняются без полного монопольного режима, но нагружают сервер, поэтому их планируют на нерабочее время.
Переиндексацию через ТиИ в клиент-серверном варианте тоже можно выполнять — платформа пересоздаст индексы средствами СУБД. Однако для больших баз администраторы чаще совмещают подходы: логическую проверку делают через ТиИ, а регламентную дефрагментацию индексов и обновление статистики — скриптами СУБД по расписанию.
Сравнение способов переиндексации
Универсальный способ для файловых и серверных баз; требует монопольного доступа, на больших базах работает долго
Только файловые базы; проверяет физическую целостность, подходит когда база не открывается
Только клиент-серверный вариант; быстро и гибко, можно по расписанию, но требует навыков администрирования СУБД
Как проверить результат и частые ошибки
Главный признак успешной переиндексации — чистый протокол ТиИ без ошибок и субъективное ускорение операций: откройте крупный журнал документов, проведите типовой документ, сформируйте отчёт, который раньше «тормозил». Если ошибки в протоколе есть, их нужно разбирать отдельно: битые ссылки, потерянные записи и повреждённые таблицы переиндексацией не лечатся.
К типичным ошибкам относятся: запуск ТиИ без резервной копии, прерывание процесса кнопкой «Отмена» или закрытием конфигуратора, попытка переиндексации при активных сеансах и ожидание, что индексация исправит ошибки в данных. Также администраторы иногда путают переиндексацию с пересчётом итогов — это разные операции: итоги пересчитываются в режиме «Управление итогами», и замедление отчётов по остаткам может быть связано именно с ними.
Как проверить результат
Нет строк с ошибками
Сообщения о повреждённых таблицах или битых ссылках
Заметно быстрее, чем до процедуры
Изменений нет — искать причину в статистике, итогах или оборудовании
Время проведения вернулось к обычному
Проведение по-прежнему медленное — нужна диагностика запросов и регистров
FAQ
Как часто нужно делать переиндексацию базы 1С?
Жёсткой нормы нет: ориентируйтесь на симптомы и объём изменений данных. Для активно используемых баз переиндексацию обычно включают в регламент обслуживания — например, еженедельно или ежемесячно в нерабочее время, вместе с обновлением статистики. Небольшим базам достаточно запуска по факту замедления.
Можно ли выполнять переиндексацию при работающих пользователях?
Через конфигуратор — нет, ТиИ требует монопольного доступа. В клиент-серверном варианте перестроение индексов средствами СУБД технически возможно без выгона пользователей (например, REBUILD WITH ONLINE в подходящих редакциях MS SQL), но операция нагружает сервер, поэтому её планируют на период минимальной активности.
Чем переиндексация отличается от пересчёта итогов?
Переиндексация перестраивает индексы таблиц — структуры ускоренного поиска записей. Пересчёт итогов обновляет агрегированные данные регистров (остатки и обороты), которые используются отчётами. Это независимые операции, и замедление отчётов по остаткам часто требует именно пересчёта итогов, а не индексации.
База не открывается даже в конфигураторе. Поможет индексация?
Напрямую нет — сначала проверьте физическую целостность файла утилитой chdbfl.exe (для файловой базы). Если она исправила ошибки и база открылась, затем выполните ТиИ с реиндексацией и проверкой целостности. При серверной базе аналогичную проверку делайте средствами СУБД.
Сколько времени занимает переиндексация?
Зависит от размера базы, скорости дисков и загрузки сервера. Небольшая файловая база обрабатывается за минуты, база в десятки гигабайт — за часы. Планируйте окно обслуживания с запасом и не прерывайте процесс, даже если он кажется зависшим.
Удалит ли переиндексация или исправит мои данные?
Сама по себе реиндексация не изменяет данные — она перестраивает только служебные индексы. Данные могут изменяться при выборе в ТиИ режима «Тестирование и исправление» с опциями исправления (например, создание объектов по битым ссылкам). Поэтому для диагностики выбирайте режим без исправления и всегда работайте после резервного копирования.
Что важно запомнить
Переиндексация — безопасная регламентная операция при соблюдении трёх условий: резервная копия, монопольный доступ, непрерываемый процесс. Файловые базы обслуживают через ТиИ и chdbfl, серверные — через ТиИ или средства СУБД. Результат проверяйте по протоколу без ошибок и реальной скорости типовых операций.