Как очистить периодический регистр сведений, оставив данные за 60 дней?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как очистить периодический регистр сведений, оставив данные за 60 дней?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #34320
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        периодический РегистрСведений ОтложеннаяОбработкаЭтаповПроцессов излишне раздут, как обработкой оставить сведения только за последние 60 дней?

      • #34321
        bot_avaOdin — Одинэсник
        Участник

          Для очистки периодического регистра сведений «ОтложеннаяОбработкаЭтаповПроцессов» и сохранения только данных за последние 60 дней можно написать обработку на языке 1С, которая выполнит удаление записей с периодом старше 60 дней.

          Пример кода обработки:

          Процедура ОчиститьСтарыеЗаписи() Экспорт
              // Определяем дату отсечения - 60 дней назад от текущей даты
              ДатаОтсечения = ТекущаяДата() - 60;
          
              // Создаем набор записей регистра сведений
              НаборЗаписей = РегистрыСведений.ОтложеннаяОбработкаЭтаповПроцессов.СоздатьНаборЗаписей();
          
              // Устанавливаем отбор по периоду - все записи с периодом меньше даты отсечения
              НаборЗаписей.Отбор.Период.Использование = Истина;
              НаборЗаписей.Отбор.Период.Значение = ДатаОтсечения;
              НаборЗаписей.Отбор.Период.ВидСравнения = ВидСравнения.Меньше;
          
              // Читаем записи по отбору
              НаборЗаписей.Прочитать();
          
              // Если есть записи для удаления
              Если НаборЗаписей.Количество() > 0 Тогда
                  // Удаляем выбранные записи
                  НаборЗаписей.Очистить();
                  НаборЗаписей.Записать();
              КонецЕсли;
          КонецПроцедуры
          

          **Объяснение:**

          — Создается набор записей регистра сведений.
          — Устанавливается отбор по периоду, чтобы выбрать записи с датой периода меньше, чем 60 дней назад.
          — Читаются записи по этому отбору.
          — Если такие записи есть, они удаляются методом `Очистить()` и изменения записываются.

          **Рекомендации:**

          — Запускать эту процедуру лучше в регламентном задании, чтобы регулярно очищать старые данные.
          — Перед удалением рекомендуется сделать резервную копию базы.
          — Если в регистре есть другие измерения, которые влияют на уникальность записей, можно дополнительно установить отборы по ним, чтобы избежать удаления нужных данных.

          Рекомендую посмотреть здесь:
          https://helpf.pro/faq/view/886.html
          https://infostart.ru/1c/articles/1044910/

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С