Генеральная уборка базы 1С: от диагностики до плана обслуживания SQL

· 11 мин

Содержание

Привести 1С в порядок — значит пройти пять шагов в строгой последовательности: сделать резервную копию, найти, что раздуло базу, удалить мусор (помеченные объекты, старый журнал регистрации, кэш), прогнать Тестирование и исправление в Конфигураторе и настроить регламентное обслуживание: задания в 1С и план обслуживания на SQL-сервере. Для файловой базы последний шаг заменяет сжатие таблиц и перенос на быстрый диск.

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

Диагностика: что именно не в порядке в базе 1С

Перед любой чисткой сделайте выгрузку. В Конфигураторе: Администрирование → Выгрузить информационную базу, файл .dt. Для клиент-серверной базы надёжнее штатный бэкап средствами СУБД.

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

Дальше соберите факты. Без них «ускорение» превращается в набор случайных действий.

📏 Размер базы и самые тяжёлые таблицы. Для файловой базы — размер файла 1Cv8.1CD в каталоге базы. Для SQL — отчёт Disk Usage by Top Tables в SQL Server Management Studio или запрос ниже.

-- MS SQL: 20 самых больших таблиц базы
SELECT TOP 20
    t.name AS table_name,
    SUM(a.total_pages) * 8 / 1024 AS size_mb,
    MAX(p.rows) AS rows_count
FROM sys.tables t
JOIN sys.partitions p ON t.object_id = p.object_id
JOIN sys.allocation_units a ON p.partition_id = a.container_id
GROUP BY t.name
ORDER BY size_mb DESC;

Имена вида _InfoRg12345 или _AccumRg678 ничего не говорят. Сопоставить их с объектами конфигурации помогает функция платформы ПолучитьСтруктуруХраненияБазыДанных(): её можно вызвать во внешней обработке и вывести имя таблицы рядом с именем метаданных.

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

⏱ Где тормозит. Полезно разделить три ситуации:

СимптомВероятная причинаС чего начать
Медленно у всех, во всех операцияхСервер, диск, статистика SQLРаздел про SQL и железо
Медленно у одного сотрудникаКэш, профиль, сеть до базыОчистка кэша
Медленно в одном отчёте или документеНеоптимальный запрос, итогиПересчёт итогов, замер производительности
База быстро растётЖурнал регистрации, история в регистрах, версии объектовЧистка данных

Для точечного поиска узкого места в Конфигураторе есть Отладка → Замер производительности: запустите операцию в режиме отладки и посмотрите, какая строка кода занимает больше всего времени.

Чистка данных: помеченные объекты, журнал регистрации, кэш

Удаление помеченных на удаление объектов

Пометка на удаление не удаляет документ: запись остаётся в базе и мешает поиску. Удаляют помеченные так: Администрирование → Обслуживание, группа «Корректировка данных», команда Удаление помеченных объектов.

  1. Выберите режим с выбором объектов, чтобы видеть, что именно будет удалено.
  2. Запустите поиск. Программа проверит ссылки на каждый объект.
  3. Объекты, на которые кто-то ссылается, останутся. Список таких ссылок покажут — по нему видно, что мешает.
  4. Удалите остальные.

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

Сокращение журнала регистрации

Журнал регистрации часто весит больше самих данных. Особенно если включена детальная запись всех событий.

В Конфигураторе: Администрирование → Настройка журнала регистрации. Здесь два действия:

  • 📌 Уровень регистрации. Для обычной работы хватает «Регистрировать ошибки и предупреждения» или «Регистрировать ошибки, предупреждения и информацию». Режим «Регистрировать все события» включают на время расследования.
  • ✂️ Сократить. Кнопка Сократить удаляет события до указанной даты. Перед этим можно сохранить удаляемую часть в отдельный файл — пригодится, если журнал нужен для проверки.

В той же форме включается разделение журнала по периодам. Тогда старые файлы журнала лежат отдельно и их проще архивировать.

Очистка кэша пользователя

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

%APPDATA%\1C\1cv8
%LOCALAPPDATA%\1C\1cv8

Закройте все окна 1С у пользователя и удалите вложенные папки с именами-GUID. Файлы с настройками списка баз (ibases.v8i в %APPDATA%\1C\1CEStart) не трогайте. Другой способ — добавить параметр /ClearCache в строку запуска базы в окне выбора баз (Изменить → Дополнительные параметры запуска) и один раз зайти.

Свертка базы и новая база с остатками

Когда в базе 8–10 лет учёта, а прошлые годы нужны только для справки, помогает свертка. В БП 3.0 она запускается из Администрирование → Обслуживание, команда Свертка информационной базы: документы до выбранной даты заменяются документами ввода остатков.

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

Альтернатива проще и безопаснее: оставить старую базу архивом только для чтения, а в новой начать учёт с ввода остатков.

Тестирование и исправление информационной базы

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

Запуск: Конфигуратор → Администрирование → Тестирование и исправление.

ФлажокЧто делаетКогда включать
Реиндексация таблиц информационной базыПерестраивает индексыПри ошибках поиска, после сбоев питания
Проверка логической целостностиИщет нарушения структуры таблицПочти всегда
Проверка ссылочной целостностиИщет «битые» ссылки на несуществующие объектыПочти всегда
Пересчёт итоговЗаново считает итоги регистровПри расхождении оборотов и остатков
Сжатие таблиц информационной базыУплотняет таблицы, убирает пустое местоФайловая база после удаления данных
Реструктуризация таблиц информационной базыПересоздаёт таблицы целикомДолго; когда остальное не помогло

Ниже флажков — режим. «Только тестирование» показывает проблемы без изменений. «Тестирование и исправление» сразу их чинит.

Для битых ссылок выберите действие:

  • 🧩 Создавать объекты — платформа создаст заглушки «Объект не найден». Данные документов не теряются, заглушки потом можно разобрать вручную.
  • 🗑 Очищать ссылки — поле станет пустым. Быстрее, но информацию о связи уже не вернуть.
  • ⏸ Не изменять — только показать.

💡 Начните с «Только тестирование» и включите сохранение протокола. Если в протоколе десятки тысяч битых ссылок на один и тот же объект, это повод разобраться с причиной (например, неудачный обмен), а не чинить вслепую.

Если Конфигуратор не открывает файловую базу

Для повреждённой файловой базы есть утилита chdbfl.exe в папке bin установленной платформы, например C:\Program Files\1cv8\8.3.24.1691\bin. Она работает без запуска 1С: укажите файл 1Cv8.1CD, поставьте флажок исправления ошибок и запустите проверку. После неё обычно всё равно прогоняют полное тестирование в Конфигураторе.

Как ускорить файловую базу 1С

Файловый вариант не любит сеть и большие объёмы. Что реально помогает:

  1. Перенесите базу на SSD. Для файловой базы скорость диска важнее процессора.
  2. Добавьте каталог базы в исключения антивируса. Проверка каждого обращения к 1Cv8.1CD замедляет работу в разы.
  3. Работайте через веб-сервер вместо сетевой папки. Публикация базы на IIS или Apache и подключение по http снимает проблемы с блокировками файла по SMB.
  4. Сжимайте таблицы после чистки. Удаление помеченных не уменьшает файл: место освобождается внутри. Флажок «Сжатие таблиц информационной базы» в тестировании возвращает его.
  5. Перезагрузите базу через .dt. Выгрузка и загрузка в новый пустой каталог создаёт файл заново, без фрагментации. Загрузка .dt полностью заменяет данные — делайте в новый каталог и проверяйте результат до переключения пользователей.

Не копируйте 1Cv8.1CD, пока в базе кто-то работает: получится несогласованная копия. Если после сбоя в каталоге остался файл 1Cv8.cdn, удаляйте его только когда точно никто не подключён — иначе оборвутся сеансы и возможна порча данных.

Когда пользователей больше десятка и база весит десятки гигабайт, файловый режим исчерпывает себя. Правильный шаг — перейти на клиент-серверный вариант с MS SQL или PostgreSQL.

Регламентные и фоновые задания: что настроить

Регламентные задания выполняются сами по расписанию. Одни нужны, другие годами падают с ошибкой и грузят сервер.

Где смотреть: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания.

Что проверить в списке

  • ❌ Задания с ошибками. В колонке состояния видно последнее выполнение. Откройте задание, посмотрите текст ошибки. Частый случай — задания интернет-поддержки или обменов, которые не настроены, но включены.
  • 🔁 Слишком частые задания. Задание, которое раз в минуту опрашивает пустой сервис, создаёт лишние сеансы. Расписание можно увеличить в карточке задания.
  • 🔤 Полнотекстовый поиск. Обновление индекса полнотекстового поиска полезно, но тяжёлое. Если поиском никто не пользуется, его отключают в Администрирование → Общие настройки (группа полнотекстового поиска). Если пользуются — переносите слияние индекса на ночь.
  • 🧾 Удаление устаревших данных. В типовых конфигурациях есть задания, которые чистят старые версии объектов, журналы обменов и временные файлы. Проверьте, что они включены.

💡 Перед отключением задания уточните, за что оно отвечает. Отключённое задание загрузки курсов валют молча оставит базу со старыми курсами.

Версионирование объектов

Если включена история изменений документов и справочников, база растёт заметно. Настройки — в Администрирование → Общие настройки, группа «Версионирование объектов». Там же можно задать срок хранения версий и удалить устаревшие. Оставьте версионирование для действительно важных объектов: договоров, номенклатуры, кадровых документов.

Итоги регистров

Для регистров бухгалтерии и накопления платформа хранит итоги по периодам. Если период рассчитанных итогов «отстал», отчёты считают остатки по движениям и тормозят.

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

Обслуживание SQL: индексы, статистика и журнал транзакций

В клиент-серверной базе большая часть «тормозов» лечится на стороне СУБД. 1С сама индексы SQL не обслуживает.

Обновление статистики

Статистика подсказывает оптимизатору SQL, как выполнять запрос. Устаревшая статистика — главная причина внезапного замедления отчётов, которые вчера летали.

-- MS SQL: обновить статистику по всей базе
USE [buh_base];
EXEC sp_updatestats;

-- сбросить кэш планов, чтобы запросы пересобрались с новой статистикой
DBCC FREEPROCCACHE;

Обновлять статистику стоит ежедневно ночью.

Перестроение индексов

Индексы фрагментируются от постоянной записи. Узнать фрагментацию:

SELECT OBJECT_NAME(ips.object_id) AS table_name,
       i.name AS index_name,
       ips.avg_fragmentation_in_percent,
       ips.page_count
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') ips
JOIN sys.indexes i ON ips.object_id = i.object_id AND ips.index_id = i.index_id
WHERE ips.page_count > 1000
ORDER BY ips.avg_fragmentation_in_percent DESC;

Общепринятый ориентир: при фрагментации 5–30% индекс реорганизуют (REORGANIZE), выше 30% — перестраивают (REBUILD). Маленькие таблицы до 1000 страниц можно не трогать.

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

Удобнее всего настроить всё мастером планов обслуживания (Management → Maintenance Plans в SQL Server Management Studio): задачи обновления статистики, реорганизации и перестроения индексов, проверки целостности и бэкапа.

Журнал транзакций

Если модель восстановления базы «Full», а бэкап журнала транзакций не делается, файл .ldf растёт бесконечно. Два решения:

  • настроить регулярный бэкап журнала транзакций — если нужна точка восстановления на любой момент;
  • перевести базу в модель «Simple» — если хватает ежедневных полных копий.

PostgreSQL

Для PostgreSQL роль статистики и очистки выполняют VACUUM и ANALYZE. Проверьте, что включён autovacuum, а для больших таблиц дополнительно настройте ночной запуск:

VACUUM (ANALYZE, VERBOSE);

Сервер 1С

Рабочие процессы сервера 1С со временем накапливают память. В консоли администрирования серверов в свойствах кластера можно задать интервал перезапуска рабочих процессов и допустимый объём памяти — тогда платформа сама перезапускает «распухшие» процессы.

Ручной перезапуск службы агента сервера 1С обрывает сеансы всех пользователей. Делайте это вне рабочего времени и заранее предупредите сотрудников.

График: как поддерживать порядок в 1С постоянно

Разовая уборка помогает на пару месяцев. Чтобы база не зарастала снова, закрепите регламент.

ПериодичностьЧто делать
ЕжедневноПолный бэкап; обновление статистики SQL; контроль ошибок регламентных заданий
ЕженедельноРеорганизация индексов; просмотр журнала регистрации по ошибкам
ЕжемесячноУдаление помеченных объектов; установка периода итогов; проверка размера базы
Раз в кварталТестирование и исправление на копии; сокращение журнала регистрации
Раз в годРешение о свертке или новой базе; ревизия версионирования и обменов
Ежемесячное обслуживание базы 1С
Выполнено: 0 / 6

💡 Записывайте размер базы и журнала раз в месяц в простую таблицу. Резкий рост за месяц сразу покажет, что какая-то подсистема пишет лишнее.

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

Можно ли запускать тестирование и исправление, пока пользователи работают?
Нет. Тестированию и исправлению нужен монопольный доступ: все сеансы и фоновые задания должны быть завершены. Планируйте его на нерабочее время.
Почему после удаления помеченных объектов файл базы не уменьшился?
Место освобождается внутри файла, но сам файл не сжимается. Для файловой базы запустите тестирование с флажком «Сжатие таблиц информационной базы» или перезагрузите базу через .dt. В SQL размер файла данных уменьшают только при необходимости, частое сжатие файлов вредит производительности.
Сколько должен весить нормальный журнал регистрации?
Единой нормы нет. Тревожный признак — журнал больше самой базы или рост на гигабайты за месяц. Тогда снизьте уровень регистрации и сократите журнал до нужной даты.
Помогает ли пересчёт итогов ускорить отчёты?
Помогает, если итоги были рассчитаны не до конца или период итогов давно не сдвигали. Если отчёт тормозит из-за большого объёма данных или плохой статистики SQL, пересчёт не изменит ситуацию.
Нужно ли чистить кэш у всех пользователей сразу?
Нет. Кэш чистят у тех, у кого есть проблема: странное поведение форм, ошибки после обновления, торможение только на одном компьютере. Массовая очистка лишь замедлит первый запуск у всех.