Резервирование 10000 номеров из номерной серии
Привет всем!
Передо мной стоит задача: интеграция Аксапты 3.0 с другой системой. Для этой другой системы нужно ежедневно запрашивать по несколько тысяч номеров счетов-фактур из Аксапты. Потом эта система создаст реальные счета-фактуры, которые будут снова вовращены в Аксапту и сохранены с заранее зарезервированными номерами.
Следующий написанный мною код выполняет эту задачу:
//09.07.2004 DDemidov - Резервирование номеров счетов-фактур аванса для САП
static void ReserveFacturaNumbers_Avans(int _howManyNumbers, TransDate _transDate)
{
NumberSeq factureNumberSeq;
str num;
int i;
SAPReservNumbers_Avans sAPReservedFacturaNumbers;
;
delete_from sAPReservedFacturaNumbers;
try
{
ttsbegin;
factureNumberSeq = NumberSeq::newGetNum
(CustParameters::numRefCustPrepaymentFactureId_RU());
for (i=0; i<_howManyNumbers; i++)
{
num = factureNumberSeq.num();
factureNumberSeq.used();
sAPReservedFacturaNumbers.clear();
sAPReservedFacturaNumbers.ReservedNum = num;
sAPReservedFacturaNumbers.TransDate = _transDate;
sAPReservedFacturaNumbers.insert();
}
ttscommit;
}
catch(Exception::Error)
{
return;
}
}
Данный код выбрасывает новые номера в специальную таблицу, из которой потом другая система берет эти номера. Каждый новый номер сохраняется в отдельной строке этой специальной таблицы
Проблема: это работает очень медленно. Причем убирал код, который кладет зарезервированные номера в специальную таблицу, быстродействие не повысилось. Медленно работает функция factureNumberSeq.num().
Есть ли способ получить нужное количество номеров за одну итерацию, а не в цикле? И при этом, чтобы номерная серия продолжала корректно работать, т.е. возвращать уникальные номера с инкрементным возрастанием?
|