Имя: Пароль:
1C
 
Почему после чистки РС Версии объектов объем базы не уменьшился?
0 gerthog
 
26.09.14
09:29
Запустил обработку:

Процедура ОчиститьНаДату(ДатаОчистки)
    
    Состояние("Обрабатываются данные за: "+Формат(ДатаОчистки,"ДЛФ=DD"));
    
    ЗапросОчистка = Новый Запрос;

    ЗапросОчистка.Текст = "ВЫБРАТЬ
                          |    ВерсииОбъектов.Объект,
                          |    ВерсииОбъектов.НомерВерсии,
                          |    ВерсииОбъектов.ВерсияОбъекта,
                          |    ВерсииОбъектов.АвторВерсии,
                          |    ВерсииОбъектов.ДатаВерсии,
                          |    ВерсииОбъектов.УдалитьСжато
                          |ИЗ
                          |    РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
                          |ГДЕ
                          |    ВерсииОбъектов.ДатаВерсии >= &НачПериода
                          |    И ВерсииОбъектов.ДатаВерсии <= &КонПериода";
    
    ЗапросОчистка.Параметры.Вставить("НачПериода",НачалоДня(ДатаОчистки));
    ЗапросОчистка.Параметры.Вставить("КонПериода",КонецДня(ДатаОчистки));
    
    Выборка = ЗапросОчистка.Выполнить().Выбрать();
    
    НовыйНомерВерсии=1;
    
    Пока Выборка.Следующий() Цикл
        ВерсииОбъектов = РегистрыСведений.ВерсииОбъектов;
        
        МенеджерЗаписиИИО = ВерсииОбъектов.СоздатьМенеджерЗаписи();
        МенеджерЗаписиИИО.Объект       = Выборка.Объект;
        МенеджерЗаписиИИО.НомерВерсии  = Выборка.НомерВерсии;
        МенеджерЗаписиИИО.Прочитать();
        
        МенеджерЗаписиИИО.Объект       = Справочники.Номенклатура.ПустаяСсылка();
        МенеджерЗаписиИИО.НомерВерсии  = НовыйНомерВерсии;
        МенеджерЗаписиИИО.ВерсияОбъекта = Неопределено;
        МенеджерЗаписиИИО.Записать();
        
        НовыйНомерВерсии=НовыйНомерВерсии+1;
        
    КонецЦикла;
    
    НаборЗаписей = РегистрыСведений.ВерсииОбъектов.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Объект.Установить(Справочники.Номенклатура.ПустаяСсылка());
    НаборЗаписей.Записать();
    
    Сообщить ("за: "+Формат(ДатаОчистки,"ДЛФ=DD")+" очищено "+НовыйНомерВерсии+" записей." ,СтатусСообщения.Внимание);
    
КонецПроцедуры    

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Если ЗначениеЗаполнено(ДатаПо)=Ложь Тогда
        Предупреждение("Не указана дата очистки !",10);
        Возврат;
    КонецЕсли;    
    
    ЗапросДаты = Новый Запрос;
    
    ЗапросДаты.Текст="ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    НАЧАЛОПЕРИОДА(ВерсииОбъектов.ДатаВерсии, ДЕНЬ) КАК ДатаВерсии
    |ИЗ
    |    РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
    |ГДЕ
    |    НАЧАЛОПЕРИОДА(ВерсииОбъектов.ДатаВерсии, ДЕНЬ) <= &ДатаПо
    |
    |УПОРЯДОЧИТЬ ПО
    |    ДатаВерсии";
    
    ЗапросДаты.Параметры.Вставить("ДатаПо",ДатаПо);
    
    ВыборкаДаты = ЗапросДаты.Выполнить().Выбрать();
    
    Пока ВыборкаДаты.Следующий() Цикл
        
        ОбработкаПрерыванияПользователя();
        
        ОчиститьНаДату(ВыборкаДаты.ДатаВерсии);
        
    КонецЦикла;
    
    Предупреждение("Обработка завершена !",10);
    
КонецПроцедуры


Чистка шла всю ночь, но база не уменьшилась ни на метр, почему?
1 ДенисЧ
 
26.09.14
09:29
А базу переиндексировать и сжать - не забыл?
2 gerthog
 
26.09.14
09:32
(1)Забыл)