Разбухшая база 1С:Предприятие — головная боль для администраторов и бухгалтеров. Медленные отчёты, зависания при открытии документов, ошибки при резервном копировании... Причины обычно кроются в накопленных за годы работы данных: устаревшие документы, дубликаты, неиспользуемые справочники и временные файлы. Но не всегда проблема в объёме — иногда виновата фрагментация файловой базы или неоптимизированная структура таблиц.
Сократить размер базы можно разными способами: от простой ручной чистки до сложных технических манипуляций с файловой системой. Важно понимать, что не все методы одинаково безопасны. Например, удаление данных напрямую из таблиц SQL может привести к нарушению ссылочной целостности, а неправильное сжатие — к потере работоспособности. В этой статье разберём 7 проверенных методов, которые помогут уменьшить размер базы без риска для бизнес-процессов.
1. Удаление устаревших данных: что можно чистить без риска
Первый и самый очевидный способ — избавиться от ненужной информации. В типовой конфигурации 1С:Бухгалтерия 3.0 или 1С:Управление торговлей 11 к таким данным относятся:
- 📅 Закрытые периоды (бухгалтерские операции старше 3–5 лет, если это допустимо по законодательству)
- 📦 Архивные документы (реализации, поступления, акты выполненных работ с пометкой "Проводки не формировать")
- 👥 Неактивные справочники (контрагенты без движений, номенклатура, снятая с производства)
- 📑 Временные файлы (лог-файлы обмена, кэш отчётов, устаревшие версии печатных форм)
Для безопасного удаления используйте стандартные обработки:
- 🔧
Очистка истории изменений(для удаления версий объектов) - 🗑️
Удаление помеченных объектов(после предварительной пометки) - 📊
Очистка регистров накопления(для удаления движений по закрытым периодам)
⚠️ Внимание: Перед массовым удалением обязательно проверьте, не используются ли данные в регламентированных отчётах (например, в декларациях по НДС за прошлые годы). Некоторые документы нельзя удалять даже после истечения срока хранения — это может привести к штрафам при проверках.
2. Архивация и выгрузка исторических данных
Если удалять данные нельзя (например, из-за требований законодательства), их можно архивировать в отдельную базу. Это снизит нагрузку на рабочую систему, сохраняя доступ к истории.
Способы архивации:
- 📂 Выгрузка в XML/JSON через стандартные обработки (
Выгрузка данных→Универсальный обмен данными) - 🗃️ Перенос в архивную базу с помощью Конвертации данных 2.0/3.0 (EDT)
- 🔄 Разделение на текущую и историческую базы (актуально для крупных предприятий с большим объёмом данных)
Пример команды для выгрузки через EDT:
// Параметры выгрузки для архивации данных старше 2020 года
&НаСервере
Процедура ВыгрузитьАрхив(КаталогВыгрузки)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документ.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Документ
|ГДЕ
| Документ.Дата < &ДатаГраницы";
Запрос.УстановитьПараметр("ДатаГраницы", НачалоГода(2021));
// ... дальнейшая логика выгрузки
КонецПроцедуры
💡 Полезный совет: Для удобства работы с архивом настройте связь между базами через RAS или WEB-сервисы. Это позволит при необходимости быстро найти старые документы без ручного импорта.
Архивация — компромисс между производительностью и сохранностью данных. Оптимальна для компаний, которые не могут удалить историю, но страдают от медленной работы 1С.
3. Оптимизация структуры базы данных
Иногда проблема не в объёме данных, а в их организации. Фрагментация таблиц, неоптимальные индексы или избыточные связи могут тормозить работу даже с относительно небольшой базой.
Что можно сделать:
- 🛠️ Переиндексация таблиц (в SQL Server:
ALTER INDEX ALL ON [dbo].[_Document123] REBUILD) - 🗜️ Сжатие данных (в PostgreSQL:
VACUUM FULL ANALYZE) - 🔄 Дефрагментация файловой базы (для файлового варианта 1С:
chdbfl.exe -compact) - 📉 Удаление "мусорных" связей (например, неиспользуемых ролей или прав доступа)
Для файловой базы 1С 8.3 процесс сжатия запускается через командную строку:
C:\Program Files\1cv8\8.3.x.xxx\bin\chdbfl.exe -compact "C:\Bases\ВашаБаза\1Cv8.1CD"
⚠️ Внимание: Сжатие файловой базы (chdbfl.exe) может занять несколько часов для крупных баз (100+ ГБ). Запускайте процесс в нерабочее время и следите за свободным местом на диске — временно потребуется до двойного объёма свободного пространства.
| Тип базы | Метод оптимизации | Время выполнения | Требуемые права |
|---|---|---|---|
| Файловая | chdbfl.exe -compact |
От 30 минут до 12 часов | Администратор ОС |
| SQL Server | DBCC SHRINKDATABASE |
От 10 минут до 2 часов | sa или db_owner |
| PostgreSQL | VACUUM FULL |
От 5 минут до 4 часов | Superuser |
| Файловая | Тестирование и исправление (в конфигураторе) |
От 1 часа до суток | Полные права в 1С |
4. Настройка периодов хранения данных
Многие конфигурации 1С по умолчанию хранят историю изменений объектов неограниченно долго. Это приводит к раздуванию таблиц _InfoRgXXX и _AccumRgXXX. Настройка периодов хранения поможет автоматизировать очистку.
Где настроить:
- 📅 В 1С:Бухгалтерия 3.0:
Администрирование → Настройки программы → История изменений - 📊 В 1С:УТ 11:
Администрирование → Поддержка и обслуживание → История изменений - 🔧 В 1С:ЗУП 3.1:
Настройки → История данных
Рекомендуемые сроки хранения:
- 📌 История изменений документов: 1–2 года
- 📌 Логи обмена данными: 3–6 месяцев
- 📌 Временные таблицы отчётов: 1 месяц
🔹 Пример настройки в коде (для программистов):
// Установка периода хранения истории изменений (365 дней)
Параметры = ПолучаемОбщиеПараметры();
Параметры.ИсторияИзменений.ПериодХранения = 365;
ЗаписатьОбщиеПараметры(Параметры);
После изменения периода хранения запустите регламентное задание Очистка истории изменений вручную, чтобы изменения вступили в силу немедленно.
5. Использование внешних хранилищ для больших файлов
Если в базе хранятся вложения (сканы документов, фотографии товаров, Excel-отчёты), их можно вынести во внешнее хранилище. Это сократит размер базы на 10–40% при большом количестве файлов.
Варианты реализации:
- 📁 Файловая система: хранение файлов на сетевом диске с ссылками в базе
- ☁️ Облако: интеграция с Yandex Диск, Google Drive или 1С:Документооборот
- 🗄️ Специализированные системы: 1С:Архив или 1С:Документооборот КОРП
📌 Пошаговая инструкция для файлового хранилища:
- Создайте папку на сервере (например,
\\server\1C_Attachments\) - Настройте права доступа (только для пользователей 1С)
- Модифицируйте конфигурацию: добавьте реквизит
СсылкаНаФайлвместо хранения файла в базе - Напишите обработку для миграции существующих вложений
⚠️ Внимание: При использовании внешнего хранилища настройте резервное копирование этой папки отдельно от базы 1С. В противном случае при восстановлении базы из бекапа вы потеряете доступ к файлам.
Создать резервную копию базы|Проверить свободное место на диске|Настроить права доступа к папке|Протестировать миграцию на тестовой базе|Составить инструкцию для пользователей-->
6. Оптимизация конфигурации: удаление неиспользуемых объектов
Со временем в конфигурации накапливаются неиспользуемые справочники, документы, отчёты и обработки. Их можно безопасно удалить, сократив размер как базы данных, так и конфигурации.
Как найти и удалить мусор:
- 🔍 Используйте отчёт
Анализ использования объектов(доступен в EDT или через расширения) - 🗑️ Удалите пустые справочники (без записей и ссылок)
- 📝 Уберите неиспользуемые реквизиты (например, устаревшие поля в документах)
- 🖼️ Оптимизируйте печатные формы (удалите дубли или устаревшие версии)
🔧 Пример запроса для поиска пустых справочников:
ВЫБРАТЬ
Метаданные.Справочники.Имя КАК ИмяСправочника,
(ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ Справочник.&ИмяСправочника) КАК КоличествоЗаписей
ИЗ
Метаданные.Справочники КАК Метаданные
ГДЕ
НЕ Метаданные.Системный
И (ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ Справочник.&ИмяСправочника) = 0
⚠️ Внимание: Перед удалением объектов конфигурации создайте резервную копию и проверьте, не используются ли они в:
- 📋 Регламентных заданиях
- 📊 Отчётах и обработках
- 🔗 Обменах данными
Что будет если удалить используемый объект?
Удаление объекта, на который есть ссылки, приведёт к ошибкам при открытии связанных документов или отчётов. В лучшем случае пользователи увидят сообщение "Объект не найден", в худшем — база перестанет открываться. Восстановить удалённый объект можно только из резервной копии или через конфигуратор в режиме "Сравнить-объединить".
7. Регулярное обслуживание: план профилактики
Сокращение размера базы — не разовая акция, а постоянный процесс. Составьте план регулярного обслуживания, чтобы избежать разрастания данных.
Рекомендуемый график:
| Действие | Периодичность | Ответственный |
|---|---|---|
| Очистка истории изменений | Раз в квартал | Администратор 1С |
| Архивация данных старше 3 лет | Раз в год | Бухгалтер + IT-специалист |
| Дефрагментация файловой базы | Раз в полгода | Системный администратор |
| Проверка неиспользуемых объектов | Раз в год | Программист 1С |
| Оптимизация SQL-индексов | Раз в квартал | Администратор СУБД |
📌 Автоматизация процессов:
- 🤖 Настройте регламентные задания для очистки временных данных
- 📅 Используйте планировщик задач Windows для запуска
chdbfl.exeпо расписанию - 📊 Создайте дашборд мониторинга (например, в Power BI) для отслеживания роста базы
⚠️ Внимание: Если база растёт быстрее, чем на 5% в месяц, это признак системной проблемы. Возможные причины:
- 🔄 Некорректный обмен данными (дублирование документов)
- 📝 Ошибки в конфигурации (бесконечное создание временных таблиц)
- 👥 Ошибки пользователей (массовое создание дублей справочников)
Регулярное обслуживание экономит до 70% времени на "аварийные" очистки. База, за которой следят, реже требует радикальных мер вроде полной перезагрузки.
FAQ: Частые вопросы по сокращению базы 1С
🔹 Можно ли уменьшить размер базы 1С без потери данных?
Да, с помощью:
- 🗜️ Сжатия (для файловой базы —
chdbfl.exe, для SQL —DBCC SHRINKDATABASE) - 📁 Архивации (перенос старых данных в отдельную базу)
- 🧹 Очистки временных файлов (логи, кэш, история изменений)
Эти методы не удаляют бизнес-данные, а только оптимизируют их хранение.
🔹 Сколько места освободится после очистки истории изменений?
Зависит от:
- 📅 Срока хранения (чем дольше хранится история, тем больше освободится места)
- 📊 Активности пользователей (в торговой базе с 50 пользователями история весит больше, чем в бухгалтерии с 5 пользователями)
- 🗃️ Типа конфигурации (в 1С:ERP история занимает до 30% базы, в 1С:Бухгалтерия — 10–15%)
В среднем очистка истории за 3 года освобождает 5–20 ГБ в базе размером 100–200 ГБ.
🔹 Как перенести вложения из базы в внешнее хранилище?
Порядок действий:
- Создайте папку на сервере (например,
\\server\1C_Attachments\) - Настройте права доступа (пользователи 1С должны иметь права на чтение/запись)
- Добавьте в конфигурацию реквизит
ПутьКФайлу(типСтрока, длина 500) - Напишите обработку для экспорта существующих вложений:
// Пример кода для экспорта вложений
Для Каждого Док Из Документы.РеализацияТоваровУслуг Цикл
Если НЕ ПустаяСтрока(Док.Вложения) Тогда
Путь = КаталогВложений + "\Реализация_" + Строка(Док.Номер) + ".pdf";
Док.Вложения.Записать(Путь);
Док.ПутьКФайлу = Путь;
Док.Записать();
КонецЕсли;
КонецЦикла;
⚠️ После миграции удалите старый реквизит с вложениями и сделайте резервную копию!
🔹 Почему после очистки размер базы не уменьшился?
Возможные причины:
- 🗜️ СУБД не освободила место (для SQL нужно запустить
DBCC SHRINKFILE) - 📁 Файловая база не сжата (запустите
chdbfl.exe -compact) - 🔄 Данные удалены не полностью (проверьте, не остались ли ссылки в регистрах)
- 📊 Размер уменьшился, но не значительно (например, с 100 ГБ до 95 ГБ — это нормально)
Для файловой базы реальное уменьшение будет видно только после:
- Выгрузки данных в
.dt - Удаления старой базы
- Загрузки данных обратно
🔹 Какие риски при ручном удалении данных из SQL?
Опасности:
- 🔗 Нарушение ссылочной целостности (удалите документ, на который есть ссылки в регистрах)
- 📉 Потеря данных для отчётности (например, удаление движений по закрытым периодам)
- 🛑 Падение базы (если удалить системные таблицы вроде
_1SJourn) - 🔄 Проблемы с обновлениями (1С может не пропустить релиза из-за отсутствия обязательных таблиц)
🔹 Безопасная альтернатива: используйте типовые обработки очистки или Конвертацию данных.