helpf.pro
Регистрация

v8: Отбор в регистре сведений

Mokey
26.06.2012 09:43Прочитано: 3055
Всем доброго веремени суток.
Воспрос родился нежданно-негаданно.
Есть независимый регистр сведений с измерением "ДатаИзменения" типа "Дата и Время". Назрела необходимость почистить этот регистр от записей, дата изменения которых меньше определённого времени. У меня в голове есть варианты, но это перебором, долго и мучительно )). Может, кто-то уже сталкивался и имеет простенькое решение?
Изменено 26.06.12 09:55:27
Yandex
Возможно, вас также заинтересует
Реклама на портале
Mokey
26.06.2012 10:19Ответ № 1
у меня есть такой вариант:
Код 1C v 8.х
 
Набор = РегистрыСведений.ИзмененияВБазе.СоздатьНаборЗаписей();
Набор.Прочитать();

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

Набор.Загрузить(Запрос.Выполнить().Выгрузить());
Набор.Записать();


Он вполне работоспособный с одним НО: записей на удаление гораздо меньше, а тут приходится считывать весь регистр в набор, запросом отбирать записи, которые должны в нём остаться, загрузить в набор эти записи и записать. Регистр довольно объёмный, поэтому долго это всё выполняется.
Это, конечно, не панацея, но я ищу более изящный вариант с отбором записей непосредственно для удаления.
Изменено 26.06.12 10:20:59
Mokey
26.06.2012 10:43Ответ № 2
Код 1C v 8.х
 
МенРег = РегистрыСведений.ИзмененияВБазеДляСертификации;
Выборка = МенРег.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ДатаИзменения < Дата("20110101000000") Тогда
Выборка.ПолучитьМенеджерЗаписи().Удалить();
КонецЕсли;
КонецЦикла;


Такой вариант мне вообще не нравится, потому что выполняется в два раза медленнее, и это при том, что я ещё комментировал строчку с удалением, просто перебрал.
Изменено 26.06.12 10:44:50
Подсказка: Щелкнув по значку (справа от названия вопроса), вы получите список ответов на похожие вопросы!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.