Как сделать реструктуризацию базы данных 1С

· 9 мин

Содержание

Реструктуризацию базы 1С запускают из конфигуратора: Администрирование → Тестирование и исправление, галочка «Реструктуризация таблиц информационной базы». Это перестройка физических таблиц и индексов — она убирает «мусор», накопленный после правок конфигурации и ежедневной работы, и возвращает базе скорость.

У слова два близких значения. Первое — техническое: платформа сама перестраивает таблицы, когда вы меняете структуру метаданных (добавили реквизит, изменили тип). Второе — обслуживающее: вы запускаете реструктуризацию и реиндексацию вручную, чтобы ускорить разбухшую базу. Ниже — про второе, но первое тоже затронем, потому что путают их часто.

Способ зависит от того, файловая у вас база или клиент-серверная. Для файловой чаще помогает выгрузка и загрузка через .dt. Для серверной на MS SQL или PostgreSQL главный эффект даёт обслуживание на уровне самой СУБД. Разберём оба пути.

Когда базе действительно нужна реструктуризация

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

  • 📉 Открытие списков, проведение документов и формирование отчётов стали заметно медленнее, хотя объём данных вырос незначительно.
  • 💾 Файл базы 1Cv8.1CD разросся непропорционально данным — например, после массового удаления документов размер не уменьшился.
  • 🔧 Недавно было крупное обновление конфигурации с изменением структуры: добавлены реквизиты, изменены типы, перекроены регистры.
  • ⚠️ В журнале регистрации всплывают ошибки чтения таблиц или индексов, база иногда «вылетает».

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

Перед обслуживанием сравните текущий размер базы и примерный объём реальных данных. Если файл .1CD в разы больше ожидаемого — выгрузка-загрузка или сжатие таблиц дадут ощутимый результат.

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

Любая реструктуризация перестраивает таблицы, поэтому выполняется только в монопольном режиме — когда в базе нет ни одного активного сеанса.

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

Порядок подготовки:

  1. Предупредите пользователей и дождитесь, пока все выйдут. В клиент-серверном варианте завершить сеансы можно из консоли администрирования или командой rac session list для контроля, кто ещё в базе.
  2. Сделайте резервную копию. Для файловой базы достаточно скопировать каталог с файлом 1Cv8.1CD при закрытой базе. Надёжнее — выгрузить в .dt через конфигуратор.
  3. Убедитесь, что на диске свободно места не меньше, чем занимает сама база, — реструктуризация создаёт временные таблицы.
  4. Закройте все клиентские сеансы 1С:Предприятия на этом компьютере и сервере.

Для клиент-серверной базы монопольный доступ нужен именно на время перестройки структуры. Запуск процедуры при активных пользователях либо не стартует, либо оборвёт их сеансы — делайте это в нерабочее окно.

Чек-лист подготовки к реструктуризации
Выполнено: 0 / 5

Способы реструктуризации и когда какой выбирать

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

СпособЧто делаетДля какой базыЭффект на скорость
Реиндексация таблиц (ТиИ)Пересоздаёт индексыФайловая и сервернаяСредний, быстрый запуск
Реструктуризация таблиц (ТиИ)Перестраивает структуру таблицФайловая и сервернаяВысокий при «кривой» структуре
Сжатие таблиц (ТиИ)Убирает пустоты после удаленийВ основном файловаяУменьшает размер файла
Выгрузка/загрузка .dtПолная пересборка базы с нуляПрежде всего файловаяМаксимальный для файловой
Обслуживание СУБДReindex, статистика, VACUUMКлиент-сервернаяМаксимальный для серверной

Логика выбора простая:

  • 🗂 Файловая база разрослась и тормозит → выгрузка и загрузка .dt либо «Сжатие таблиц». Это дефрагментирует файл .1CD.
  • 🖥 Клиент-серверная база на MS SQL или PostgreSQL → обслуживание на уровне СУБД (реиндексация, обновление статистики). Выгрузка .dt для серверной базы структуру SQL не оптимизирует.
  • 🧩 После крупного обновления структуры метаданных → «Реиндексация» плюс «Реструктуризация таблиц» в тестировании и исправлении.
Как выбрать способ реструктуризации?

Реструктуризация через «Тестирование и исправление» в конфигураторе

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

  1. Откройте базу в режиме Конфигуратор.
  2. Меню Администрирование → Тестирование и исправление.
  3. В открывшемся окне отметьте нужные проверки. Для ускорения базы обычно включают:
    • Реиндексация таблиц информационной базы — пересоздаёт все индексы;
    • Реструктуризация таблиц информационной базы — перестраивает структуру таблиц;
    • Сжатие таблиц информационной базы — убирает пустоты после удалённых объектов.
  4. Выберите режим внизу окна: «Тестирование и исправление» (а не только «Тестирование») — иначе платформа лишь сообщит о проблемах, но не исправит их.
  5. Для проверок целостности задайте реакцию на ошибки — например, создавать объекты значениями по умолчанию или удалять битые ссылки. По умолчанию платформа предлагает безопасный вариант.
  6. Нажмите Выполнить.

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

Отдельно стоит автоматическая реструктуризация — та, что запускается сама при обновлении конфигурации базы данных (Конфигурация → Обновить конфигурацию базы данных, клавиша F7). Когда вы добавляете реквизит, меняете тип или перестраиваете регистр, платформа перед принятием изменений перестраивает затронутые таблицы. Это та же механика, только применяется к изменённым объектам, а не ко всей базе. Специально дублировать её ручной реструктуризацией не нужно — ручная нужна при разросшейся базе и ошибках структуры, а не после каждой доработки.

Если нужно только проверить физическую целостность файловой базы без полного ТиИ — используйте утилиту chdbfl.exe из каталога установки платформы (папка bin). Она работает с закрытой базой и правит низкоуровневые ошибки файла .1CD.

Тестирование и исправление можно запустить и пакетно, без интерактива — ключом /IBCheckAndRepair при запуске конфигуратора в режиме DESIGNER. Точный набор параметров смотрите в документации по пакетному режиму платформы.

Выгрузка и загрузка .dt для файловой базы

Для файловой базы это самый радикальный и самый эффективный способ. Платформа создаёт новую базу и переносит в неё все данные — файл .1CD собирается заново, без накопленной фрагментации.

Выгрузка:

  1. Откройте базу в конфигураторе в монопольном режиме.
  2. Меню Администрирование → Выгрузить информационную базу.
  3. Укажите путь и имя файла выгрузки с расширением .dt.
  4. Дождитесь завершения. Полученный файл — это полный слепок базы.

Загрузка:

  1. При необходимости создайте чистую базу или используйте текущую.
  2. Меню Администрирование → Загрузить информационную базу.
  3. Выберите ранее сохранённый .dt.
  4. Подтвердите замену — всё текущее содержимое базы будет полностью перезаписано данными из файла.

После загрузки файл .1CD обычно заметно уменьшается, а операции ускоряются.

Выгрузка-загрузка .dt — универсальный приём для файловых баз, но для клиент-серверных он переносит данные, а не оптимизирует хранилище SQL. Для серверной базы после такой операции всё равно нужно обслуживание на уровне СУБД.

Если файловая база стабильно разрослась (ориентировочно за несколько гигабайт) и тормозит даже после пересборки — это сигнал, что ей тесно в файловом варианте. Разумное решение — перевод на клиент-серверную схему с MS SQL или PostgreSQL.

Обслуживание серверной базы: PostgreSQL и MS SQL

Для клиент-серверной базы реструктуризация средствами 1С — только часть работы. Основной прирост скорости даёт регламентное обслуживание самой СУБД: перестроение индексов, обновление статистики, очистка.

MS SQL Server. Главные операции:

  • 🔁 Перестроение (rebuild) или реорганизация индексов — убирает фрагментацию.
  • 📊 Обновление статистики (UPDATE STATISTICS) — помогает оптимизатору строить правильные планы запросов.
  • 🧹 Контроль размера журнала транзакций — при модели восстановления Full он растёт, если не делать бэкап журнала.

Настраивают это планом обслуживания (Maintenance Plan) или скриптами по расписанию в нерабочее время.

PostgreSQL. Ключевые операции:

  • 🧹 VACUUM — освобождает место от удалённых версий строк; VACUUM FULL физически сжимает таблицу.
  • 📊 ANALYZE — обновляет статистику для планировщика.
  • 🔁 REINDEX — перестраивает индексы.

VACUUM FULL и REINDEX блокируют таблицы на время работы — запускайте только когда пользователи вышли из базы. Обычный VACUUM и ANALYZE можно выполнять по расписанию, они работают мягче.

Разовое обслуживание ускорит базу сразу, но без регламента фрагментация вернётся. Настройте автоматическое обслуживание СУБД по расписанию — это снимает вопрос «1С опять тормозит» надолго.

Важный нюанс для серверных баз: 1С хранит данные в таблицах SQL под собственными служебными именами, поэтому ручное вмешательство в структуру этих таблиц средствами СУБД недопустимо — менять набор полей и индексы должна только платформа. На уровне СУБД безопасно делать ровно обслуживающие операции: перестроение индексов, обновление статистики и очистку. Всё, что касается структуры (добавление реквизитов, изменение типов), делается в конфигураторе, после чего платформа сама перестроит нужные таблицы.

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

Чтобы убедиться, что процедура помогла, а не просто отняла вечер, сравните состояние до и после по нескольким точкам:

  • 📏 Размер базы. Для файловой — размер файла .1CD до и после. Для серверной — размер базы данных в СУБД.
  • ⏱ Скорость типовых операций. Засеките открытие тяжёлого списка, проведение документа, формирование оборотно-сальдовой ведомости до и после.
  • 📋 Журнал регистрации. После процедуры ошибок чтения таблиц и индексов быть не должно.
  • ✅ Повторный прогон тестирования. Запустите ТиИ ещё раз только в режиме «Тестирование» — он не должен находить новых проблем целостности.

Если скорость не изменилась, значит, причина была не в структуре таблиц. Переходите к анализу запросов, настроек сервера и оборудования.

Частые ошибки при реструктуризации базы

Диагностика: выберите симптом

Частые вопросы

Чем реструктуризация отличается от реиндексации?
Реиндексация пересоздаёт индексы таблиц — это быстрее и мягче. Реструктуризация перестраивает саму структуру таблиц, применяется при изменении метаданных или повреждении структуры. Часто их запускают вместе в одном окне тестирования и исправления.
Нужна ли реструктуризация после каждого обновления конфигурации?
Специально запускать — нет. Платформа сама перестраивает изменённые таблицы при обновлении конфигурации базы данных. Ручная реструктуризация нужна, когда база заметно тормозит или появляются ошибки структуры.
Можно ли делать реструктуризацию без выгона пользователей?
Нет. Перестройка таблиц требует монопольного доступа. При активных сеансах процедура либо не стартует, либо оборвёт работу пользователей. Планируйте её на нерабочее время.
Сколько времени занимает процедура?
Зависит от размера базы и способа. Небольшая файловая база — минуты, крупная серверная с полной реструктуризацией — от десятков минут до нескольких часов. Планируйте запас по времени.
Поможет ли реструктуризация, если тормозит один отчёт?
Скорее нет. Локальная медлительность одного отчёта или рабочего места обычно связана с запросом, правами, сетью или памятью. Реструктуризация выравнивает общую скорость базы, а не отдельной операции.