Уменьшение размера базы

Тема в разделе "1C и всё что с ней связано", создана пользователем Allexei, 2 май 2008.

  1. Allexei

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    Всем привет.Подскажите плиз как решить такую проблему.Есть 2 конфы Торговля- Склад и Бухгалтерия, работа с ними ведется уже года 4, обе базы стали огромного размера!ТС 3 гига, Б- гиг, ну и соотвественно тормоза из- за этого дикие!Как можно уменьшить их размеры?Пробовал сделать свертку, размер ни на метр не уменьшился.
     
  2. Zab

    Zab Well-Known Member
    1C Team

    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    Если база лежит в dbf, то после свертки надо еще убрать из файлов удаленные строки. (dbf на самом деле не удаляет записи непосредственно, а отмечает их как удаленные.) Это можно сделать в режиме тестирование и исправление, в конфигураторе. Установи птичку "упаковка таблиц информационной базы"
     
  3. Allexei

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    Сделал как ты сказал, свернул базу по прошлый месяц, в конфигураторе поставил галочку.Результат минус 5 метров.Маловато.... Может подскажешь еще какиенибудь способы?
     
  4. BVS

    BVS Гость

    ТС насколько помню использует в работе Оперативные итоги, а свертка влияет на бухгалтерские. Попробуй использовать для обрезания своей базы какой нибудь специализированной обработкой для ТС.
     
  5. AMaDeus

    AMaDeus Гость

    Можно удалить лишние/старые внешние отчеты, например, в бух-ии регламентированная отчетность прилично места занимает; обрезать файлик 1cv7.mlg .
    Ну и последнее и самое сложное - обработку каку-нить набацай убирающую из базы все старые неактуальные данные.
     
  6. LSH

    LSH Гость

    Это как в анекдоте... про еврея и козу. "А теперь продай козу и жить станет легче..."
    Из-за внешних отчетов и прочего стороннего файла в базе - работа не замедляется. Файл mlg тормозит, но ооочень мало. Так, что удалением всякого мусора из папки с базой скорости не добавишь.

    Тут надо написать грамотную свертку заточенную именно под вашу конфигурацию, обрезать базу, а уж потом делать упаковку dbf-ок, чистить ЖР и прочие косметические вещи.
     
  7. BVS

    BVS Гость

    Ага представляю скоко можно писать чтоб аж 3 гига занять

    Да, это приличное место для 3 гигов будет каплей в море

    Верно, для этого внешнии отчеты и существуют, чтоб использоваться только когда нужно, а не постоянно когда запущена 1С.
    Для ускорения работы (особенно когда большие базы) может помочь дефрагментация диска (Сам испытывал)
     
  8. Allexei

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    Хм... Все эт конечно сдорова....но написать обработку которая бы грамотно все урезала мне наврядли по силам.Уж очень много в 1с взаимосвязаных обектов.Я вот что мыслю, может проше создать новую базу и в нее выгрузить данные?
     
  9. LSH

    LSH Гость

    Allexei

    Смысл свертки в том, что до определенной даты все документы убиваются, а вместо них создается один документ (в случае оперучета) или несколько операций (в случае бухучета), которые сделают движения по остаткам регистров или плану счетов на эту дату.

    Если сможете сделать такой перенос, который перетащит справочники и документы в новую базу, а затем, проанализирует данные с начала работы по дату свертки и остатки перенесет в новый документ - тогда вперед.
    Но это ИМХО из пушки по воробьям. Проще написать свертку.

    А вообще - советую обратиться к специалистам, если уж боитесь, что не хватит квалификации на реализацию того или иного механизма.
     
  10. Zab

    Zab Well-Known Member
    1C Team

    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    Allexei, че-то подумалось... может у тебя в каталоге архивов море каких-нить или еще чего, к данным основным отношения не имеющее? А ты мучаешь бедную базу. Основной объем должны занимать *.dbf и *.cdx файлики. Всякие архивы, экзешники, экселевское файло, *.mxl, *.xml могут случайно быть забытыми и неплохо весить... попробуй убрать из базы всякие гадости подозрительные.
     
  11. skazan

    skazan Гость

    Попробуй: В конфигураторе - "Выгрузить данные", "Загрузить данные"
    У меня при такой операции база Торговли уменьшилась с 2 гиг до 1,2. Загружает, правда долго, я оставлял на ночь.
     
  12. LSH

    LSH Гость

    Человек же написал "тормоза дикие"... :D
     
  13. kaa

    kaa Гость

    Если такой размер баз я б задумался о переходе на SQL
    Если не по силам и денег жаль то вено, заведи новую базу введи остаточки и сфё
     
  14. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Выгрузку в бухгалтерии можно сделать так :
    // формируем таблицу значений
    DocT = CreateObject("ValueTable");
    DocT.NewColumn("Account","String",12,,"Счет",24);
    DocT.NewColumn("SumR","Number",15,2,"Д*цензура*",14);
    DocT.NewColumn("SumP","Number",15,2,"Кредит",14);
    DocT.NewColumn("KD","Number",12,2,"Кол Д*цензура*",14);
    DocT.NewColumn("KK","Number",12,2,"Кол Кредит",14);
    DocT.NewColumn("SK1","String",45,,"Вид",24);
    DocT.NewColumn("SK2","String",45,,"Вид",24);
    DocT.NewColumn("SK3","String",45,,"Вид",24);
    DocT.NewColumn("Code","String",12,,"Код",12);
    DocT.NewColumn("Code2","String",12,,"Код",12);
    DocT.NewColumn("Code3","String",12,,"Код",12);

    BTotal = CreateObject("AccountTotals");
    BTotal.UseSubconto(Account.SubcontoKind(1),,1,0);
    BTotal.UseSubconto(Account.SubcontoKind(2),,1,0);
    BTotal.UseSubconto(Account.SubcontoKind(3),,1,0);

    if BTotal.DoQuery(Date2,Date2,Account) = 1 then
    BTotal.SelectSubconto();
    While BTotal.GetSubconto() = 1 do
    // в созданную таблицу выгружаем итоги
    // чтобы не перегружать пост - пример для 1-го субконто
    DocT.NewLine();
    DocT.SK1 = TrimAll(String(Account.SubcontoKind().SubcontoType()));

    if BTotal.Account.Активный = 1 then
    if BTotal.СКД() < 0 then
    DocT.SumP = - BTotal.СКД();
    endif;
    endif;
    if BTotal.Account.Активный = 2 then
    if BTotal.СКК() < 0 then
    DocT.SumR = - BTotal.СКК();
    endif;
    endif;
    if Find(DocT.SK1,"Справочник") > 0 then
    DocT.Code = BTotal.Субконто().Code;

    endif;
    if Find(DocT.SK1,"Перечисление") > 0 then
    DocT.Code = BTotal.Субконто().Number();

    endif;
    DocT.Account = TrimAll(String(BTotal.Account));
    if BTotal.СКК() > 0 then
    DocT.SumP = BTotal.СКК();
    DocT.KK = BTotal.СКК(3)
    endif;

    if BTotal.СКД() > 0 then
    DocT.SumR = BTotal.СКД();
    DocT.KD = BTotal.СКД(3)
    endif;
    enddo;
    //отдельно надо обрабатывать ситуацию
    // if (Account.SubcontoCount() = 0) OR (Account.TurnoversOnly() = 1) then
    //но это уже детали
    // далее таблицу сохраняем во внешнем файле (я предпочитаю DBF) и другой программой аналогично загружаем в пустую копию базы
    Кстати, сам напишешь все эти примочки - приобретешь неоценимый опыт
     
Загрузка...

Поделиться этой страницей