|
|
Очистка движений документа... |
☑ |
|
0
ДенисЧ
20.07.12
✎
15:26
|
Есть докУмент, который делает большую уйму движений...
Если его распроводит штатно, то это 10 минут зависона все базы. Посему решил было я убирать движения внетранзакционно...
об = док.ПолучитьОбъект();
движ = об.Движения;
Для Каждого д из движ Цикл
Сообщить("" + д);
д.Прочитать();
Сообщить("Прочитали...");
Если д.Количество() > 0 Тогда
Сообщить("" + д + " " + д.Количество());
д.Очистить();
Сообщить("Очистили...");
д.Записать(Истина);
КонецЕсли;
КонецЦикла;
А потом
об.Записать(РежимЗаписиДокумента.ОтменаПроведения);
В большинстве своём идет нормально, зависоны не наблюдаются и всё хорошо.
Но вот наткнулся на регистр, по которому 2'400'000 записей... При Прочитать() оно валится в "Недостаточно памяти"...
Подумал было удалять частями, накладывая на движ отбор по коду операции, так овощтам - операция недоступна при добавлении значения отбора...
Что делать?
Можно движения скулем удалить, но потом итоги считать надо, а база рабочая...
|
|
|
1
Fragster
гуру
20.07.12
✎
15:29
|
(0) а нафига там прочитать? просто создаешь набор, устанавливаешь отбор, записываешь
|
|
|
2
Beduin
20.07.12
✎
15:29
|
(0) Можно только гадать как ты записал 2400000 записей без этой ошибки
|
|
|
3
ДенисЧ
20.07.12
✎
15:30
|
(2) Я? Это не я, это уппырище записало, само :-)
(1) Я для начала проверял, есть ли там что-то вообще... А сейчас проверю без чтения...
|
|
|
4
Fragster
гуру
20.07.12
✎
15:31
|
(3) проверяй, есть ли там что запросом с "выбрать первые 1"
|
|
|
5
ДенисЧ
20.07.12
✎
15:31
|
(4) тоже вариант, конечно...
|
|
|
6
Fragster
гуру
20.07.12
✎
15:32
|
(5) никуя себе "тоже"
|
|
|
7
ДенисЧ
20.07.12
✎
15:40
|
ну, без чтения вроде чистится...
|
|
|
8
Spieluhr
20.07.12
✎
15:44
|
(0) Читать набор записей не нужно если через Объект.Движения идет обращение
|
|
|
9
ДенисЧ
20.07.12
✎
15:46
|
(8) Если не читать, то Количество() = 0 всегда, отсюда и идея чтения была.
|
|
|
10
Fragster
гуру
20.07.12
✎
15:47
|
(7) ты пиши, если чо
|
|
|
11
Fragster
гуру
20.07.12
✎
15:47
|
(8) та ну?
|
|
|
12
Spieluhr
20.07.12
✎
15:48
|
(9) Просто непонятно зачем читать если следующей строкой идет удаление
|
|
|
13
Fragster
гуру
20.07.12
✎
15:49
|
(12) путаешь. если через Объект.Движения - то просто отбор уже наложен. читать нужно (не нужно, но один из способов, да), чтобы не записывать пустой набор когда он уже пустой.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший