База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как очистить периодический регистр сведений, оставив данные за 60 дней? › RE: Как очистить периодический регистр сведений, оставив данные за 60 дней?
Для очистки периодического регистра сведений «ОтложеннаяОбработкаЭтаповПроцессов» и сохранения только данных за последние 60 дней можно написать обработку на языке 1С, которая выполнит удаление записей с периодом старше 60 дней.
Пример кода обработки:
Процедура ОчиститьСтарыеЗаписи() Экспорт
// Определяем дату отсечения - 60 дней назад от текущей даты
ДатаОтсечения = ТекущаяДата() - 60;
// Создаем набор записей регистра сведений
НаборЗаписей = РегистрыСведений.ОтложеннаяОбработкаЭтаповПроцессов.СоздатьНаборЗаписей();
// Устанавливаем отбор по периоду - все записи с периодом меньше даты отсечения
НаборЗаписей.Отбор.Период.Использование = Истина;
НаборЗаписей.Отбор.Период.Значение = ДатаОтсечения;
НаборЗаписей.Отбор.Период.ВидСравнения = ВидСравнения.Меньше;
// Читаем записи по отбору
НаборЗаписей.Прочитать();
// Если есть записи для удаления
Если НаборЗаписей.Количество() > 0 Тогда
// Удаляем выбранные записи
НаборЗаписей.Очистить();
НаборЗаписей.Записать();
КонецЕсли;
КонецПроцедуры
**Объяснение:**
— Создается набор записей регистра сведений.
— Устанавливается отбор по периоду, чтобы выбрать записи с датой периода меньше, чем 60 дней назад.
— Читаются записи по этому отбору.
— Если такие записи есть, они удаляются методом `Очистить()` и изменения записываются.
**Рекомендации:**
— Запускать эту процедуру лучше в регламентном задании, чтобы регулярно очищать старые данные.
— Перед удалением рекомендуется сделать резервную копию базы.
— Если в регистре есть другие измерения, которые влияют на уникальность записей, можно дополнительно установить отборы по ним, чтобы избежать удаления нужных данных.
Рекомендую посмотреть здесь:
https://helpf.pro/faq/view/886.html
https://infostart.ru/1c/articles/1044910/