Разбухшая база 1С:Предприятие — головная боль для администраторов и бухгалтеров. Медленные отчёты, зависания при открытии документов, ошибки при резервном копировании... Причины обычно кроются в накопленных за годы работы данных: устаревшие документы, дубликаты, неиспользуемые справочники и временные файлы. Но не всегда проблема в объёме — иногда виновата фрагментация файловой базы или неоптимизированная структура таблиц.

Сократить размер базы можно разными способами: от простой ручной чистки до сложных технических манипуляций с файловой системой. Важно понимать, что не все методы одинаково безопасны. Например, удаление данных напрямую из таблиц SQL может привести к нарушению ссылочной целостности, а неправильное сжатие — к потере работоспособности. В этой статье разберём 7 проверенных методов, которые помогут уменьшить размер базы без риска для бизнес-процессов.

1. Удаление устаревших данных: что можно чистить без риска

Первый и самый очевидный способ — избавиться от ненужной информации. В типовой конфигурации 1С:Бухгалтерия 3.0 или 1С:Управление торговлей 11 к таким данным относятся:

  • 📅 Закрытые периоды (бухгалтерские операции старше 3–5 лет, если это допустимо по законодательству)
  • 📦 Архивные документы (реализации, поступления, акты выполненных работ с пометкой "Проводки не формировать")
  • 👥 Неактивные справочники (контрагенты без движений, номенклатура, снятая с производства)
  • 📑 Временные файлы (лог-файлы обмена, кэш отчётов, устаревшие версии печатных форм)

Для безопасного удаления используйте стандартные обработки:

  • 🔧 Очистка истории изменений (для удаления версий объектов)
  • 🗑️ Удаление помеченных объектов (после предварительной пометки)
  • 📊 Очистка регистров накопления (для удаления движений по закрытым периодам)

⚠️ Внимание: Перед массовым удалением обязательно проверьте, не используются ли данные в регламентированных отчётах (например, в декларациях по НДС за прошлые годы). Некоторые документы нельзя удалять даже после истечения срока хранения — это может привести к штрафам при проверках.

📊 Как часто вы проводите очистку базы 1С?
Раз в квартал
Раз в год
Только при критических зависаниях
Никогда не чистил

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. Настройка периодов хранения данных

Многие конфигурации по умолчанию хранят историю изменений объектов неограниченно долго. Это приводит к раздуванию таблиц _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С:Документооборот КОРП

📌 Пошаговая инструкция для файлового хранилища:

  1. Создайте папку на сервере (например, \\server\1C_Attachments\)
  2. Настройте права доступа (только для пользователей 1С)
  3. Модифицируйте конфигурацию: добавьте реквизит СсылкаНаФайл вместо хранения файла в базе
  4. Напишите обработку для миграции существующих вложений

⚠️ Внимание: При использовании внешнего хранилища настройте резервное копирование этой папки отдельно от базы 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 ГБ.

🔹 Как перенести вложения из базы в внешнее хранилище?

Порядок действий:

  1. Создайте папку на сервере (например, \\server\1C_Attachments\)
  2. Настройте права доступа (пользователи 1С должны иметь права на чтение/запись)
  3. Добавьте в конфигурацию реквизит ПутьКФайлу (тип Строка, длина 500)
  4. Напишите обработку для экспорта существующих вложений:
// Пример кода для экспорта вложений

Для Каждого Док Из Документы.РеализацияТоваровУслуг Цикл

Если НЕ ПустаяСтрока(Док.Вложения) Тогда

Путь = КаталогВложений + "\Реализация_" + Строка(Док.Номер) + ".pdf";

Док.Вложения.Записать(Путь);

Док.ПутьКФайлу = Путь;

Док.Записать();

КонецЕсли;

КонецЦикла;

⚠️ После миграции удалите старый реквизит с вложениями и сделайте резервную копию!

🔹 Почему после очистки размер базы не уменьшился?

Возможные причины:

  • 🗜️ СУБД не освободила место (для SQL нужно запустить DBCC SHRINKFILE)
  • 📁 Файловая база не сжата (запустите chdbfl.exe -compact)
  • 🔄 Данные удалены не полностью (проверьте, не остались ли ссылки в регистрах)
  • 📊 Размер уменьшился, но не значительно (например, с 100 ГБ до 95 ГБ — это нормально)

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

  1. Выгрузки данных в .dt
  2. Удаления старой базы
  3. Загрузки данных обратно
🔹 Какие риски при ручном удалении данных из SQL?

Опасности:

  • 🔗 Нарушение ссылочной целостности (удалите документ, на который есть ссылки в регистрах)
  • 📉 Потеря данных для отчётности (например, удаление движений по закрытым периодам)
  • 🛑 Падение базы (если удалить системные таблицы вроде _1SJourn)
  • 🔄 Проблемы с обновлениями (1С может не пропустить релиза из-за отсутствия обязательных таблиц)

🔹 Безопасная альтернатива: используйте типовые обработки очистки или Конвертацию данных.