Имя: Пароль:
1C
 
Как ускорить удаление документов?
Ø
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)
правильно про документы. а ручные операции?