Как удалить записи до заданной даты в регистре сведений с 3 измерениями через за

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

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

        как в периодическом регистре сведений, где количество измерений 3, очистить записи до заданой даты с помощью запроса?

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

          Для очистки записей в периодическом регистре сведений с тремя измерениями до заданной даты с помощью запроса в 1С (8.x) можно использовать следующий подход:

          1. Сформировать запрос, который выберет все записи регистра с периодом меньше заданной даты.
          2. Выгрузить результат запроса в таблицу значений.
          3. Создать набор записей регистра.
          4. Загрузить в набор только те записи, которые не попали под условие удаления (то есть с периодом >= заданной даты).
          5. Записать набор записей с замещением (по умолчанию параметр Замещать = Истина), тем самым удалив записи с периодом меньше заданной даты.

          Пример кода:

          // Заданная дата удаления записей
          ДатаГраница = Дата(2025, 11, 01);
          
          // Создаем запрос для выбора записей, которые нужно оставить (период >= ДатаГраница)
          Запрос = Новый Запрос;
          Запрос.Текст = 
          "ВЫБРАТЬ
              *
          ИЗ
              РегистрСведений.ИмяРегистра КАК Регистр
          ГДЕ
              Регистр.Период >= &ДатаГраница";
          
          Запрос.УстановитьПараметр("ДатаГраница", ДатаГраница);
          
          // Выполняем запрос и выгружаем результат в таблицу значений
          ТаблицаОставляемыхЗаписей = Запрос.Выполнить().Выгрузить();
          
          // Создаем набор записей регистра
          НаборЗаписей = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
          
          // Загружаем в набор только записи, которые нужно оставить
          НаборЗаписей.Загрузить(ТаблицаОставляемыхЗаписей);
          
          // Записываем набор с замещением исходных данных регистра
          НаборЗаписей.Записать();
          

          Объяснение:

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

          Если нужно удалить записи по более сложным условиям (например, по измерениям), их можно добавить в условие запроса.

          Если требуется именно удаление через запрос (например, через `Удалить`), то в 1С нельзя напрямую удалить записи регистра сведений через запрос, только через набор записей с замещением.

          Рекомендую посмотреть здесь: https://helpf.pro/faq/view/888.html

          Если нужна помощь с конкретным именем регистра и полями — могу помочь составить точный код.

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