Почему база 1С тормозит и разрастается и что с этим делать по шагам
Содержание
Чтобы оптимизировать базу 1С, сначала найдите, что именно её раздувает или тормозит, и только потом чистите. Для файловой базы основной набор — выгрузка в .dt, «Тестирование и исправление» со сжатием таблиц и очистка служебных данных. Для клиент-серверной — регламентное обслуживание СУБД: обновление статистики, перестройка индексов, контроль журнала транзакций.
Частое заблуждение — что базу ускоряет любая «галочка» в Конфигураторе, поставленная раз в неделю. На деле половина проблем со скоростью живёт не в 1С: устаревшая статистика SQL, раздутый журнал регистрации, тысячи неудалённых версий объектов или забитые таблицы регистрации изменений обмена. Ниже — порядок, в котором это проверяют практики.
С чего начать: диагностика базы 1С перед оптимизацией
Не запускайте обработки вслепую. Сначала ответьте на три вопроса: что медленно, где занято место и сколько пользователей это затрагивает.
Что именно тормозит
- 🐢 Всё и у всех — смотрите сервер, диск, СУБД, сеть.
- 📄 Одна операция (проведение документа, конкретный отчёт) — дело в данных или коде, нужен замер.
- 👤 Один пользователь — часто помогает очистка клиентского кэша: запуск с ключом
/ClearCacheили удаление папок кэша в%APPDATA%\1C\1cv8. - 🕗 Только в определённые часы — ищите пересечение с регламентными заданиями, обменами, резервным копированием.
Для замера одной операции в Конфигураторе есть замер производительности: Отладка → Замер производительности при запуске в режиме отладки. Он показывает строки кода, на которые ушло больше всего времени. Для системного анализа на сервере включают технологический журнал через файл logcfg.xml.
Где занято место
В файловом варианте всё лежит в одном файле 1Cv8.1CD. Его размер сам по себе мало что говорит: внутри может быть до половины пустых страниц после удалений.
В клиент-серверном варианте размер таблиц видно в СУБД. Для MS SQL Server запрос показывает самые крупные таблицы:
SELECT TOP 20
t.name AS table_name,
SUM(p.rows) AS rows_count,
SUM(a.total_pages) * 8 / 1024 AS size_mb
FROM sys.tables t
JOIN sys.indexes i ON t.object_id = i.object_id
JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN sys.allocation_units a ON p.partition_id = a.container_id
WHERE i.index_id IN (0, 1)
GROUP BY t.name
ORDER BY size_mb DESC;
Имена вроде _AccumRg1234 или _InfoRg567 ничего не говорят бухгалтеру. Сопоставить их с объектами конфигурации помогает метод платформы ПолучитьСтруктуруХраненияБазыДанных(): он возвращает таблицу соответствия имён хранения и метаданных.
Типичные лидеры по размеру: журнал регистрации (хранится отдельно, в каталоге базы), таблицы версий объектов, регистры сведений с историей, таблицы регистрации изменений планов обмена (_...ChngR), присоединённые файлы, хранящиеся в базе.
Тестирование и исправление информационной базы в Конфигураторе
Встроенный инструмент находится в Конфигураторе: Администрирование → Тестирование и исправление. Для его запуска нужен монопольный доступ — все пользователи должны выйти из базы, фоновые и регламентные задания должны быть остановлены.
Перед запуском сделайте полную резервную копию базы . Исправление может удалить «битые» объекты или создать вместо них объекты-заглушки, и вернуть их без копии нельзя.
Какие режимы выбрать
| Режим | Что делает | Когда включать |
|---|---|---|
| Реиндексация таблиц | Пересоздаёт индексы | Ошибки поиска, «пропадающие» элементы |
| Проверка логической целостности | Проверяет структуру хранения | При сбоях, после аварийного отключения |
| Проверка ссылочной целостности | Ищет «битые» ссылки на несуществующие объекты | После ручных удалений, сбоев обмена |
| Пересчёт итогов | Пересчитывает итоги регистров | Расхождения в остатках, медленные отчёты по остаткам |
| Сжатие таблиц | Убирает пустые записи и страницы | Файловая база после массовых удалений |
| Реструктуризация таблиц | Пересобирает таблицы заново | Редко, при подозрении на повреждение структуры |
Ниже галочек выбирается режим: только тестирование или тестирование с исправлением. Начните с «Тестирования» — увидите масштаб проблем без изменений в данных.
Битые ссылки: создавать или очищать
Для найденных ссылок на несуществующие объекты есть варианты действий. Безопаснее «Создавать объекты»: платформа добавит пустые элементы-заглушки, и вы потом вручную разберётесь, что с ними делать. Вариант «Очищать ссылки» опустошит реквизиты документов, а это может изменить учёт задним числом.
Полная проверка с реструктуризацией на базе в десятки гигабайт идёт часами. Запускайте её вечером или в выходной, когда пользователям не нужен доступ.
Утилита chdbfl.exe для файловой базы
Если файловая база не открывается даже в Конфигураторе, используют утилиту chdbfl.exe из каталога bin установленной платформы, например C:\Program Files\1cv8\8.3.xx.xxxx\bin\chdbfl.exe. Она проверяет физическую целостность файла 1Cv8.1CD и умеет исправлять обнаруженные ошибки. Работает только с закрытой базой.
Сжатие таблиц и уменьшение размера файла базы
Удаление документов в 1С не уменьшает файл 1Cv8.1CD — освобождённое место остаётся внутри как пустые страницы. Есть два способа его вернуть.
Способ 1. Выгрузка и загрузка .dt
Самый надёжный способ «упаковать» файловую базу :
- В Конфигураторе выполните
Администрирование → Выгрузить информационную базуи сохраните файл.dt. - Создайте новую пустую базу в другом каталоге.
- Откройте её в Конфигураторе и выполните
Администрирование → Загрузить информационную базу. - Проверьте работу новой базы и только потом подменяйте старую в списке баз.
Загрузка .dt полностью заменяет данные базы-приёмника, поэтому грузите только в новую пустую базу или в ту, которую не жалко. На выходе получается плотный файл без пустот. Экономия на «старой» базе бывает в разы.
Способ 2. Сжатие через тестирование
Галочка «Сжатие таблиц информационной базы» в режиме тестирования делает похожую работу на месте. Это быстрее, чем выгрузка, но эффект обычно слабее.
Для клиент-серверной базы сжатие средствами 1С почти ничего не даёт: местом управляет СУБД. Там после крупных удалений сжимают файлы данных средствами СУБД, а не 1С.
Сжимать файлы данных MS SQL (DBCC SHRINKFILE) регулярно не стоит: операция фрагментирует индексы. Делайте это разово после большой чистки, и сразу после — перестройку индексов.
Очистка и архивация старых данных в базе 1С
Если база реально большая из-за полезных данных за много лет, сжатие не поможет. Нужно убрать то, что не используется в работе.
Что чистить в первую очередь
- 🗂️ Журнал регистрации. В Конфигураторе:
Администрирование → Настройка журнала регистрации. Там задают уровень записи и сокращают журнал, сохранив удаляемые события в отдельный файл. На старых базах журнал весит больше самих данных. - 🕘 Версии объектов. В типовых конфигурациях на БСП версионирование включается и очищается в разделе
Администрирование → Общие настройки. Удаление устаревших версий за прошлые годы часто освобождает гигабайты. - 🔁 Регистрация изменений в обменах. Если узел обмена давно не работает , а изменения для него копятся, таблица регистрации растёт без конца. Удалите неиспользуемый узел или снимите регистрацию для него.
- 🗑️ Помеченные на удаление объекты. В БП 3.0 и ЗУП 3.1 —
Администрирование → Обслуживание, группа «Корректировка данных», команда «Удаление помеченных объектов». Это ещё и ускоряет подборы и списки. - 📎 Файлы в базе. Присоединённые сканы и PDF лучше хранить в томах на диске. Перенос файлов из базы в тома настраивается в разделе администрирования работы с файлами.
Свёртка базы
Свёртка заменяет движения закрытых периодов остатками на дату свёртки. В типовых конфигурациях на БСП есть обработка «Свёртка информационной базы» в разделе Администрирование → Обслуживание. На старых релизах её нет — тогда остаётся создание новой базы с переносом начальных остатков.
Свёртка необратима. Перед ней:
- Сделайте и проверьте резервную копию — она станет вашим архивом прошлых лет.
- Закройте все периоды, которые сворачиваете: сданная отчётность, проведённое закрытие месяца .
- Проверьте свёртку на копии базы и сверьте оборотно-сальдовую ведомость до и после.
Архивную копию храните отдельно, подключите в списке баз с понятным названием («Архив до 2022») и уберите у пользователей права на запись в неё.
Итоги регистров
Для регистров накопления и бухгалтерии влияет период рассчитанных итогов. Если итоги рассчитаны по давнюю дату, отчёты на текущую дату считают остатки «вперёд» по всем движениям. Управлять этим можно через стандартную функцию «Управление итогами» (в режиме предприятия: меню «Все функции» или «Функции для технического специалиста», группа «Стандартные»). В типовых конфигурациях итоги обычно поддерживает регламентное задание — проверьте, что оно не выключено.
Настройка сервера 1С и СУБД для ускорения базы
Для клиент-серверной базы основной эффект обычно даёт правильное обслуживание СУБД, а не настройки внутри 1С. Ниже — проверенный минимум.
MS SQL Server
- 📊 Обновление статистики — ежедневно ночью. Без неё оптимизатор строит плохие планы запросов, и отчёт, который вчера шёл 10 секунд, сегодня идёт 5 минут.
- 🧱 Перестройка или реорганизация индексов — раз в неделю. При фрагментации до 30% обычно хватает
REORGANIZE, выше —REBUILD. - 📜 Модель восстановления. При модели
FULLжурнал транзакций растёт, пока вы не делаете резервное копирование журнала. Нет бэкапов журнала — выберитеSIMPLE, иначе диск закончится. - 🧠 Ограничение памяти. Задайте
max server memory, оставив операционной системе и процессам 1С свою часть. По умолчанию SQL забирает почти всю память, и сервер 1С начинает свопиться. - ⚙️ MAXDOP. Для баз 1С распространена рекомендация
max degree of parallelism = 1: запросы 1С короткие, и параллелизм чаще мешает.
Пример плана в виде скрипта, который удобно поставить в задание SQL Agent:
USE [buh_base];
EXEC sp_updatestats;
ALTER INDEX ALL ON [dbo].[_AccumRg1234] REORGANIZE;
-- для таблиц с высокой фрагментацией:
-- ALTER INDEX ALL ON [dbo].[_AccumRg1234] REBUILD;
Чаще настраивают «Планы обслуживания» в SQL Server Management Studio — мастер делает то же самое без ручных скриптов.
Полная перестройка индексов на больших таблицах блокирует их и нагружает диск. Ставьте её на ночь, вне окна работы пользователей и вне окна резервного копирования.
PostgreSQL
Для PostgreSQL сборки под 1С ключевое — работа автоочистки и регулярный VACUUM ANALYZE. Без него таблицы набирают «мёртвые» строки, растут и тормозят. Ручной запуск:
VACUUM ANALYZE;
Параметры памяти (shared_buffers, work_mem, effective_cache_size) подбирают под объём RAM сервера. Значения по умолчанию рассчитаны на маленькую машину и для базы 1С почти всегда малы.
Сервер 1С и железо
- 💾 Диск. Файлы СУБД, журналы транзакций и
tempdbна SSD. Это часто даёт больше, чем любые настройки. - 🔒 Режим блокировок. Конфигурации в режиме автоматических блокировок на большом числе пользователей ловят ожидания. Типовые актуальные конфигурации уже работают в управляемом режиме — переводить их самостоятельно не нужно.
- 🌐 Сеть. Файловую базу по сети для 5–10 и более активных пользователей лучше переводить на клиент-серверный вариант. Сетевая папка с
1Cv8.1CD— частая причина «тормозов у всех».
Перезапуск рабочих процессов или службы сервера 1С иногда снимает накопленную утечку памяти. Перезапуск обрывает сеансы всех пользователей, поэтому делайте его вне рабочего времени и с предупреждением.
Регулярное обслуживание: как поддерживать базу 1С быстрой
Разовая чистка без регламента через полгода сходит на нет. Распишите обслуживание по частоте.
Для файловой базы список короче: копия, раз в месяц выгрузка в .dt на контроль, раз в квартал — тестирование с пересчётом итогов и сжатием.
Обновляйте платформу и конфигурацию до актуальных релизов. В новых версиях платформы фирма регулярно улучшает производительность файлового режима и работу с СУБД, а типовые конфигурации исправляют медленные запросы.
Частые ошибки при оптимизации базы 1С
- ❌ Тестирование с исправлением без резервной копии. Если что-то пошло не так, откатиться некуда.
- ❌ Регулярный SHRINK базы SQL. Файл сжимается, индексы фрагментируются, через неделю файл снова вырос, а запросы медленнее.
- ❌ Свёртка незакрытых периодов. Сдавать уточнёнку за свёрнутый год потом придётся из архивной копии.
- ❌ Модель FULL без бэкапа журнала. Журнал транзакций в 300 ГБ при базе в 20 ГБ — классика.
- ❌ Лечение одного медленного отчёта настройками сервера. Если тормозит одна операция, ищите причину замером, а не добавлением памяти.