どのようにして CustTable を InventTable に参加させましたか? これは、私が信じているデカルト結合にすぎません。これは、可能なすべてのアイテムに対するすべての可能な顧客であり、とにかく本質的に遅いです。
また、価格設定/貿易協定/割引の性質は頻繁に変更されるため、特に日付範囲、特定の数量のしきい値または単位に関する貿易協定がある場合は、すべての顧客のすべての価格が何であるかの実行中のテーブルを保持することは実際には現実的ではありません。出てきた倉庫など
ここにあなたがやりたいことをするためのコードがあります。あなたがしていることよりも速く動作すると思います。私はすぐにこれを書きましたが、動作するはずであり、整数の区切りを削除する必要があります。私はそれを永遠に実行したくありませんでした。
static void Job66(Args _args)
{
PriceDisc priceDisc;
container retVal;
CustTable custTable;
InventTable inventTable;
InventTableModule inventTableModule;
int i, n;
;
while select custTable
{
i++;
if (i>5)
break;
n = 0;
while select inventTable
join inventTableModule
where inventTableModule.ItemId == inventTable.ItemId &&
inventTableModule.ModuleType == ModuleInventPurchSales::Sales
{
n++;
if (n>10)
break;
retVal = priceDisc::findItemPriceAgreement(ModuleInventPurchSales::Sales,
inventTable.ItemId,
InventDim::findOrCreateBlank(false),
inventTableModule.UnitId,
SystemDateGet(),
1,
custTable.AccountNum,
custTable.Currency,
custTable.PriceGroup);
info(strfmt("%1 - %2 - %3 - %4 - %5 - %6 - %7 - %8 - %9", custTable.AccountNum,
custTable.Name,
inventTable.ItemId,
inventTable.ItemName,
conPeek(retVal, 1), // priceDisc.price(),
conPeek(retVal, 2), // priceDisc.markup(),
conPeek(retVal, 3), // priceDisc.priceUnit(),
conPeek(retVal, 4), // priceDisc.deliveryDays(),
conPeek(retVal, 5))); // priceDisc.calendarDays()];
}
}
}