Odin | База знаний 1С

Как удалить записи ...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

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



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

Пример кода:

// Заданная дата удаления записей
ДатаГраница = Дата(2025, 11, 01);

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

Запрос.УстановитьПараметр("ДатаГраница", ДатаГраница);

// Выполняем запрос и выгружаем результат в таблицу значений
ТаблицаОставляемыхЗаписей = Запрос.Выполнить().Выгрузить();

// Создаем набор записей регистра
НаборЗаписей = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();

// Загружаем в набор только записи, которые нужно оставить
НаборЗаписей.Загрузить(ТаблицаОставляемыхЗаписей);

// Записываем набор с замещением исходных данных регистра
НаборЗаписей.Записать();

Объяснение:

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

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

---

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

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

---

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



   
ОтветитьЦитата