Размер базы 1С 7.7 вырос: что удалить и как сжать без потери данных
Содержание
Чтобы уменьшить базу 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 при удалении запись только помечается, а файл не уменьшается. Пользователи годами удаляют помеченные объекты, но без упаковки таблиц место не освобождается.
Запишите размеры крупных файлов до начала работы. После каждого шага сравните — так станет видно, какая операция дала эффект, а какая нет.
Подготовка к сжатию базы: копия и монопольный режим
Все операции ниже меняют данные или структуру файлов. Перед началом сделайте полную резервную копию базы и проверьте, что она открывается.
Порядок подготовки:
- Попросите всех пользователей выйти из базы и закройте свои сеансы. Удаление помеченных объектов, тестирование и упаковка требуют монопольного режима.
- В Конфигураторе выполните
Администрирование → Выгрузить данные. Получится архив, из которого базу можно восстановить целиком. - Дополнительно скопируйте весь каталог базы в другое место. Для файловой версии это самая простая и надёжная страховка.
- Проверьте свободное место на диске. Упаковка и выгрузка-загрузка временно требуют места не меньше размера самой базы.
- Если база сетевая, работайте с ней на сервере или скопируйте на локальный диск. По сети упаковка идёт медленно, а обрыв соединения посреди операции портит таблицы.
Копию каталога удобно делать небольшим скриптом, чтобы не забыть дату в имени папки:
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С:Предприятие в монопольном режиме (флажок «Монопольно» в окне запуска).
- Выберите
Операции → Удаление помеченных объектов. - Нажмите «Контроль». Программа проверит ссылки на каждый помеченный объект.
- Объекты, на которые никто не ссылается, будут удалены. Те, на которые есть ссылки, останутся в списке — откройте их и разберитесь, какой документ или элемент мешает.
- Нажмите «Удалить».
Помеченные на удаление документы не участвуют в учёте, поэтому их удаление ничего в итогах не меняет. Чаще всего так набирается несколько тысяч черновиков, ошибочных счетов и дублей справочников.
Что делать с документами, которые действительно нужны только для истории:
- 🗓 За период, по которому учёт закрыт и сданы отчёты, документы можно убрать свёрткой (см. ниже). Ручная пометка на удаление тысяч проведённых документов — плохая идея: при удалении придётся снимать проведение, и итоги прошлых периодов изменятся.
- 📦 Если история нужна для справок, оставьте копию базы «архив до 31.12.20XX» в отдельном каталоге только для чтения. Рабочая база после свёртки становится лёгкой.
- 🧹 Справочники с массой мусорных элементов (разовые контрагенты, номенклатура «тест») помечайте на удаление, только если по ним нет документов. Проверку ссылок сделает сам механизм удаления.
Пометка проведённого документа на удаление снимает его с проведения. Остатки и проводки за прошлые периоды изменятся. Не помечайте массово документы закрытых периодов.
Упаковка таблиц и выгрузка-загрузка: физическое сжатие файлов
Это шаг, который реально уменьшает размер файлов DBF. Удаление помеченных само по себе места не освобождает.
Тестирование и исправление с упаковкой
- Откройте базу в режиме Конфигуратора.
- Выберите
Администрирование → Тестирование и исправление ИБ. - Отметьте режимы: проверку физической целостности, реиндексацию таблиц, упаковку таблиц информационной базы. Пересчёт итогов отметьте, если планируете чистить итоги (следующий раздел).
- Запустите выполнение и дождитесь окончания. На базе в несколько гигабайт это может занять час и больше.
- Прочитайте отчёт о найденных ошибках в окне сообщений.
После упаковки удалённые записи физически исчезают, а реиндексация пересоздаёт файлы .CDX. Индексы после этого часто уменьшаются в разы.
Если какой-то файл DBF повреждён и тестирование на нём падает, в каталоге BIN платформы есть утилита chdbfl.exe. Она проверяет и исправляет отдельные DBF-файлы. Работайте ею только с копией файла.
Выгрузка и загрузка данных
Более радикальный, но очень действенный способ — пересобрать базу:
Администрирование → Выгрузить данные— сохраните архив.- Создайте пустой каталог и подключите в нём новую базу.
- Скопируйте туда файл конфигурации
1Cv7.MDиз старой базы. - В Конфигураторе новой базы выполните
Администрирование → Загрузить данныеи укажите архив.
Таблицы создаются заново, без удалённых записей и дыр в индексах. Подкаталоги внешних отчётов и настройки пользователей перенесите отдельно, если они хранились в каталоге базы.
Сравнение способов физического сжатия:
| Способ | Когда применять | Риски |
|---|---|---|
| Упаковка таблиц в «Тестировании и исправлении» | Регулярно, после удаления помеченных | Минимальные при наличии копии; долго на больших базах |
| Выгрузка-загрузка данных | Упаковка дала мало эффекта, индексы разрослись | Нужно перенести внешние файлы и проверить права пользователей |
chdbfl.exe по отдельному файлу | Тестирование падает на конкретной таблице | Возможна потеря повреждённых записей — только на копии |
Чистка итогов регистров, журнала регистрации и свёртка базы
Если после упаковки база всё ещё большая, значит, объём занимают действующие данные. Здесь три направления.
Итоги оперативных и бухгалтерских регистров
Итоги регистров (RG*.DBF, 1SBKTTL.DBF) хранятся по периодам. Их размер зависит от числа периодов, за которые они рассчитаны.
Операции → Управление оперативными итогами— здесь видна точка актуальности итогов и есть пересчёт.Операции → Управление бухгалтерскими итогами— здесь задают период, за который рассчитаны бухгалтерские итоги.
Пересчёт итогов не удаляет движения, но приводит таблицы итогов в порядок, если в них накопился мусор после сбоев. Перед изменением периода итогов договоритесь с бухгалтером: отчёты за периоды без рассчитанных итогов будут формироваться медленнее или станут недоступны.
Журнал регистрации
Журнал SYSLOG\1cv7.mlg к учёту отношения не имеет. Варианты:
- Запустите базу в режиме «Монитор» и воспользуйтесь архивированием журнала регистрации: старые записи уйдут в архивный файл, который можно хранить отдельно.
- Когда в базе никто не работает
, переместите
1cv7.mlgв архивную папку. При следующем запуске платформа создаст новый пустой журнал.
Перемещайте, а не удаляйте: журнал бывает нужен, чтобы выяснить, кто и когда изменил документ.
Свёртка информационной базы
Свёртка заменяет документы до выбранной даты документами ввода остатков на эту дату. Это единственный способ радикально уменьшить объём действующих данных.
В типовых конфигурациях есть своя обработка свёртки; ищите её в меню «Сервис» или среди внешних обработок, поставляемых с релизом конфигурации. Общий порядок:
- Сделайте копию базы — она станет архивом.
- Выберите дату свёртки: начало года, за который отчётность уже не будет пересдаваться.
- Запустите обработку на рабочей копии, не на единственном экземпляре.
- Сверьте остатки по ключевым счетам и регистрам на дату свёртки в старой и новой базе.
- Только после сверки переведите пользователей на свёрнутую базу.
Переписанная или нестандартная конфигурация может свернуться некорректно: обработка не знает о добавленных регистрах и реквизитах. Для таких баз свёртку поручите тому, кто дорабатывал конфигурацию.
Сжатие базы 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 работают так же, как в файловой версии.
Проверка результата и скорости работы после оптимизации
После всех шагов проверьте, что база не только похудела, но и осталась целой.
Замеры скорости делайте до и после на одних и тех же действиях. Например: открытие общего журнала, формирование остатков по складу на текущую дату, проведение типового документа. Если объём уменьшился, а скорость нет, узким местом может быть сеть или диск, а не размер таблиц.
Повторяйте удаление помеченных и упаковку раз в квартал или раз в полгода. Тогда база не будет внезапно упираться в 2 ГБ на файл.