Файлы баз данных 1С:Предприятие 8.3 имеют свойство со временем разрастаться до гигантских размеров — особенно если речь идет о файловом варианте работы (.dt, .cf). Это замедляет работу программы, усложняет резервное копирование и увеличивает нагрузку на дисковое пространство. Но не спешите покупать новый сервер или SSD: в 90% случаев объем базы можно сократить в 2–5 раз без потери критичных данных.
Проблема не только в накопленных документах — часто "раздувают" базу временные файлы, некорректно удаленные объекты, устаревшие версии конфигурации и даже ошибки самой платформы. В этой статье разберем 5 рабочих методов сжатия, от простых (доступных любому пользователю) до продвинутых (для администраторов). А еще выясним, когда сжатие бесполезно и что делать в таких случаях.
⚠️ Важно: перед любыми манипуляциями с базой обязательно создайте резервную копию. Даже стандартные операции в 1С иногда приводят к повреждению файлов — особенно если база уже была фрагментирована или содержала ошибки.
1. Стандартное сжатие через Конфигуратор
Самый очевидный и безопасный способ — использовать встроенную функцию сжатия в Конфигураторе 1С 8.3. Она удаляет "мусорные" данные: неиспользуемые версии объектов, временные таблицы и фрагментированные записи. Процедура занимает от нескольких минут до часов (в зависимости от размера базы) и не требует специальных знаний.
Чтобы запустить сжатие:
- Откройте базу в режиме Конфигуратор (не путать с режимом 1С:Предприятие!).
- Перейдите в меню
Администрирование → Тестирование и исправление. - В открывшемся окне отметьте галочки:
- 🔹 Тестировать и исправлять
- 🔹 Реиндексировать таблицы
- 🔹 Сжимать таблицы
- 🔹 Проверять логическую целостность (опционально, но рекомендуется)
Выполнить и дождитесь окончания процесса.📌 Что удаляется при стандартном сжатии:
- 🗑️ Устаревшие версии объектов конфигурации (если они не используются)
- 🧹 Временные таблицы, созданные при выполнении запросов
- 🔄 Фрагментированные записи (оптимизируется структура файла)
- 📝 Пустые или некорректно удаленные документы (если включена проверка целостности)
⚠️ Внимание: если база используется в клиент-серверном варианте (на SQL Server или PostgreSQL), стандартное сжатие через Конфигуратор не уменьшит размер файлов .mdf/.ldf. Для таких случаев нужны другие методы (см. раздел 4).
☑️ Подготовка к сжатию базы 1С
2. Очистка истории изменений и устаревших данных
Даже после сжатия база может оставаться большой из-за накопленных данных: истории изменений документов, устаревших справочников или неактуальных записей. Например, в бухгалтерских базах часто хранятся проводки за 10+ лет, хотя по закону достаточно 5 лет. А в торговых системах могут копиться миллионы строк в регистрах накопления.
Чтобы уменьшить объем, нужно вручную очистить ненужные данные. Вот что можно удалить:
- 📅 История изменений: в меню
Администрирование → История данныхможно настроить автоматическое удаление записей старше определенного срока. - 🗃️ Устаревшие документы: архивируйте и удаляйте закрытые периоды (например, бухгалтерские операции за 2015–2020 годы, если они не нужны для анализа).
- 🧩 Неиспользуемые справочники: проверьте разделы
Справочникина наличие пустых или дублирующихся записей. - 📊 Регистры накопления: очищайте данные по номенклатуре, которая давно не используется.
🔧 Как очистить историю изменений:
- В Конфигураторе перейдите в
Администрирование → История данных → Настройки хранения истории. - Установите период хранения (например, 1 год вместо 10 лет).
- Запустите процедуру очистки через
Администрирование → История данных → Очистка истории.
⚠️ Внимание: перед массовым удалением данных обязательно проконсультируйтесь с бухгалтером или аналитиком. Например, удаление старых проводок может нарушить целостность отчетности или сделать невозможным ретроспективный анализ.
Что будет если удалить все старые данные?
Если удалить документы за закрытые периоды без архивации, восстановить их будет невозможно. Это может привести к проблемам при проверках (например, налоговой) или анализе динамики показателей. Всегда архивируйте данные перед очисткой!
3. Архивация и выгрузка в DT (для файлового варианта)
Если база работает в файловом режиме (файлы .dt и .cf), ее можно сжать путем выгрузки и повторной загрузки. Этот метод эффективен, когда стандартное сжатие не дает результата, а база содержит много "мусорных" данных.
📌 Пошаговая инструкция:
- Создайте резервную копию базы (обязательно!).
- В Конфигураторе выберите
Администрирование → Выгрузить информационную базу. - Укажите путь для сохранения файла
.dt(например,C:\Backup\Base_dt). - После выгрузки удалите старую базу (папку с файлами
.1CD). - Создайте новую пустую базу через
Файл → Новая информационная база. - Загрузите данные из файла
.dtчерезАдминистрирование → Загрузить информационную базу.
📊 Сравнение размеров до и после:
| Тип данных | Размер до выгрузки | Размер после загрузки | Экономия |
|---|---|---|---|
Файл .dt (торговая база) |
12,4 ГБ | 4,1 ГБ | 67% |
Файл .dt (бухгалтерия) |
8,7 ГБ | 3,2 ГБ | 63% |
Файл .cf (конфигурация) |
150 МБ | 120 МБ | 20% |
⚠️ Внимание: после загрузки из .dt могут сброситься некоторые настройки (например, права пользователей или внешние отчеты). Их придется настраивать заново. Также этот метод не подходит для клиент-серверных баз — там нужно использовать другие инструменты (см. раздел 4).
Если после выгрузки/загрузки база все равно большая, проверьте наличие битых ссылок или некорректно удаленных объектов. Иногда помогает повторное тестирование и исправление через Конфигуратор.
4. Сжатие SQL-баз (для клиент-серверного варианта)
Если ваша база работает на Microsoft SQL Server или PostgreSQL, стандартные методы 1С не сработают — нужно использовать инструменты СУБД. Основные способы:
🔧 Для Microsoft SQL Server:
- 🛠️ Сжатие данных (Data Compression): уменьшает размер таблиц и индексов. Запускается через SQL Server Management Studio (SSMS) командой:
ALTER TABLE [dbo].[ВашаТаблица] REBUILD WITH (DATA_COMPRESSION = PAGE); - 🗃️ Усечение лога транзакций: если логи раздулись до гигантских размеров, выполните:
BACKUP LOG [ВашаБаза] WITH TRUNCATE_ONLY;DBCC SHRINKFILE (ВашаБаза_log, 1);
- 🧹 Реорганизация индексов: оптимизирует производительность и немного сокращает объем:
ALTER INDEX ALL ON [dbo].[ВашаТаблица] REORGANIZE;
🔧 Для PostgreSQL:
- 🗜️ VACUUM FULL: очищает "мертвые" строки и оптимизирует таблицы:
VACUUM (VERBOSE, FULL, ANALYZE) ВашаТаблица; - 📦 Сжатие TOAST-данных: уменьшает объем больших текстовых полей:
ALTER TABLE ВашаТаблица ALTER COLUMN БольшоеПоле SET STORAGE EXTERNAL;
⚠️ Внимание: операции с SQL-базами требуют прав администратора сервера. Неправильные команды могут привести к потере данных или остановке работы 1С. Если не уверены — доверьте это специалисту.
Сжатие SQL-баз дает наибольший эффект, если ранее не проводилась оптимизация. Например, после миграции с файлового варианта на серверный размер может сократиться на 30–50%.
5. Удаление неиспользуемых объектов конфигурации
Часто база разрастается из-за "мертвого груза" в конфигурации: неиспользуемых отчетов, обработок, справочников или даже целых подсистем. Например, в типовой 1С:Бухгалтерии может оставаться модуль для расчета зарплаты, хотя компания давно передала это на аутсорс.
🔍 Как найти и удалить ненужные объекты:
- В Конфигураторе откройте
Конфигурация → Открыть конфигурацию. - Используйте поиск (
Ctrl+F) по ключевым словам: "Тест", "Старое", "Архив", "Не используется". - Проверьте разделы:
- 📄 Отчеты (устаревшие формы)
- ⚙️ Обработки (неиспользуемые скрипты)
- 📊 Регистры сведений (дублирующиеся данные)
- 👥 Роли и права (устаревшие настройки доступа)
Правка → Удалить.Конфигурация → Обновить конфигурацию базы данных).📌 Что можно удалить без риска:
- 📑 Дублирующиеся печатные формы (например, старые версии счетов-фактур)
- 🖥️ Тестовые обработки (с названиями вроде "Тест_1", "TempScript")
- 🗑️ Пустые справочники (без записей и ссылок)
- 🔄 Устаревшие правила обмена данными
⚠️ Внимание: перед удалением объектов конфигурации обязательно проверьте, не используются ли они в рабочих процессах. Например, старая обработка может вызываться из регламентного задания.
6. Оптимизация внешних файлов и вложений
Многие не задумываются, но значительную часть объема базы могут занимать внешние файлы: прикрепленные сканы документов, фотографии товаров, архивы с отчетами. Например, в торговой базе сканы накладных за 5 лет могут весить десятки гигабайт!
🗂️ Как уменьшить объем вложений:
- 📎 Сжать изображения: используйте внешние инструменты (например, FastStone Photo Resizer) для уменьшения разрешения сканов до 150–200 dpi.
- 🗄️ Вынести файлы во внешнее хранилище: настройте интеграцию с 1С:Документооборотом или облачным сервисом (например, Яндекс.Диск), оставив в базе только ссылки.
- 🗑️ Удалить дубликаты: проверьте базу на повторяющиеся файлы (например, один и тот же скан прикреплен к нескольким документам).
- 📂 Архивировать старые вложения: файлы старше 3–5 лет можно запаковать в ZIP и хранить отдельно.
🔧 Как найти самые "тяжелые" вложения:
- В Конфигураторе выполните запрос:
ВЫБРАТЬ| ХранилищеДополнительнойИнформации.Ссылка КАК Ссылка,
| ХранилищеДополнительнойИнформации.Размер КАК Размер
|ИЗ
| ХранилищеДополнительнойИнформации
|УПОРЯДОЧИТЬ ПО
| Размер УБЫВ
- Экспортируйте результаты в Excel и проанализируйте, какие файлы занимают больше всего места.
⚠️ Внимание: если вложения хранятся в отдельных таблицах (например, в 1С:Документообороте), для их оптимизации могут понадобиться специализированные обработки или скрипты.
Когда сжатие не помогает: альтернативные решения
Иногда даже после всех манипуляций база остается большой. Это может означать:
- 📈 Объем данных обоснован: например, в базе миллионы документов за 10 лет, и это нормально для крупного предприятия.
- 🔄 Фрагментация на уровне файловой системы: поможет дефрагментация диска (для HDD) или перенос на SSD.
- 🛠️ Ошибки структуры базы: требуется глубокая диагностика с использованием 1С:Тестирование и исправление или утилит вроде chdbfl.exe.
- 🖥️ Аппаратные ограничения: если база действительно огромная (100+ ГБ), возможно, пора переходить на серверное решение или распределять данные по нескольким базам.
💡 Альтернативные варианты:
- 🔗 Разделение базы: вынесите архивные данные в отдельную базу (например, "Бухгалтерия 2010–2020" и "Бухгалтерия 2021–2026").
- ☁️ Облачное хранилище: перенесите базу в 1С:Fresh или на виртуальный сервер с автоматическим масштабированием.
- 📊 Оптимизация запросов: иногда медленная работа связана не с размером базы, а с неэффективными запросами. Проверьте планы выполнения в SQL Server Profiler.
⚠️ Внимание: если после всех попыток сжатия база по-прежнему тормозит, проблема может быть в аппаратной части — нехватке оперативной памяти, медленных дисках или слабом процессоре. В таких случаях оптимизация ПО не поможет.
Если база растет быстрее, чем вы успеваете ее сжимать, это признак системной проблемы: либо накапливаются необработанные данные, либо требуется реструктуризация бизнес-процессов (например, переход на документооборот без бумажных копий).
FAQ: Частые вопросы о сжатии баз 1С
❓ Можно ли сжать базу 1С без Конфигуратора?
Да, но с оговорками. Для файлового варианта (.dt) можно использовать внешние утилиты вроде 7-Zip для архивации, однако это не уменьшит рабочий размер базы — только размер резервной копии. Для реального сжатия все равно нужен Конфигуратор или SQL-инструменты.
❓ Почему после сжатия база стала работать медленнее?
Это возможно, если:
- Сжатие привело к фрагментации индексов (нужно перестроить индексы в SQL).
- Удалены критичные данные (например, история изменений, используемая в отчетах).
- Не хватает ресурсов сервера (например, после сжатия SQL начал активно использовать память).
Проверьте производительность через Журнал регистрации 1С или SQL Server Profiler.
❓ Как часто нужно сжимать базу?
Рекомендуемая периодичность:
- 📅 Файловый вариант: раз в 3–6 месяцев или при росте базы на 20%+.
- 🖥️ Клиент-серверный вариант: раз в год (или по мере необходимости, если логи SQL разрастаются).
- 🚨 После массовых операций: например, после загрузки большого количества документов или обновления конфигурации.
❓ Можно ли сжать базу, не останавливая работу пользователей?
В файловом варианте — нет. Все пользователи должны выйти из базы, иначе сжатие завершится ошибкой. В клиент-серверном варианте некоторые операции (например, VACUUM в PostgreSQL) можно выполнять параллельно, но это может замедлить работу системы.
❓ Что делать, если сжатие прервалось с ошибкой?
Алгоритм действий:
- Восстановите базу из резервной копии.
- Проверьте целостность файлов утилитой
chdbfl.exe(для файлового варианта). - Если ошибка повторяется, попробуйте сжать базу на другом компьютере или разделите процесс на этапы (например, сначала тестирование, потом сжатие).
- Для SQL-баз проверьте логи ошибок в SQL Server Management Studio.
Если проблема сохраняется, обратитесь в поддержку 1С или к специалисту по администрированию.