Имя: Пароль:
1C
1C 7.7
v7: Удаление документов.
0 Eeakie
 
23.07.14
16:01
Добрый день.
Надо удалить ~500к документов. Обычной обработкой пометить на удаление, а потом через стандартное "Удаление помеченных объектов" удалить что помечено.
Вопрос в том, что скорость пометки на удаление падает. Помечаю в транзакции по месяцу. Количество документов в одном месяце примерно одинаково, но первые 2 месяца помечаются по 2-3 минуты, а дальше скорость серьезно падает. Если через контроль удалить то, что уже помечено, то скорость вновь становится нормальной.
Как обойти данную хрень? Чтоб сразу пометить всё, а потом всё удалить без потери в скорости?

ТА перевёл на самый первый документ в базе.
1 AntiBuh
 
23.07.14
16:04
а чо этой обычной обработкой сразу не выпилить?
2 Eeakie
 
23.07.14
16:05
(1) Ссылки нужно сохранить. Много документов друг на друга ссылкаются. Думаю, если их по каждому удаляемому документу искать внутри обработки, то будет еще дольше.
3 DeiMos
 
23.07.14
16:09
(2): Так сохраняй предварительно в список значений.
Потом по этому СЗ иди и ищи объекты - помечай их.
4 Эльниньо
 
23.07.14
16:11
Попробуй транзакциями по 100 штук
5 Eeakie
 
23.07.14
16:14
(3) Немного не понял ход мыслей... взять объект, записать в СЗ, а потом шерстить СЗ, ища ссылки на каждый объект?
(4) Сейчас попробую.
6 КонецЦикла
 
23.07.14
16:16
ТА перенести перед перед удаляемым документом
По штук 100 можно помечать
7 NS
 
23.07.14
16:17
(0) Скорость падает из-за "особенностей" SQL-а.
Простейший способ обойти - сделать выход из 1С после определенного количества документов, потом по шедулеру вход, с автоматическим запуском обработки. Ну и как выше написано - удалять в транзакциях, по 100-1000 документов.
8 КонецЦикла
 
23.07.14
16:18
Да, помнится при восстановлении посл-ей юзал реконнект натив
9 Eeakie
 
23.07.14
16:21
(6) Каждый раз переность ТА на удаляемый документ?
(7) Тоже была мысль в планировщик запихать через каждые 2 месяца помеченных.
10 NS
 
23.07.14
16:23
(9) ТА перед началом обработки убрать в самое начало, а вернуть только после пометки всех документов. Естественно.
Насчет планировщика была правильная мысль. Ибо обработка мало того что замедляется, она после большого количества данных может просто упасть.
11 Eeakie
 
23.07.14
16:24
(10) ТА убрал на самое начало, да. Буду пробовать через планировщик, наверное, делать. Самый простой выход, как мне кажется.
12 DeiMos
 
23.07.14
16:29
(5): Да. Именно так.
Транзакциями по 100-1000 записей СЗ.
13 Ёпрст
 
гуру
23.07.14
16:34
(0) тупо так
delete жур from _1sjourn as Жур where Жур.date_time_iddoc <=:КонДата~
далее почистить таблички шапок/тч документов по условию
iddoc not in (select iddoc from _1sjourn)

аналогично с табличками движений регистра, проводками и операциями + почистить табличку ссылок  и _1sconst
пересчитать итоги, наслаждаться.
14 Eeakie
 
23.07.14
16:39
(13) Если б умел так "тупо :)", то давно бы сделал. Пытался когда-то прямыми удалить, но не врубился как почистить движения регистров. Да вообще пока что совсем мало опыта прямыми выкашивать документы.
15 Eeakie
 
23.07.14
16:45
(13) И, кстати, если в наглую так косить, то удалится всё, что есть. А некоторые надо оставить, ссылки на которые есть в документах нынешних.
16 Eeakie
 
23.07.14
16:46
Ну, да ладно. Как прижмёт, так и до удаления прямыми дойду. А пока через планировщик буду мутить :)
17 Ёпрст
 
гуру
23.07.14
16:50
(15) как бэ, условия в текстах запроса еще никто не отменял
18 Eeakie
 
23.07.14
16:54
(17) Не знаю как ссылки проверить в прямом запросе. Ну гуглил правда...
19 Ёпрст
 
гуру
23.07.14
17:02
(18) через запрос к 1SCRDOC
20 ДенисЧ
 
23.07.14
17:02
(19) нуну. Если у меня в реквизите справочника будет ссылка на документ, никакой scrdoc об этом не узнает.
21 Eeakie
 
23.07.14
17:14
(20) В справочниках, к счастью, ссылок на документы нет. Только если в периодике.
22 Ёпрст
 
гуру
23.07.14
17:42
(20) ну дык..он же вроде как доки пока удаляет :)
23 ДенисЧ
 
23.07.14
17:44
(22) Ссылка-то есть...
24 NS
 
23.07.14
20:13
А зачем ссылки проверять? Ты же не удаляешь, а помечаешь на удаление.
25 Pit0n_08
 
23.07.14
20:45
А база SQL или DBF?
26 Pit0n_08
 
23.07.14
20:53
На файловой удалял файлы RG.dbf и RA.dbf, штатной обработкой помечал на удаление, штатно удалял и перепроводил оставшиеся. Удаление порядка 230 т. доков , проведение оставщихся, ТиИ и сжатие ИБ заняло совокупно 3,5 часа на сервере 10-летней давности. Предварительно обработкой на конец обрезаемого периода были созданы документы по вводу нужных остатков (непроведенные).
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан