|
Как удалить все записи регистра сведений периодом меньше определенной даты? | ☑ | ||
|---|---|---|---|---|
|
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
|
П.С. Но конечно всё не то. Ради удаления малого куска приходится переписывать всю массу без него. Но всё-таки красивее, чем по записям удалять.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |