Всем привет.Подскажите плиз как решить такую проблему.Есть 2 конфы Торговля- Склад и Бухгалтерия, работа с ними ведется уже года 4, обе базы стали огромного размера!ТС 3 гига, Б- гиг, ну и соотвественно тормоза из- за этого дикие!Как можно уменьшить их размеры?Пробовал сделать свертку, размер ни на метр не уменьшился.
Если база лежит в dbf, то после свертки надо еще убрать из файлов удаленные строки. (dbf на самом деле не удаляет записи непосредственно, а отмечает их как удаленные.) Это можно сделать в режиме тестирование и исправление, в конфигураторе. Установи птичку "упаковка таблиц информационной базы"
Сделал как ты сказал, свернул базу по прошлый месяц, в конфигураторе поставил галочку.Результат минус 5 метров.Маловато.... Может подскажешь еще какиенибудь способы?
ТС насколько помню использует в работе Оперативные итоги, а свертка влияет на бухгалтерские. Попробуй использовать для обрезания своей базы какой нибудь специализированной обработкой для ТС.
Можно удалить лишние/старые внешние отчеты, например, в бух-ии регламентированная отчетность прилично места занимает; обрезать файлик 1cv7.mlg .
Ну и последнее и самое сложное - обработку каку-нить набацай убирающую из базы все старые неактуальные данные.
Хм... Все эт конечно сдорова....но написать обработку которая бы грамотно все урезала мне наврядли по силам.Уж очень много в 1с взаимосвязаных обектов.Я вот что мыслю, может проше создать новую базу и в нее выгрузить данные?
Allexei
Смысл свертки в том, что до определенной даты все документы убиваются, а вместо них создается один документ (в случае оперучета) или несколько операций (в случае бухучета), которые сделают движения по остаткам регистров или плану счетов на эту дату.
Если сможете сделать такой перенос, который перетащит справочники и документы в новую базу, а затем, проанализирует данные с начала работы по дату свертки и остатки перенесет в новый документ - тогда вперед.
Но это ИМХО из пушки по воробьям. Проще написать свертку.
А вообще - советую обратиться к специалистам, если уж боитесь, что не хватит квалификации на реализацию того или иного механизма.
Allexei, че-то подумалось... может у тебя в каталоге архивов море каких-нить или еще чего, к данным основным отношения не имеющее? А ты мучаешь бедную базу. Основной объем должны занимать *.dbf и *.cdx файлики. Всякие архивы, экзешники, экселевское файло, *.mxl, *.xml могут случайно быть забытыми и неплохо весить... попробуй убрать из базы всякие гадости подозрительные.
Попробуй: В конфигураторе - "Выгрузить данные", "Загрузить данные"
У меня при такой операции база Торговли уменьшилась с 2 гиг до 1,2. Загружает, правда долго, я оставлял на ночь.
Если такой размер баз я б задумался о переходе на SQL
Выгрузку в бухгалтерии можно сделать так :
// формируем таблицу значений
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) и другой программой аналогично загружаем в пустую копию базы
Кстати, сам напишешь все эти примочки - приобретешь неоценимый опыт
Русская версия Invision Power Board (http://www.nulled.ws)
© Invision Power Services (http://www.nulled.ws)