Имя: Пароль:
1C
 
Как удалить все записи регистра сведений периодом меньше определенной даты?
0 pho
 
24.09.08
08:17
Есть регистр сведений с периодичностью записи в пределах секунды. Как удалить все его записи периодом меньше или равным определенной дате?

Например, отбор на Период в наборе записей может быть только "равно".
("Важно! Отбор может устанавливаться только на равенство.")
1 Vitello
 
24.09.08
08:18
Перебирать и удалять до тех пор, пока условие выполняется.
2 pho
 
24.09.08
08:23
(1) Это ж долго. Хотя при отсутсвии других вариантов... Я так понимаю, перебирать все записи, поскольку не факт, что они будут выдаваться в хронологическом порядке? Хотя, если нет, то это могло бы ускорить процесс.
3 Vitello
 
24.09.08
08:25
А запросом их кстати выбрать нельзя?
4 Лефмихалыч
 
24.09.08
08:28
Выбрать запросом, сгруппировать по какому-нить измерению и отбирать по значению группировки
5 Irbis
 
24.09.08
08:30
(3) Можно. Запрос в ТЗ, затем ТЗ в набор записей, затем набор очистить.
6 pho
 
24.09.08
08:32
(3)(4) Спасибо! Пожалуй, так и сделаю.
7 pho
 
24.09.08
08:34
(5) Не совсем понятно.

НаборЗаписей.Загрузить(ТЗ);
НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать();

Так что ли?
8 Ygich
 
24.09.08
08:44
у регистра есть функция удалить с параметром элемент. перебираешь циклом набор записей и если элемент.период <= дата то регистр.удалить(элемент). вроде так.
9 Irbis
 
24.09.08
08:51
(7) Прочитать необязательно.
(8) Не надо перебирать набор. Это лишнее. Очистить и записать.
10 pho
 
24.09.08
09:32
(9) Всё грохает...
11 butterbean
 
24.09.08
09:33
(10) если не устанавливать отбор в наборе записей и записывать его, то должен всё грохать
12 Irbis
 
24.09.08
09:35
(10)Тогда от противного оставь в наборе только записи больше определенной даты и запиши. Туплю с утра малость.
13 pho
 
24.09.08
09:39
(12) Вариант! Всё одно действие работы с базой будет (с запросом 2), а не тьма операций удаления.
14 pho
 
24.09.08
09:47
(12) Есть контакт!

Рабочий вариант:

Если Таб.Количество() <> 0 Тогда
   НаборЗаписей.Загрузить(Таб);
КонецЕсли;
НаборЗаписей.Записать();
15 pho
 
24.09.08
09:54
П.С. Но конечно всё не то. Ради удаления малого куска приходится переписывать всю массу без него. Но всё-таки красивее, чем по записям удалять.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн