Размер базы 1С 7.7 вырос: что удалить и как сжать без потери данных

· 9 мин

Содержание

Чтобы уменьшить базу 1С 7.7 без потерь, сначала удалите помеченные объекты (Операции → Удаление помеченных объектов), затем в Конфигураторе запустите Администрирование → Тестирование и исправление ИБ с флажком упаковки таблиц. Это физически убирает удалённые записи из файлов DBF. Если база всё равно большая — архивируйте журнал регистрации и делайте свёртку на дату. Речь именно о платформе 1С:Предприятие 7.7, файловой (DBF) и клиент-серверной (MS SQL) версиях.

Типичная ситуация: база «Торговли и склада» за восемь лет весит 3 ГБ, копирование на флешку идёт полчаса, а один из файлов DBF подбирается к 2 ГБ. После этого порога таблица DBF перестаёт расти, и база начинает сыпать ошибками. Оптимизацию лучше провести заранее, а не в день сбоя.

Откуда берётся лишний объём в базе 1С 7.7

Сначала выясните, что именно занимает место. Лечить «вообще базу» бессмысленно: в одном случае весь объём — журнал регистрации, в другом — итоги регистров.

В файловой версии каждая таблица — отдельный файл .DBF с индексом .CDX в каталоге базы. Откройте каталог в командной строке и отсортируйте файлы по размеру:

cd /d D:\Base1C\Trade
dir /O-S *.dbf
dir /O-S *.cdx

Что обычно оказывается наверху списка:

  • 📄 1SJOURN.DBF — общий журнал документов . Растёт пропорционально числу документов за все годы.
  • 📊 RA*.DBF и RG*.DBF — движения и итоги оперативных регистров. Итоги хранятся по периодам за всю историю.
  • 📒 1SENTRY.DBF и 1SBKTTL.DBF — проводки и бухгалтерские итоги (в конфигурациях с бухгалтерским учётом).
  • 🧾 DH*.DBF и DT*.DBF — шапки и табличные части документов.
  • 🕘 1SCONST.DBF — история периодических реквизитов и констант.
  • 🗂 Индексы .CDX — после множества изменений разрастаются и могут весить не меньше самих таблиц.

Отдельно проверьте подкаталог SYSLOG. Там лежит журнал регистрации 1cv7.mlg. В активно используемой базе он вырастает до сотен мегабайт, а на данные при этом не влияет.

Ещё одна частая причина — удалённые записи. В формате DBF при удалении запись только помечается, а файл не уменьшается. Пользователи годами удаляют помеченные объекты, но без упаковки таблиц место не освобождается.

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

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

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

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

  1. Попросите всех пользователей выйти из базы и закройте свои сеансы. Удаление помеченных объектов, тестирование и упаковка требуют монопольного режима.
  2. В Конфигураторе выполните Администрирование → Выгрузить данные. Получится архив, из которого базу можно восстановить целиком.
  3. Дополнительно скопируйте весь каталог базы в другое место. Для файловой версии это самая простая и надёжная страховка.
  4. Проверьте свободное место на диске. Упаковка и выгрузка-загрузка временно требуют места не меньше размера самой базы.
  5. Если база сетевая, работайте с ней на сервере или скопируйте на локальный диск. По сети упаковка идёт медленно, а обрыв соединения посреди операции портит таблицы.

Копию каталога удобно делать небольшим скриптом, чтобы не забыть дату в имени папки:

set SRC=D:\Base1C\Trade
set DST=E:\Backup\Trade_%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
xcopy "%SRC%" "%DST%\" /E /I /H /Y

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

Если в каталоге базы остались служебные файлы блокировки от прошлых сеансов, а пользователей в базе нет, монопольный режим может не открыться. Убедитесь, что процессы 1cv7.exe (или 1cv7s.exe, 1cv7l.exe для других вариантов поставки) на всех рабочих местах закрыты. Принудительно завершать чужой процесс можно только когда пользователь предупреждён: несохранённая работа пропадёт.

Удаление ненужных данных: помеченные объекты и документы прошлых лет

Первый и самый безопасный шаг — удаление помеченных объектов.

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

Помеченные на удаление документы не участвуют в учёте, поэтому их удаление ничего в итогах не меняет. Чаще всего так набирается несколько тысяч черновиков, ошибочных счетов и дублей справочников.

Что делать с документами, которые действительно нужны только для истории:

  • 🗓 За период, по которому учёт закрыт и сданы отчёты, документы можно убрать свёрткой (см. ниже). Ручная пометка на удаление тысяч проведённых документов — плохая идея: при удалении придётся снимать проведение, и итоги прошлых периодов изменятся.
  • 📦 Если история нужна для справок, оставьте копию базы «архив до 31.12.20XX» в отдельном каталоге только для чтения. Рабочая база после свёртки становится лёгкой.
  • 🧹 Справочники с массой мусорных элементов (разовые контрагенты, номенклатура «тест») помечайте на удаление, только если по ним нет документов. Проверку ссылок сделает сам механизм удаления.

Пометка проведённого документа на удаление снимает его с проведения. Остатки и проводки за прошлые периоды изменятся. Не помечайте массово документы закрытых периодов.

Упаковка таблиц и выгрузка-загрузка: физическое сжатие файлов

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

Тестирование и исправление с упаковкой

  1. Откройте базу в режиме Конфигуратора.
  2. Выберите Администрирование → Тестирование и исправление ИБ.
  3. Отметьте режимы: проверку физической целостности, реиндексацию таблиц, упаковку таблиц информационной базы. Пересчёт итогов отметьте, если планируете чистить итоги (следующий раздел).
  4. Запустите выполнение и дождитесь окончания. На базе в несколько гигабайт это может занять час и больше.
  5. Прочитайте отчёт о найденных ошибках в окне сообщений.

