![]() |
![]() |
![]() |
|
Как ускорить удаление документов? Ø |
☑ | ||
---|---|---|---|---|
0
Alias
16.05.05
✎
12:12
|
В пакетном режиме удаляется куча документов... ждать приходится по 10 часов. 99% времени -- Док.Удалить()
Как быстрее? |
|||
1
jurii
16.05.05
✎
12:13
|
ТиС или Бухия?
Если ТиС, то ТА надо перенести на дату ранее первого удаляемого дока, а потом вернуть назад. |
|||
2
Alias
16.05.05
✎
12:17
|
2(1) - Наша специализированная конфигурация... да впрочем это не суть важно. Можно провести аналогию с Бухгалтерией. Регистров у нас мало.
Пробовал переносить и период рассчитанных итогов (и бух и опер) на какой-то там 1999 год.... выигрыша не дало. |
|||
3
jurii
16.05.05
✎
12:21
|
Попробуй удалять пачками. К примеру по месяцам. А потом, после каждого периода, иди в конфигуратор и запускай там "Упаковку таблиц информационной базы" в Тестировании и исправлении... Чуток поможет... Мож даже на ЦЕЛЫЙ ОДЫН час.
|
|||
4
Lys
16.05.05
✎
12:23
|
Использовать транзакции. Ну и переносить период рассчитанных итогов - тоже верно, интересно, почему вам не помогло...
|
|||
5
kurilkin
16.05.05
✎
12:24
|
(2)Странно как-то.
ТА и БИ как в (1). Удаление в транзакции по 100-500 документов. Итого дает выгрыш на порядок. |
|||
6
Денис2
16.05.05
✎
12:28
|
(0) А можно еще делать удалить(0) а потом удаление помеченных.
|
|||
7
Lys
16.05.05
✎
12:29
|
(3) Транзакции помогают удалять в разы быстрее.
Пример (из личного): база - почти типовая ТиС. Нужно удалить около 50 000 доков и партии, порожденные удаляемыми приходными доками. Штатными средствами удаление шло около 6 часов. После применения НачатьТранзакцию() - ЗафиксироватьТранзакцию() через каждые 100-200 удаленных объектов и переноса ТА в далекое прошлое удаление шло 5 минут. |
|||
8
jurii
16.05.05
✎
12:33
|
(7) Ну, простите...
Просто, думал (0) использует обработочку по типу завершения периода, где транзакции используются... |
|||
9
gero
16.05.05
✎
12:59
|
грохни ttl* и "часть" 1sentry... в интервале периода
|
|||
10
Alias
16.05.05
✎
14:12
|
2 (3): По месяцам можно, но я сейчас даже не беру время фиксации транзакции. Сейчас всё удаление идёт в одной транзакции, засекаю я время её окончания (даже без фиксации). Разбив на несколько, вряд ли я увеличу скорость....
2 (4): Без транзакции вообще даже не пробовал :) конечно с ней... одна она у меня, с начала до конца. Сделал список документов, перенёс период на 1999 год, удаляю документы -- выигрыша во времени нет. 2 (5): У меня одна большая транзакция. Думаете разбиение на несколько даст выигрыш? К тому же мне хотелось бы чтоб удаление или полностью проходило, или полностью откатывалось... а не кусками. 2 (6): Сейчас как раз удалить(0), то есть пометка на удаление. 2 (9): Вот эта идея как раз тоже приходила мне в голову... Простите, что такое ttl*? И как мне лучше это сделать? У меня есть список неудаляемых документов... то есть мне нужно выполнять обработку, запоминать этот список снаружи, выходить из 1С, грохать проводки в ENTRY, заходить в 1С, засасывать список документов обратно и начинать удаление? |
|||
11
mvk
16.05.05
✎
14:18
|
А удаление такого числа доков - это разве не разовая задачка?
Стоит ли ломать голову? |
|||
12
Alias
16.05.05
✎
14:20
|
Если б мне лучше понимать что там физически происходит во время отработки "Удалить()", можно было бы думать. Пока почему-то все попытки с откатом итогов результата не приносят.
Удаляется очень много документов. Оставляются лишь некоторые, по определённым условиям... Через ОЛЕ делать сложнее -- справочники переносить тяжело, там много ссылок на документные типы... Нужно как-то сделать это в пределах одной базы... |
|||
13
Alias
16.05.05
✎
14:24
|
2 (11): Почти разовая. Но она разовая на одном предприятии, а у нас их довольно много, все крупные и раскиданные по стране...
Короче говоря с моего места она не кажется такой уж разовой. И 22 часа даже без фиксации транзакции... :( нельзя позволить станциям стоять без бухгалтерии так долго. Ищем пути. |
|||
14
Lys
16.05.05
✎
14:27
|
(10): "Сейчас всё удаление идёт в одной транзакции, засекаю я время её окончания (даже без фиксации). Разбив на несколько, вряд ли я увеличу скорость..." -
Как раз и увеличишь. На порядок как минимум - см. (7). А использование одной "большой" транзакции не даст увеличения производительности, скорее наоборот - при очень большом числе объектов в транзакции есть все шансы "повесить" компьютер (сугубо имхо - из личного опыта). "хотелось бы чтоб удаление или полностью проходило, или полностью откатывалось" - даже при разбиении на много транзакций такой откат реально осуществить. См. Попытка-Исключение + сохранение ссылок на УЖЕ помеченные на удаление документы в служебной ТЗ, для снятия пометки удаления в случае возникновения исключения... |
|||
15
Alias
16.05.05
✎
14:46
|
2 (14): Спасибо, попробую разбить на много небольших транзакций...
|
|||
17
www.perlscript.ru
16.05.05
✎
15:02
|
||||
18
gero
16.05.05
✎
15:03
|
2(10)
это итоги. изменеяются при проведении и при перерасчете, последний в управлении бух итогами... если удаляешь не все документы про 1sentry забудь... геморно это |
|||
19
Lys
16.05.05
✎
15:14
|
(17),(18) - ИМХО, в данной ситуации вполне достаточно штатных средств 1С.
|
|||
20
Alias
16.05.05
✎
15:30
|
2 (17): Спасиб... пока SQL-базу не пробовал, но если возникнет -- буду знать куда смотреть:)
. 2 (18): Так я могу потом перепроведение запустить, чтоб удалённые проводки существующих документов снова появились. . 2 (19): Скорость множества небольших транзакций (сейчас по 500) реально больше, чем одной большой :) почти уже приемлимо. Большое спасибо, если будут точные цифры замеров -- кину сюда же, но результат уже ощущается. |
|||
21
gero
16.05.05
✎
15:45
|
2(19)
ну ведь хочется побыстренькому:) 2(20) правильно про документы. а ручные операции? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |