| 
    
            
         
         | 
    
    
  | 
v7: Обрезание регистров. Удаление документов: что быстрей ? | ☑ | ||||||
|---|---|---|---|---|---|---|---|---|
| 
    0
    
        buhkiller    
     03.04.12 
            ✎
    18:21 
 | 
    
 
        За четыре года надо почистить дбф - базу. Остатки готовы, теперь думаю как быстрей удалить проведенные документы.     
         | 
|||||||
| 
    1
    
        viktor_vv    
     03.04.12 
            ✎
    18:28 
 | 
         
        Сколько их там примерно ?     
         | 
|||||||
| 
    2
    
        viktor_vv    
     03.04.12 
            ✎
    18:29 
 | 
         
        Откатить ТА назад, до первого документа.     
         | 
|||||||
| 
    3
    
        МихаилМ    
     03.04.12 
            ✎
    18:29 
 | 
         
        если пересчета итогов не будет
  
        то всеравно. иначе 2 С точки обрезания назад      | 
|||||||
| 
    4
    
        buhkiller    
     03.04.12 
            ✎
    18:30 
 | 
         
        (1) 80 тысяч     
         | 
|||||||
| 
    5
    
        Ёпрст    
     гуру 
    03.04.12 
            ✎
    18:48 
 | 
         
        быстрее прямым запросом     
         | 
|||||||
| 
    6
    
        Злой Бобр    
     03.04.12 
            ✎
    19:54 
 | 
         
        (0) Откатываем ТА в самое начало. Дальше в транзакциях удаляем порциями по 100+ документов, в зависимости от железа. Дальше восстанавливаем ТА со всеми вытекающими.     
         | 
|||||||
| 
    7
    
        Злопчинский    
     03.04.12 
            ✎
    20:10 
 | 
         
        Если остатки готовы - ВВЕСТИ ДОКУМЕНТЫ ОСТАТКОВ.
  
        потом тупо прибить файлы документов и регитсров. ТИИ с правильными действиями по неразрешенным ссылкам. провести документы ввода остатков.  | 
|||||||
| 
    8
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    08:45 
 | 
         
        (7) какой ты наивный, шо  п..ц.
  
        Во первых, большинство режет базу за какие-то определенные периоды, это раз при этом нужна аналитика в прошлых периодах, это два.  | 
|||||||
| 
    9
    
        Злой Бобр    
     04.04.12 
            ✎
    09:35 
 | 
         
        (7) Замечательно. Человечек режет на 1 января наверное, а ты предлагаешь тупо убить все и вся. Тогда уж сразу предлагай сапасаться вазелином. Ну а что б вазелин зря непропал, перед тем как убить все - неделать бекапов.     
         | 
|||||||
| 
    10
    
        Он    
     04.04.12 
            ✎
    10:00 
 | 
         
        Гы. Присоединяюсь к (0)
  
        Мне надо > 800 000 удалить (5) 1. Прямым запросом update ISMARK = 1 в Журнал 2. Delete движения в регистрах 3. Delete в DT, DH Что упустил?  | 
|||||||
| 
    11
    
        dk    
     04.04.12 
            ✎
    10:12 
 | 
         
        (10) в журнале значится ismark, а в dt и dh delete? )     
         | 
|||||||
| 
    12
    
        Boroda    
     04.04.12 
            ✎
    10:14 
 | 
         
        (10) Кроме остатков, надо бы еще посмотреть, нет ли документов формирующих периодические значения, и если есть, то м.б. надо будет создавать документ аналогичный остаткам.     
         | 
|||||||
| 
    13
    
        Он    
     04.04.12 
            ✎
    10:16 
 | 
         
        (11) А он там есть? )     
         | 
|||||||
| 
    14
    
        Он    
     04.04.12 
            ✎
    10:16 
 | 
         
        (12) Замётанно     
         | 
|||||||
| 
    15
    
        viktor_vv    
     04.04.12 
            ✎
    10:18 
 | 
         
        (12) Ну периодику можно не документом. Из Wrap.ert можно взять кусок переноса периодики на дату.     
         | 
|||||||
| 
    16
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    10:19 
 | 
         
        (10) делете в  в DT, DH не надо, раз ты просто помечаешь документ на удаление..
  
        + должен занулить все флаги по регистрам + аппкоде + счетчик движений.. + прибить периодику, установленную этим документом + прибить проводки (11) нет  | 
|||||||
| 
    17
    
        viktor_vv    
     04.04.12 
            ✎
    10:23 
 | 
         
        Ну табличные части таки можно и прибить, особенно у тех документов, где они могут быть здоровые.
  
        Если потом стандартным удалением помеченных воспользоваться, пошустрее будет.  | 
|||||||
| 
    18
    
        expertus    
     04.04.12 
            ✎
    10:28 
 | 
         
        Сначала ввод остатков, потом (6). Более скоростного варианта не бывает.     
        С начала до точки обрезания      | 
|||||||
| 
    19
    
        Он    
     04.04.12 
            ✎
    10:29 
 | 
         
        (16) Что - записи в DT, DH останутся? Или ТИИ их чикнет?
  
        APPCODE = 0 ACTCNT = 0 RF* = 0 ?  | 
|||||||
| 
    20
    
        Он    
     04.04.12 
            ✎
    10:31 
 | 
         
        (18) ?     
         | 
|||||||
| 
    21
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    10:32 
 | 
         
        (19) останутся     
         | 
|||||||
| 
    22
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    10:32 
 | 
         
        (18) какая детская наивность     
         | 
|||||||
| 
    23
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    10:35 
 | 
         
        (19) + флаг последовательности еще в 0     
         | 
|||||||
| 
    24
    
        Он    
     04.04.12 
            ✎
    10:36 
 | 
         
        (21) Дык чикнуть надо. Нафига они?
  
        Ещё видимо 1SBLOB прошерстить надо.  | 
|||||||
| 
    25
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    10:43 
 | 
         
        (24) смысл тогда в пустышках какой?
  
        порежь тогда хотя бв табличную часть тока  | 
|||||||
| 
    26
    
        Он    
     04.04.12 
            ✎
    10:47 
 | 
         
        (25) Что штатно делает 1С с DT, DH:
  
        1. При пометке на удаления дока 2. При удалении помеченных ?  | 
|||||||
| 
    27
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    10:49 
 | 
         
        (26)
  
        1.ничего 2.удаляет  | 
|||||||
| 
    28
    
        Азат    
     04.04.12 
            ✎
    10:50 
 | 
         
        (27) разве в ДБФ удаляет?     
         | 
|||||||
| 
    29
    
        Он    
     04.04.12 
            ✎
    10:53 
 | 
         
        (27) Вопрос с DT, DH снят. Ступил малешко.     
         | 
|||||||
| 
    30
    
        viktor_vv    
     04.04.12 
            ✎
    11:00 
 | 
         
        (28) Ну физически нет. Ставит признак в служебное поле. Удаляет физически при сжатии таблиц.     
         | 
|||||||
| 
    31
    
        Magistr001    
     04.04.12 
            ✎
    11:01 
 | 
         
        все равно часть документов останется: потому что были выписки по расчетному счету на основании доков, удаленных в прошлом периоде, а если урежешь прямым запросом, то в выписках повиснут "дыры"     
         | 
|||||||
| 
    32
    
        Magistr001    
     04.04.12 
            ✎
    11:02 
 | 
         
        например: режем на 31-12-2011 док отгрузка товаров был 25-12-2011 а выписка по нему 20-01-2012 и на что будет ссылаться выписка?     
         | 
|||||||
| 
    33
    
        Magistr001    
     04.04.12 
            ✎
    11:05 
 | 
         
        кстати, у меня еще есть связанные между собой доки например Акт на слив ГСМ и Приходная в пути - приходные в пути сидят в декабре, а акты приняли в феврале, и те и те сделали движения и по регистрам и по счетам - делаю на последнем дне дока приходные в пути сторнирующие доки ввода остатков по счету и по регистру. ну и оставляю все доки протоколов цен аж с сентября чтоб периодику не трогать, а в последнюю резку ваще выкинул модуль  удаления периодики - меньше мороки.     
         | 
|||||||
| 
    34
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    11:06 
 | 
         
        (32) читай внимательнее - документы метятся на удаление, не удаляются     
         | 
|||||||
| 
    35
    
        Magistr001    
     04.04.12 
            ✎
    11:06 
 | 
         
        Я к чему: прямые запросы это конечно быстро - только потом гимора больше.     
         | 
|||||||
| 
    36
    
        Он    
     04.04.12 
            ✎
    11:06 
 | 
         
        (32) На док, помеченный на удаление.
  
        Ещё вопрос к гуру Скуля: 2005-й База сначала упала в Suspect. После перезагрузки оказалась In Recovery. Что делать, кроме как убить её и восстановить с бекапа?  | 
|||||||
| 
    37
    
        Magistr001    
     04.04.12 
            ✎
    11:06 
 | 
         
        проще действительно транзакциями по сотке доков.     
         | 
|||||||
| 
    38
    
        Он    
     04.04.12 
            ✎
    11:09 
 | 
         
        (37) Сколько времени штатно будет удалятся под лям доков:?     
         | 
|||||||
| 
    39
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    11:11 
 | 
||||||||
| 
    40
    
        viktor_vv    
     04.04.12 
            ✎
    11:12 
 | 
         
        (37) Да не, на его объеме застрелится ждать. Лучше как и планирует. Пометить доки прямыми запросами плюс по максимуму удалить некритические данные, а потом штатное удаление помеченных. Правда тут тоже вопрос сколько будет идти.     
         | 
|||||||
| 
    41
    
        Magistr001    
     04.04.12 
            ✎
    11:14 
 | 
         
        бери железо пошустрее и ...вперед. Я каждый год режу с 2006, так что нет таких проблем - вся резка занимает с отладкой и выверкой максимум выходной.     
         | 
|||||||
| 
    42
    
        Mikeware    
     04.04.12 
            ✎
    11:19 
 | 
         
        (41) Мозг включать не пробовал?     
         | 
|||||||
| 
    43
    
        Mikeware    
     04.04.12 
            ✎
    11:27 
 | 
         
        (36) подождать, пока восстановится.     
         | 
|||||||
| 
    44
    
        Он    
     04.04.12 
            ✎
    11:49 
 | 
         
        (43) Я на копии ждать не стал.
  
        Вопрос был на будущую соломку. Вдруг на рабочей будет тоже. Сисы не в курсах.  | 
|||||||
| 
    45
    
        Он    
     04.04.12 
            ✎
    12:16 
 | 
         
        И так:
  
        1. Прямым запросом update ISMARK = 1 APPCODE, ACTCNT, DS4302, RF* = 0 в Журнал 2. Delete движения в регистрах Что сделать с 1SCONST ? DOCID = "" ?  | 
|||||||
| 
    46
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    12:23 
 | 
         
        (45)
  
        база какая у тебя ? Тис ? Комплексная? Бухня ? Пуб ? ЗЫ:еще флаг последовательности надо занулять  | 
|||||||
| 
    47
    
        0xFFFFFF    
     04.04.12 
            ✎
    12:24 
 | 
         
        (7) Тогда уж проще создать пустую базу и занести остатки. Только историю откуда взять?     
         | 
|||||||
| 
    48
    
        Злой Бобр    
     04.04.12 
            ✎
    12:25 
 | 
         
        На самом деле тема обрезания возникает постоянно, с обострениями под конец и начало года. Воспользоваться поиском и найти 99% ответов на еще непоставленные глупые вопросы. Потом определится с религией - резать самому или найти денег и пусть кто-то сделает. Все. Больше ничего придумать нельзя.     
         | 
|||||||
| 
    49
    
        Он    
     04.04.12 
            ✎
    12:26 
 | 
         
        (46) ТиС обезображенная до неузнаваемости.
  
        F=DS4302 |DocStream flag |N |1 |0 Оно?  | 
|||||||
| 
    50
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    12:28 
 | 
         
        для периодики так будетс
  
        |delete |from _1sconst |where docid IN(SELECT Жур.iddoc FROM _1sjourn as Жур where Жур.ismark =1) ";  | 
|||||||
| 
    51
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    12:29 
 | 
         
        (49) ага.. тока это, проще об этом не думать - писать запрос из 1с с использованием 1cpp, там есть метапарсер имён     
         | 
|||||||
| 
    52
    
        Он    
     04.04.12 
            ✎
    12:58 
 | 
         
        ТА на первый док и удаление с конца дало прирост скорости на порядок.
  
        С моими куцыми знаниями прямых на написание потрачу гораздо больше времени. Поизучаю прямые на других задачах.  | 
|||||||
| 
    53
    
        Ёпрст    
     гуру 
    04.04.12 
            ✎
    13:20 
 | 
         
        (52) зря ты так думаешь
  
        За то время что будет штатно удалять, можно написать всё, тем более, что готовых примеров пруд пруди  | 
|||||||
| 
    54
    
        Mikeware    
     04.04.12 
            ✎
    14:06 
 | 
         
        (45) 
  
        1.формируещь ввод остатков. 1.1 попутно формируешь список документов, которые в этих остаках фигурируют 2. формируешь список документов, устанавливающих значения периодики на дату обрезки. 2.1. если есть документы рагьше даты обрезки - добавляешь их в список 1.1 3. проверяешь ссылкидокументов после даты обрезки - если есть ссылки на документыы раньше даты - добавляешь их в список 1.1 4. удаляешь движения всех документов до даты обрезки, и итоги регистров до этой даты. 5. документы раньше датыобрезки - удаляешь, если они не входят в список 1.1. если входят - снимаешь флаг проведенности, но устанавливаешь признак архивности (чтоб не провели). 6. после в процессе - реиндексируешься. все это не требует ни монопольной работы, ни каких-то особых решений. вставил в шедулер, и пусть пыхтит в часы наименьшей нагрузки базы... впрочем, даже это можно распределить во времени (чтоб еще больше снизить текущую нагрузку), только мне было лениво... И так работает...  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |