Администрирование · 11 мин
Как очистить версии объектов в 1С и уменьшить размер базы
Как очистить версии объектов в 1С: настройка хранения истории, удаление старых версий через обработку и регламентные задания, контроль размера базы.
Механизм версионирования объектов в 1С сохраняет копию документа или элемента справочника при каждом изменении. Это удобно для аудита и восстановления данных, но со временем таблица версий разрастается и может занимать значительную часть информационной базы. Особенно быстро история копится в базах с интенсивной работой пользователей, обменами данными и фоновыми задачами, которые перезаписывают объекты.
Признаки проблемы обычно такие: файл базы или размер таблиц на SQL-сервере растёт быстрее, чем добавляются реальные данные; замедляются регламентные операции — резервное копирование, тестирование и исправление, обновление конфигурации. При этом штатных кнопок «очистить всё» в типовых конфигурациях нет: версии нужно либо удалять специальной обработкой, либо ограничивать их накопление настройками.
Ниже разобрано, где хранятся версии, как настроить срок их хранения, как безопасно удалить накопленную историю и как проверить, что очистка действительно уменьшила базу. Материал ориентирован на конфигурации на управляемых формах с подсистемой «Версионирование объектов» из Библиотеки стандартных подсистем (УТ 11, ERP, КА, БП 3.0 и другие).
Что такое версии объектов и где они хранятся
Версионирование объектов — это подсистема, которая при записи документа или элемента справочника сохраняет его предыдущее состояние в виде сериализованных данных. Просмотреть версии конкретного объекта можно из формы самого объекта: обычно это команда «Перейти → История изменений» или кнопка с пиктограммой истории. Там видно, кто и когда менял объект, и можно сравнить версии между собой.
Физически версии хранятся в информационном регистре «Версии объектов». Каждая запись содержит ссылку на объект, номер версии, автора изменения, дату и сами данные в сжатом виде. Именно этот регистр и нужно очищать: удаление записей из него не затрагивает сами документы и справочники, а убирает только историю их изменений.
Важно понимать ограничение: восстановление объекта из версии возможно только пока версия существует. Если вы очистите историю полностью, откатить случайно испорченный документ штатными средствами уже не получится — останется только восстановление из резервной копии.
Как ограничить накопление версий в настройках
Первый шаг — не удаление, а настройка, чтобы история не разрасталась снова. Откройте раздел «Администрирование → Общие настройки» (в некоторых конфигурациях — «НСИ и администрирование → Общие настройки») и найдите блок «Версионирование объектов». Если флажок версионирования снят, история не пишется вовсе — но обычно его оставляют включённым для ключевых объектов.
Для каждого типа объектов можно задать вариант версионирования: «Версионировать», «Не версионировать» или «Версионировать при проведении» для документов. Разумная практика — отключить версионирование для объектов, которые массово меняются обменами и фоновыми заданиями, но редко редактируются вручную: именно они генерируют основной объём «мусорных» версий.
Кроме того, в настройках доступен срок хранения версий: например, хранить версии за последние N месяцев или ограничить их количество на объект. После установки срока устаревшие версии удаляются регламентным заданием очистки. Проверьте, что это задание включено и выполняется без ошибок — иначе ограничение сработает только на бумаге.
- 1Откройте Администрирование → Общие настройки → Версионирование объектов
- 2Для массово изменяемых типов объектов установите «Не версионировать»
- 3Задайте срок хранения версий или лимит количества на объект
- 4Убедитесь, что регламентное задание очистки устаревших версий активно и выполняется без ошибок
- 5Через несколько дней проверьте журнал регистрации: задание должно завершаться успешно
Как удалить уже накопленные версии
Настройка срока хранения убирает только устаревшие версии и работает постепенно. Если регистр уже занимает гигабайты, нужна разовая полная или частичная очистка. Для этого используются обработки очистки регистра «Версии объектов» — типовые варианты поставляются в составе инструментов администратора и на диске ИТС, также существуют проверенные публичные обработки. Любую обработку сначала тестируйте на копии базы.
Типовой сценарий очистки: сделать резервную копию, запустить обработку в монопольном режиме или в период минимальной нагрузки, указать отбор (все объекты или конкретные типы, дата «по которую» удалять версии), выполнить удаление. Удаление большого объёма записей идёт долго — на крупных базах это часы, поэтому операцию планируют на ночь или выходные.
Альтернатива обработке — программное удаление через встроенный язык: выборка записей регистра и удаление наборов записей порциями. Порционное удаление важно на клиент-серверных базах: одна гигантская транзакция может переполнить журнал транзакций СУБД и привести к блокировкам.
Очистка в файловой и клиент-серверной базе: различия
В файловой базе после удаления записей физический размер файла 1Cv8.1CD сам по себе не уменьшится — внутри файла остаются пустые страницы. Чтобы база реально «похудела», после очистки выполните тестирование и исправление с включённым режимом сжатия таблиц (конфигуратор → Администрирование → Тестирование и исправление). Сжатие файловой базы требует монопольного доступа.
В клиент-серверном варианте (MS SQL, PostgreSQL) ситуация похожая: удалённые строки освобождают место внутри файлов данных, но файлы на диске не сжимаются автоматически. Для возврата места системе используют штатные средства СУБД — shrink файлов или перестроение таблиц. Эти операции выполняет администратор СУБД и тоже в окно обслуживания, поскольку они ресурсоёмки.
На клиент-серверных базах дополнительно следите за журналом транзакций: массовое удаление в простой модели восстановления безопаснее, в полной модели журнал может резко вырасти. Согласуйте операцию с администратором СУБД заранее.
Способы очистки версий
Подходит для профилактики: работает автоматически через регламентное задание, но медленно сокращает уже накопленный объём
Подходит для разового удаления большой истории; требует копии базы, монопольного окна и контроля результата
Подходит для клиент-серверных баз с очень большим регистром; требует навыков разработки и аккуратности с транзакциями
Проверка результата и контроль размера базы
После очистки оцените эффект двумя способами. Во-первых, количественно: для файловой базы — размер файла после сжатия, для клиент-серверной — размер таблицы регистра через запрос к СУБД или через отчёт по размерам таблиц (в ряде конфигураций есть штатный отчёт «Оценка производительности» или аналогичные инструменты администратора). Во-вторых, функционально: откройте историю изменений любого старого документа и убедитесь, что версии старше заданной даты удалены, а свежие — на месте.
Чтобы проблема не вернулась, раз в несколько месяцев контролируйте рост регистра. Если версии снова копятся быстро, ищите источник: чаще всего это обмены данными, которые при каждой загрузке перезаписывают объекты, или фоновые задания, обновляющие справочники. Для таких объектов версионирование лучше отключить.
Как проверить результат очистки
Версии старше срока хранения отсутствуют, свежие открываются
История пуста полностью — удалили лишнее, или старые версии на месте — очистка не сработала
Размер заметно уменьшился после сжатия
Записи удалены, но размер не изменился — не выполнено сжатие таблиц
Выполняется по расписанию, в журнале регистрации нет ошибок
Задание отключено или завершается с ошибкой — версии снова копятся
Типичные ошибки при очистке версий
Самая частая ошибка — удаление истории без резервной копии. Второй по частоте промах — очистка без последующего сжатия: администратор видит, что записи удалены, а размер базы не изменился, и считает операцию бесполезной. Третья типичная ситуация — очистили регистр, но не настроили срок хранения и не отключили версионирование «шумных» объектов, поэтому через пару месяцев регистр возвращается к прежнему объёму.
Отдельно стоит предостеречь от прямого вмешательства в СУБД: удаление строк из таблицы регистра SQL-запросом нарушает логику платформы и может привести к ошибкам при обновлении конфигурации или проверке целостности. Все манипуляции с данными выполняйте только средствами 1С.
Перед массовой очисткой выгрузите список типов объектов с наибольшим числом версий. Часто выясняется, что 80–90% объёма дают два-три вида документов, которые меняются обменами. Отключение версионирования только для них решает проблему без потери истории по остальным объектам.
FAQ: частые вопросы об очистке версий объектов
Удаление версий влияет на сами документы и справочники?
Нет. Регистр «Версии объектов» хранит только копии предыдущих состояний. Текущие документы, элементы справочников, проводки и остатки при очистке регистра не затрагиваются. Пропадает лишь возможность просматривать и восстанавливать старые версии.
Можно ли удалить версии только по определённым документам?
Да. Обработки очистки обычно позволяют задать отбор по типу объекта и по дате версии. Это удобно, когда нужно сохранить историю по важным документам (например, реализациям), а очистить только массово изменяемые справочники.
Почему после очистки размер базы не уменьшился?
Удаление записей освобождает место внутри файла базы, но не сжимает сам файл. Для файловой базы выполните тестирование и исправление с режимом сжатия таблиц, для клиент-серверной — сжатие средствами СУБД. Только после этого свободное место вернётся операционной системе.
Как часто нужно чистить версии объектов?
При правильно настроенном сроке хранения ручная очистка не нужна: регламентное задание удаляет устаревшие версии автоматически. Разовая ручная очистка требуется только для накопленного за годы объёма или после отключения версионирования «шумных» объектов.
Безопасно ли полностью отключить версионирование?
Технически — да, механизм необязателен для работы базы. Но вы потеряете возможность отследить, кто и когда изменил объект, и восстановить его прежнее состояние. Компромисс — оставить версионирование для ключевых документов и отключить для объектов, которые меняются обменами и фоновыми заданиями.
Где посмотреть, сколько места занимает регистр версий?
В клиент-серверной базе — через запрос к системным представлениям СУБД по размерам таблиц. В файловой базе точный размер отдельной таблицы штатно не показывается, ориентируйтесь на количество записей регистра и косвенные признаки: рост файла базы и замедление регламентных операций.
Что важно запомнить
Очистка версий объектов сводится к трём шагам: ограничьте срок хранения и отключите версионирование массово изменяемых объектов, удалите накопленную историю обработкой после резервного копирования, затем выполните сжатие базы и проверьте результат. Без настройки хранения регистр версий быстро вырастет снова.