После упаковки удалённые записи физически исчезают, а реиндексация пересоздаёт файлы .CDX. Индексы после этого часто уменьшаются в разы.

Если какой-то файл DBF повреждён и тестирование на нём падает, в каталоге BIN платформы есть утилита chdbfl.exe. Она проверяет и исправляет отдельные DBF-файлы. Работайте ею только с копией файла.

Выгрузка и загрузка данных

Более радикальный, но очень действенный способ — пересобрать базу:

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

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

Сравнение способов физического сжатия:

СпособКогда применятьРиски
Упаковка таблиц в «Тестировании и исправлении»Регулярно, после удаления помеченныхМинимальные при наличии копии; долго на больших базах
Выгрузка-загрузка данныхУпаковка дала мало эффекта, индексы разрослисьНужно перенести внешние файлы и проверить права пользователей
chdbfl.exe по отдельному файлуТестирование падает на конкретной таблицеВозможна потеря повреждённых записей — только на копии

Чистка итогов регистров, журнала регистрации и свёртка базы

Если после упаковки база всё ещё большая, значит, объём занимают действующие данные. Здесь три направления.

Итоги оперативных и бухгалтерских регистров

Итоги регистров (RG*.DBF, 1SBKTTL.DBF) хранятся по периодам. Их размер зависит от числа периодов, за которые они рассчитаны.

  • Операции → Управление оперативными итогами — здесь видна точка актуальности итогов и есть пересчёт.
  • Операции → Управление бухгалтерскими итогами — здесь задают период, за который рассчитаны бухгалтерские итоги.

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

Журнал регистрации

Журнал SYSLOG\1cv7.mlg к учёту отношения не имеет. Варианты:

  1. Запустите базу в режиме «Монитор» и воспользуйтесь архивированием журнала регистрации: старые записи уйдут в архивный файл, который можно хранить отдельно.
  2. Когда в базе никто не работает , переместите 1cv7.mlg в архивную папку. При следующем запуске платформа создаст новый пустой журнал.

Перемещайте, а не удаляйте: журнал бывает нужен, чтобы выяснить, кто и когда изменил документ.

Свёртка информационной базы

Свёртка заменяет документы до выбранной даты документами ввода остатков на эту дату. Это единственный способ радикально уменьшить объём действующих данных.

В типовых конфигурациях есть своя обработка свёртки; ищите её в меню «Сервис» или среди внешних обработок, поставляемых с релизом конфигурации. Общий порядок:

  1. Сделайте копию базы — она станет архивом.
  2. Выберите дату свёртки: начало года, за который отчётность уже не будет пересдаваться.
  3. Запустите обработку на рабочей копии, не на единственном экземпляре.
  4. Сверьте остатки по ключевым счетам и регистрам на дату свёртки в старой и новой базе.
  5. Только после сверки переведите пользователей на свёрнутую базу.

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

Сжатие базы 1С 7.7 в версии на MS SQL

В клиент-серверной версии упаковка DBF не нужна, но база растёт по своим причинам. Самая частая — журнал транзакций при модели восстановления FULL без резервного копирования журнала.

Посмотреть, сколько занимают файлы данных и журнала:

USE Base1C77;
EXEC sp_helpfile;
EXEC sp_spaceused;

Если журнал огромный, а копии журнала транзакций вы не делаете, переведите базу в простую модель и сожмите файл журнала:

ALTER DATABASE Base1C77 SET RECOVERY SIMPLE;
USE Base1C77;
DBCC SHRINKFILE (Base1C77_Log, 500);

Здесь Base1C77_Log — логическое имя файла журнала из вывода sp_helpfile, а 500 — целевой размер в мегабайтах.

Учтите:

  • 🔒 Простая модель восстановления лишает возможности восстановиться на момент времени. Компенсируйте это ежедневной полной копией базы.
  • 🐢 Сжатие файла данных (не журнала) фрагментирует индексы. После него запустите в Конфигураторе тестирование с реиндексацией или перестройте индексы средствами SQL Server.
  • 🧹 Удаление помеченных объектов, пересчёт итогов и свёртка на SQL работают так же, как в файловой версии.

Проверка результата и скорости работы после оптимизации

После всех шагов проверьте, что база не только похудела, но и осталась целой.

Проверка базы после сжатия
Выполнено: 0 / 7

Замеры скорости делайте до и после на одних и тех же действиях. Например: открытие общего журнала, формирование остатков по складу на текущую дату, проведение типового документа. Если объём уменьшился, а скорость нет, узким местом может быть сеть или диск, а не размер таблиц.

Повторяйте удаление помеченных и упаковку раз в квартал или раз в полгода. Тогда база не будет внезапно упираться в 2 ГБ на файл.

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

Можно ли упаковать таблицы, пока в базе работают пользователи?
Нет. Тестирование и исправление с упаковкой выполняется только в монопольном режиме. Планируйте работу на вечер или выходные.
Что делать, если файл DBF уже приближается к 2 ГБ?
Сначала удалите помеченные и упакуйте таблицы. Если этого мало — свёртка базы или переход на SQL-версию платформы, где такого ограничения на таблицу нет.
Безопасно ли удалить папку SYSLOG целиком?
Учётные данные там не хранятся, но журнал регистрации нужен для разбора изменений. Надёжнее перенести файлы в архив, чем удалять.
Почему после выгрузки-загрузки не работают внешние отчёты?
Внешние отчёты и обработки, лежавшие в каталоге старой базы, не входят в архив выгрузки. Скопируйте их в новый каталог вручную.
Нужно ли сжимать базу, если она весит 500 МБ и работает быстро?
Ради размера — нет. Достаточно регулярного удаления помеченных объектов и упаковки, чтобы база росла медленнее.