• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Allexei
  • Дата начала
A

Allexei

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

Zab

Если база лежит в dbf, то после свертки надо еще убрать из файлов удаленные строки. (dbf на самом деле не удаляет записи непосредственно, а отмечает их как удаленные.) Это можно сделать в режиме тестирование и исправление, в конфигураторе. Установи птичку "упаковка таблиц информационной базы"
 
A

Allexei

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

BVS

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

AMaDeus

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

LSH

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

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

BVS

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

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

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

Allexei

Хм... Все эт конечно сдорова....но написать обработку которая бы грамотно все урезала мне наврядли по силам.Уж очень много в 1с взаимосвязаных обектов.Я вот что мыслю, может проше создать новую базу и в нее выгрузить данные?
 
L

LSH

Allexei

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

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

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

Zab

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

skazan

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

LSH

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

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

kaa

Если такой размер баз я б задумался о переходе на SQL
Хм... Все эт конечно сдорова....но написать обработку которая бы грамотно все урезала мне наврядли по силам.Уж очень много в 1с взаимосвязаных обектов.Я вот что мыслю, может проше создать новую базу и в нее выгрузить данные?
Если не по силам и денег жаль то вено, заведи новую базу введи остаточки и сфё
 
V

vbs

Выгрузку в бухгалтерии можно сделать так :
// формируем таблицу значений
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) и другой программой аналогично загружаем в пустую копию базы
Кстати, сам напишешь все эти примочки - приобретешь неоценимый опыт
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!