Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 13:25

Как очистить регистр сведений на определенную дату

Автор Алексей Рожков, 01 апр 2020, 09:37

0 Пользователей и 1 гость просматривают эту тему.

Алексей Рожков

Привет всем.
Нашел написал внешнюю обработку по очистке определенного регистра.


&НаСервере
Процедура ОчиститьРегистрНаСервере()

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

НаборЗаписей.Записать();

КонецПроцедуры


&НаКлиенте
Процедура ОчиститьРегистр(Команда)
ОчиститьРегистрНаСервере();
КонецПроцедуры


Как сделать так, чтобы очищать записи в интервале времени?
Я конструктором создал запрос в нужный регистр, но там нет колонки "период"

Вот запрос

ВЫБРАТЬ
ЗначенияПоказателейНачислений.Регистратор КАК Регистратор,
ЗначенияПоказателейНачислений.НомерСтроки КАК НомерСтроки,
ЗначенияПоказателейНачислений.Активность КАК Активность,
ЗначенияПоказателейНачислений.РегистраторИзмерение КАК РегистраторИзмерение,
ЗначенияПоказателейНачислений.ИдентификаторСтроки КАК ИдентификаторСтроки,
ЗначенияПоказателейНачислений.Показатель КАК Показатель,
ЗначенияПоказателейНачислений.Значение КАК Значение
ИЗ
РегистрСведений.ЗначенияПоказателейНачислений КАК ЗначенияПоказателейНачислений

~23000 строк, сложно ручками править все :)

Как я понял, нужно циклом пробежаться по каждой строке, но не могу понять, как выставить диапазон дат, чтобы удалить например все строки за месяч.

КОНФА
ЗУП 3.1


LexaK

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

&НаСервереБезКонтекста
Процедура ЧисткаРегистра(ДатаС,ДатаПо)
//Запрос - шаблон
лкЗапрос = Новый Запрос;
лкЗапрос.Текст = "
    |Выбрать различные
| Рег.Регистратор
|из
|   РегистрСведений.ЗначенияПоказателейНачислений Рег
|где
| //очень даже не оптимально, но для разовой обработки сойдет
| Рег.Регистратор.Дата Между &ДатаС и &ДатаПо
|";
лкЗапрос.УстановитьПараметр("&ДатаС",ДатаС);
лкЗапрос.УстановитьПараметр("&ДатаПо",ДатаПо);

лкНЗ = РегистрыНакопления.ЗначенияПоказателейНачислений.СоздатьНаборЗаписей();
лкВыборка = лкЗапрос.Выполнить().Выбрать();
Пока лкВыборка.Следующий() Цикл
лкНЗ.Отбор.Регистратор.Установить(лкВыборка.Регистратор);
Попытка
лкНЗ.Записать();
Сообщить("Очищены значения по: " + лкВыборка.Регистратор);
Исключение
лкОшибка = ОписаниеОшибки();
Сообщить(лкОшибка);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск