За год чуть больше чем на 20ГБ бэкап разрастался. Решил вставить автоматическую чистку уже устаревших данных по истории изменений объектов в базе.
Появилась идея не полностью чистить регистр, а просто очищать самую объемную часть - Хранилище значений.
Таким образом, записи остаются с историей изменений, и база сильно не разрастается. Также можно включить историю по всем объектам, не экономя.
Наверняка и так знаете, но просуфлирую на всякий: эту процедуру можете вставить в модуль регламентных заданий и создать само регламентное задание, указав её в качестве обработчика по расписанию.
Процедура ЧисткаВерсийОбъектов() Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ВерсииОбъектов.Объект,
| ВерсииОбъектов.НомерВерсии,
| ВерсииОбъектов.ДатаВерсии
|ИЗ
| РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
|ГДЕ
| ВерсииОбъектов.ДатаВерсии < &ДатаВерсии
| И НЕ ВерсииОбъектов.ВерсияПроигнорирована
|
|СГРУППИРОВАТЬ ПО
| ВерсииОбъектов.Объект,
| ВерсииОбъектов.НомерВерсии,
| ВерсииОбъектов.ДатаВерсии
|
|УПОРЯДОЧИТЬ ПО
| ВерсииОбъектов.ДатаВерсии";
Запрос.УстановитьПараметр("ДатаВерсии", ДобавитьМесяц(ТекущаяДата(),-7)); //старше пол года. Можете этот параметр получать из константы или настройки любой для возможности менять.
Выборка = Запрос.Выполнить().Выбрать();
НаборЗаписей = РегистрыСведений.ВерсииОбъектов.СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
//Запишем запись в РС
НаборЗаписей.Отбор.Объект.Установить(Выборка.Объект);
НаборЗаписей.Отбор.НомерВерсии.Установить(Выборка.НомерВерсии);
НаборЗаписей.Прочитать();
НаборЗаписей[0].ВерсияОбъекта = Новый ХранилищеЗначения(Неопределено);
НаборЗаписей[0].ВерсияПроигнорирована = Истина;
НаборЗаписей.Записать(Истина);
КонецЦикла;
КонецПроцедуры
Авось пригодится кому скопипастить...