Показать сообщение отдельно
Старый 05.03.2009, 09:04   #1  
bobski is offline
bobski
Участник
 
38 / 11 (1) +
Регистрация: 01.10.2008
Navision Создание большого числа заказов на продажу. Падение скорости загрузки.
Доброго всем дня, уважаемые знатоки, вопрос следущий. Имеется текстовый файл с операциями из другой системы (не Ax), разделитель ";" читаем его используя класс ASCIio, тянем контейнерами построчно.
Данные каждой строки проверяются на правильность. Если проверка пройдена, создатся заказ (если в строке указан новый номер документа) и строка по проверенной строке-контейнеру.
Затем в контейнер тянется следующая строчка. Процесс отражается в прогресс баре.
Выгладит код по созданию примерно так:

X++:
//Создание Заказов на продажу
static void SalesOrderCreation(Args _args)
{ 
SalesTable salesTable; 
NumberSeq NumberSeq; 
SalesLine salesLine; 
InventDim IDim; 
; 
ttsbegin; 
NumberSeq = NumberSeq::newGetNumFromCode(SalesParameters::numRefSalesId).numberSequence);
salesTable.SalesId = NumberSeq.num(); 
salesTable.initValue(); 
salesTable.CustAccount = "некий клиент";
salesTable.initFromCustTable(); 
salesTable.InventLocationId = "некий склад"; 
salesTable.insert(); 
//..............строки
salesLine.clear(); 
salesLine.SalesId = salesTable.SalesId; 
salesLine.ItemId = "некая номенклатура";
IDim.InventColorId ="ххх"; //Измерения
IDim.InventLocationId = "ууу"; 
IDim = InventDim::findOrCreate(IDim); 
.............................. // Ещё всякое заполнение полей
salesLine.InventDimId = IDim.inventDimId; 
 salesLine.createLine(true,
  true,
  true,
  true,
  false,
  false,
  true,
  false,
salesLine.InventTransId);
ttscommit; 
}

Проблема же заключается в:
В самом начале затяжки файла (120000 операций) процесс идет очень резво - примерно по 300 записей за такт и оставшееся время оценивается 7 минут (по данным прогресс бара). С течением времени первый из показателей плавно снижается, соответственно оцениваемое время растет. На рубеже в 20000 записей данные выглядят так - операций за обновление прогресс бара ориентировочно = 50, а время до завершения = 22 минуты. Становится ясно, что до конца загрузки система не дотянет. От этого становится неимоверно грустно. Как добиться того, что бы показатели скорости обработки не падали? В каком направлении копать? Возможно нужно очищать память или ещё что-нибудь? Подскажите, не оставте без внимания. Заранее благодарен.