Как уменьшить размер файловой базы 1С:Бухгалтерия предприятия 3.0?

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Проблема разрастания файловых баз в 1С:Предприятие 8.3, особенно в конфигурации «Бухгалтерия предприятия 3.0», является критической для многих системных администраторов и программистов. Файловый формат .1CD имеет свои технологические ограничения, и когда размер базы перешагивает порог в 30–50 ГБ, производительность системы начинает резко падать, а риск повреждения данных возрастает. Разберем по шагам, как эффективно провести «генеральную уборку» и значительно уменьшить объем информационной базы.

Анализ структуры базы данных

Прежде чем приступать к удалению, нам необходимо понять, что именно занимает место. Рассмотрим ситуацию: база может быть раздута из-за присоединенных файлов (сканов документов), избыточного версионирования или «мусора» в журнале регистрации. Проанализируем состав таблиц. Для этого профессионалы часто используют утилиту Tool1CD, которая позволяет увидеть размер каждой конкретной таблицы внутри файла базы. Если такой возможности нет, мы пойдем по списку наиболее вероятных «пожирателей» места.

Шаг 1. Очистка версионирования объектов

Одной из самых скрытых и масштабных причин роста базы в БП 3.0 является механизм «Версионирование объектов». Система записывает каждое изменение документа или справочника, сохраняя его предыдущие состояния в регистре сведений ИсторияДанных (или ВерсииОбъектов). Со временем этот регистр может занимать до 50–70% объема всей базы. Для автоматизации этого процесса можно применить обработку для удаления записей версий объектов в типовых конфигурациях.

Выполним следующие действия:

  1. Перейдем в раздел Администрирование — Поддержка и обслуживание — История изменений.
  2. Проанализируем настройки. Если версионирование включено для всех объектов «Бессрочно», это и есть причина роста.
  3. Нажмем на ссылку «Очистка» и установим срок хранения версий, например, «За последний месяц» или «За последние полгода».
  4. Запустим процедуру очистки. После этого записи из регистра будут удалены, но физический размер файла .1CD сразу не уменьшится — место просто пометится как свободное для будущих записей.

Шаг 2. Перенос присоединенных файлов в тома на диске

По умолчанию 1С хранит все сканы актов, счетов и договоров прямо внутри базы данных. Это удобно для резервного копирования, но губительно для размера файловой базы. Выясним, как это исправить:

Рассмотрим переход на хранение файлов в томах. Для этого:

  1. Зайдем в Администрирование — Настройки работы с файлами.
  2. Установим флаг «Хранить файлы в томах на диске».
  3. Создадим новый том (укажем путь к папке на сервере или локальном диске, где будут лежать файлы).
  4. Нажмем кнопку «Перенести файлы в тома». Программа начнет извлекать бинарные данные из таблиц Справочник.ПрисоединенныеФайлы и перемещать их в указанную папку.

Важный момент: После этого шага обязательно нужно будет выполнить «Сжатие таблиц», иначе база останется того же размера.

Шаг 3. Удаление помеченных объектов порциями

Свертка базы, о которой упоминал автор вопроса, лишь помечает документы на удаление. Если объектов сотни тысяч, стандартная обработка «Удаление помеченных объектов» может зависнуть. Разберем эффективный алгоритм:

Попробуем удалять объекты не все сразу, а частями. Используйте встроенную обработку, но выбирайте объекты выборочно (например, только за один год или только определенный тип документов). В монопольном режиме этот процесс идет значительно быстрее. После полного удаления всех помеченных объектов база все еще будет занимать прежнее место на диске. Для удобного удаления больших массивов данных подойдёт обработка для удаления помеченных объектов с предварительным отбором.

Шаг 4. Настройка и сокращение журнала регистрации

Журнал регистрации хранит историю всех действий пользователей. В файловых базах он часто превращается в огромный файл 1Cv8.lgf или 1Cv8.lgp. Хотя технически он лежит в отдельной подпапке 1Cv8Log, его очистка важна для общей гигиены системы.

  1. В режиме «Конфигуратор» зайдем в Администрирование — Настройка журнала регистрации.
  2. Нажмем «Сократить», выберем дату, ранее которой события нам не важны.
  3. При необходимости сохраним удаляемые события в отдельный файл.

Шаг 5. Очистка индекса полнотекстового поиска

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

Перейдем в Администрирование — Поддержка и обслуживание — Полнотекстовый поиск. Нажмем «Очистить индекс». Если пользователи не пользуются глобальным поиском, эту функцию можно вообще отключить, что сэкономит место и ресурсы процессора при записи документов.

Шаг 6. Сжатие таблиц и тестирование (ТиИС)

Это самый важный этап, который фактически уменьшает файл .1CD. Когда данные удаляются, в файле остаются «дыры» (пустые страницы). Механизм сжатия пересобирает файл заново, выкидывая пустоты.

Выполним следующие шаги в Конфигураторе:

  1. Сделаем резервную копию базы (обязательно!).
  2. Зайдем в меню Администрирование — Тестирование и исправление.
  3. Выберем только пункт «Сжатие таблиц информационной базы».
  4. Если база все еще подозрительно большая, запустим повторно с выбранными пунктами «Реиндексация таблиц» и «Проверка логической целостности».

Шаг 7. Технический метод «Выгрузка-Загрузка»

Если штатное сжатие не помогло, проанализируем состояние кэша конфигурации. В таблицах Config и ConfigSave могут скапливаться остатки старых обновлений. Поможет радикальный, но действенный метод:

  1. В Конфигураторе выберем Администрирование — Выгрузить информационную базу (создаем файл .dt).
  2. Создадим новую пустую папку для базы.
  3. Добавим в список новую чистую базу и зайдем в её Конфигуратор.
  4. Выберем Администрирование — Загрузить информационную базу и выберем созданный ранее .dt.

При загрузке из .dt 1С пересоздает структуру таблиц с нуля, что часто позволяет «выжать» еще 10–15% объема по сравнению с обычным сжатием.

Работа с регистрами обмена и первичных документов

В современных версиях БП 3.0 есть технические регистры, которые могут содержать миллионы записей. Например, ДанныеПервичныхДокументов. Если база участвовала в синхронизации данных, проверьте планы обмена. Если есть «зависшие» узлы обмена, которые давно не использовались, удалите их. Это автоматически очистит таблицы регистрации изменений, где могут храниться ссылки на сотни тысяч объектов.

Для продвинутых пользователей приведем пример того, как программно можно проверить количество записей в крупных регистрах, чтобы понять фронт работ:


Для Каждого Регистр Из РегистрыСведений Цикл
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК КолВо ИЗ " + Регистр.Метаданные().ПолноеИмя();
    Результат = Запрос.Выполнить().Выгрузить();
    Если Результат[0].КолВо > 100000 Тогда
        Сообщить("Регистр " + Регистр.Метаданные().Имя + " содержит " + Результат[0].КолВо + " записей");
    КонецЕсли;
КонецЦикла;

Итоги

Подводя итог, отметим: если после всех манипуляций (очистка версий, перенос файлов в тома, удаление помеченных, сжатие таблиц и перезагрузка через .dt) база все еще превышает 30 ГБ, это явный сигнал к переходу на клиент-серверный вариант (SQL). Файловый режим не предназначен для таких объемов, и любые действия по уменьшению размера будут давать лишь временный эффект.

← На главную