Консультация № 95845
21.07.2007, 00:48
0.00 руб.
0 3 3
Имеется своя конфигурация по учету заказов по перевозке грузов и взаиморасчетов с клиентами. Каждый день ИБаза наполняется по 200-400 заказов. В начале эксплуатации 1С работала быстро (в локальной сети 12 users), но через 5 месяцев стала сильно тормозить. Вопрос: Ув.эксперты, подскажите, п-та, идею как увеличить быстродействие 1С? Один из путей я вижу: все заказы за предыдущие месяцы изъять из ИБ, но как это сделать? Заранее спасибо за любой совет.

Обсуждение

Неизвестный
21.07.2007, 02:45
общий
это ответ
Здравствуйте, Ginar!

Стандартной обработки нет обрезания базы -- конфа у вас своя, я так понимаю самописная.
Пожтому придется обработку самому. Принцип простой -- снимаешь остатки по регистрам и бух. счетам на дату X, запоминаешь, удаляешь все документы до даты X, вносишь снятые остатки по регистрам и счетам.
Другого способа ускорить базу вроде и не придумаешь... Ну разве что модули проведения переписать, оптимизировать, ну так все равно до поры до времени ускорение будет ощутимо, а потом все равно резать...
Неизвестный
21.07.2007, 08:06
общий
это ответ
Здравствуйте, Ginar

терминал, SQL - сервер, для начала.
Неизвестный
23.07.2007, 09:33
общий
это ответ
Здравствуйте, Ginar!
1. Перевод на SQL версию.

2. Урезать базу по квартально.
Денлаем копию ИБ.
Пишем обработку по удалению документов, и если надо то и справочников.
Запускаем эту обработку в первой базе с условием меньше или равно какой-то дате, во второй - больше.
После этого заходим в конфигураторе, выбираем: Администрирование->Тестирование и исправлениеИБ и там ставим галочку на сжатие ИБ. И это в двух ИБ.
Для удаления документов достаточно простенького цикла.

Приложение:
//*******************************************Процедура Сформировать() Док=СоздатьОбъект("Документ"); // ДатаВыборки - переменная для вашей даты Док.ВыбратьДокументы(,ДатаВыборки); // Для первой базы //Док.ВыбратьДокументы(ДатаВыборки+1,); // Для Второй базы // Для ускорения обработки можно сделать через транзакцию НачатьТранзакцию(); Пока док.ПолучитьДокумент()=1 Цикл Док.Удалить(); КонецЦикла; ЗафиксироватьТранзакцию();КонецПроцедуры
Форма ответа