Проблема разрастания файловых баз в 1С:Предприятие 8.3, особенно в конфигурации «Бухгалтерия предприятия 3.0», является критической для многих системных администраторов и программистов. Файловый формат .1CD имеет свои технологические ограничения, и когда размер базы перешагивает порог в 30–50 ГБ, производительность системы начинает резко падать, а риск повреждения данных возрастает. Разберем по шагам, как эффективно провести «генеральную уборку» и значительно уменьшить объем информационной базы.
Прежде чем приступать к удалению, нам необходимо понять, что именно занимает место. Рассмотрим ситуацию: база может быть раздута из-за присоединенных файлов (сканов документов), избыточного версионирования или «мусора» в журнале регистрации. Проанализируем состав таблиц. Для этого профессионалы часто используют утилиту Tool1CD, которая позволяет увидеть размер каждой конкретной таблицы внутри файла базы. Если такой возможности нет, мы пойдем по списку наиболее вероятных «пожирателей» места.
Одной из самых скрытых и масштабных причин роста базы в БП 3.0 является механизм «Версионирование объектов». Система записывает каждое изменение документа или справочника, сохраняя его предыдущие состояния в регистре сведений ИсторияДанных (или ВерсииОбъектов). Со временем этот регистр может занимать до 50–70% объема всей базы. Для автоматизации этого процесса можно применить обработку для удаления записей версий объектов в типовых конфигурациях.
Выполним следующие действия:
.1CD сразу не уменьшится — место просто пометится как свободное для будущих записей.По умолчанию 1С хранит все сканы актов, счетов и договоров прямо внутри базы данных. Это удобно для резервного копирования, но губительно для размера файловой базы. Выясним, как это исправить:
Рассмотрим переход на хранение файлов в томах. Для этого:
Справочник.ПрисоединенныеФайлы и перемещать их в указанную папку.Важный момент: После этого шага обязательно нужно будет выполнить «Сжатие таблиц», иначе база останется того же размера.
Свертка базы, о которой упоминал автор вопроса, лишь помечает документы на удаление. Если объектов сотни тысяч, стандартная обработка «Удаление помеченных объектов» может зависнуть. Разберем эффективный алгоритм:
Попробуем удалять объекты не все сразу, а частями. Используйте встроенную обработку, но выбирайте объекты выборочно (например, только за один год или только определенный тип документов). В монопольном режиме этот процесс идет значительно быстрее. После полного удаления всех помеченных объектов база все еще будет занимать прежнее место на диске. Для удобного удаления больших массивов данных подойдёт обработка для удаления помеченных объектов с предварительным отбором.
Журнал регистрации хранит историю всех действий пользователей. В файловых базах он часто превращается в огромный файл 1Cv8.lgf или 1Cv8.lgp. Хотя технически он лежит в отдельной подпапке 1Cv8Log, его очистка важна для общей гигиены системы.
1С строит индекс для того, чтобы поиск в строке «Найти» работал мгновенно. Индекс занимает место и иногда повреждается. Проанализируем ситуацию:
Перейдем в Администрирование — Поддержка и обслуживание — Полнотекстовый поиск. Нажмем «Очистить индекс». Если пользователи не пользуются глобальным поиском, эту функцию можно вообще отключить, что сэкономит место и ресурсы процессора при записи документов.
Это самый важный этап, который фактически уменьшает файл .1CD. Когда данные удаляются, в файле остаются «дыры» (пустые страницы). Механизм сжатия пересобирает файл заново, выкидывая пустоты.
Выполним следующие шаги в Конфигураторе:
Если штатное сжатие не помогло, проанализируем состояние кэша конфигурации. В таблицах Config и ConfigSave могут скапливаться остатки старых обновлений. Поможет радикальный, но действенный метод:
.dt)..dt.При загрузке из .dt 1С пересоздает структуру таблиц с нуля, что часто позволяет «выжать» еще 10–15% объема по сравнению с обычным сжатием.
В современных версиях БП 3.0 есть технические регистры, которые могут содержать миллионы записей. Например, ДанныеПервичныхДокументов. Если база участвовала в синхронизации данных, проверьте планы обмена. Если есть «зависшие» узлы обмена, которые давно не использовались, удалите их. Это автоматически очистит таблицы регистрации изменений, где могут храниться ссылки на сотни тысяч объектов.
Для продвинутых пользователей приведем пример того, как программно можно проверить количество записей в крупных регистрах, чтобы понять фронт работ:
Для Каждого Регистр Из РегистрыСведений Цикл
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК КолВо ИЗ " + Регистр.Метаданные().ПолноеИмя();
Результат = Запрос.Выполнить().Выгрузить();
Если Результат[0].КолВо > 100000 Тогда
Сообщить("Регистр " + Регистр.Метаданные().Имя + " содержит " + Результат[0].КолВо + " записей");
КонецЕсли;
КонецЦикла;
Подводя итог, отметим: если после всех манипуляций (очистка версий, перенос файлов в тома, удаление помеченных, сжатие таблиц и перезагрузка через .dt) база все еще превышает 30 ГБ, это явный сигнал к переходу на клиент-серверный вариант (SQL). Файловый режим не предназначен для таких объемов, и любые действия по уменьшению размера будут давать лишь временный эффект.