Как удалить все записи периодического регистра, указав начальный период? Например, я указываю начальный период 01.01.2020, и нужно удалить все записи регистра по сегодняшний день.
---
Если периодичность для Периода - не самая мелкая (до дня, например), то можно предложить комбинацию цикла и записи пустого набора, как в (3).
Запросом выбрать все даты, на которые есть данные к удалению. А потом аналогично (3). Т.е., типа так
Запрос = Новый Запрос("выбрать различные Период из РегистрыСведений.ТвойРегистр где Период>&МаксДата");

```1c
    Запрос.УстановитьПараметр("МаксДата", Дата(2012, 12, 12));
    ВыборкаПериодов = Запрос.Выполнить().Выбрать();
    Пока ВыборкаПериодов.Следующий() Цикл
    НаборЗаписей = РегистрыСведений.ТвойРегистр.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Период.Установить(Выборка.Период);
    НаборЗаписей.Записать();
    КонецЦикла;
```
---
получить запросом записи которые надо удалить, в цикле обходим по данным (которые измерения + период) и удаляем порциями
---
А если так?

```1c
    НаборЗаписей = РегистрыСведений.ТвойРегистр.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Период.Установить();
    НаборЗаписей.Отбор.Период.ЗначениеС = ТвойПериодНачало;
    НаборЗаписей.Отбор.Период.ЗначениеПо = ТвойПериодКонец;
    НаборЗаписей.Записать();
```
---
Спасибо ,сейчас попробую. Делал запросом, но если записей много очень долгое удаление получается если циклом обходить.
---
Надо циклом обходить
---
Отбор у наборов записи можно установить только на равенство. Читайте в СП
---
Если периодичность для Периода - не самая мелкая (до дня, например), то можно предложить комбинацию цикла и записи пустого набора, как в (3).
Запросом выбрать все даты, на которые есть данные к удалению. А потом аналогично (3). Т.е., типа так
Запрос = Новый Запрос("выбрать различные Период из РегистрыСведений.ТвойРегистр где Период>&МаксДата");

```1c
    Запрос.УстановитьПараметр("МаксДата", Дата(2012, 12, 12));
    ВыборкаПериодов = Запрос.Выполнить().Выбрать();
    Пока ВыборкаПериодов.Следующий() Цикл
    НаборЗаписей = РегистрыСведений.ТвойРегистр.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Период.Установить(Выборка.Период);
    НаборЗаписей.Записать();
    КонецЦикла;
```
---
Периодичность регистра День
---
Пока ВыборкаПериодов.Следующий() Цикл
НаборЗаписей = РегистрыСведений.ТвойРегистр.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.Установить(Выборка.Период);
НаборЗаписей.Записать();
КонецЦикла;

(7) Сделал процедуру на сервере - вроде работает:

```1c
    Запрос = Новый Запрос;

    Запрос.УстановитьПараметр("ДатаНачлаоПериод", НачалоДня(ТекущаяДата()-86400*10));

    Запрос.Текст = "ВЫБРАТЬ
    | МойРегистр.Период КАК Период
    |ИЗ
    | РегистрСведений.МойРегистр КАК МойРегистр
    |ГДЕ
    | МойРегистр.Период >= &ДатаНачлаоПериод";

    Результат = Запрос.Выполнить();

    ВыборкаПериодов = Результат.Выбрать();

    Пока ВыборкаПериодов.Следующий() Цикл
    НаборЗаписей = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Период.Установить(ВыборкаПериодов.Период);
    НаборЗаписей.Записать();
```
---
еще как вариант,
если база НЕ файловая, подсоединятесь к серверу СКЛ и Постгресс, (на чем там у вас?) и прямыми командами сервера БД чистите таблицу регистра, ну только очееень осторожно,
предварительно сделав бакап
---
Только сгруппируйте периоды в запросе периодов. Или используйте Различные. Чтобы не мутузить несколько раз одно и то же значение Периода для удаления записей.
---
Только сгруппируйте периоды в запросе периодов. Или используйте Различные. Чтобы не мутузить несколько раз одно и то же значение Периода для удаления записей.
Спасибо, сам не догадался. Сейчас попробую)
---
Получается нужно добавить в текст запроса строчку СГРУППИРОВАТЬ ПО?

```1c
    Запрос.Текст = "ВЫБРАТЬ
    | МойРегистр.Период КАК Период
    |ИЗ
    | РегистрСведений.МойРегистр КАК МойРегистр
    |ГДЕ
    | МойРегистр.Период >= &ДатаНачлаоПериод
    |СГРУППИРОВАТЬ ПО
    | МойРегистр.Период";
```
---
Да