Здравия всем...
Вот такой вот запросик при обработке фактур занимает сейчас секунд 30 минимум при выполнении...
Местонахождение - classes\FactureCalcSettlement_RU\calcFactureAmounts line 50
X++:
// Process line markups
while select sum(LineAmount), sum(VAT), sum(TaxAmount),sum(Qty), maxOf(ItemName) from factureTrans
group by TaxCode, Dimension, ExchRate,InventTransId, InternalInvoiceId,InvoiceId,NumberSequenceGroup,markupRefRecId
exists join custVendInvoiceTrans
exists join markupTrans
where factureTrans.FactureId == _factureJour.FactureId &&
factureTrans.Module == module &&
factureTrans.FactureLineType == FactureLineType_RU::Markup &&
markupTrans.RecId == factureTrans.MarkupRefRecId &&
markupTrans.TransTableId == custVendInvoiceTrans.TableId &&
custVendInvoiceTrans.RecId == markupTrans.TransRecId &&
custVendInvoiceTrans.SalesPurchId == _custVendInvoiceJour.Num &&
custVendInvoiceTrans.InvoiceNum == _custVendInvoiceJour.InvoiceId &&
custVendInvoiceTrans.InvoiceDate == _custVendInvoiceJour.InvoiceDate &&
(module == FactureModule_RU::Cust ||
(module == FactureModule_RU::Vend &&
custVendInvoiceTrans.PurchInternalInvoiceId == _custVendInvoiceJour.PurchInternalInvoiceId)) &&
custVendInvoiceTrans.NumberSequenceGroupId
== _custVendInvoiceJour.NumberSequenceGroupId
{
this.addFactureTransAmounts(factureAmounts, factureTrans, _factureJour);
}
При преобразовании его в нечто вот такое, выполнение запроса сводится к сотням миллисекунд, но есть некоторая неуверенность однозначности запросов
X++:
// Process line markups
while select sum(LineAmount), sum(VAT), sum(TaxAmount),sum(Qty), maxOf(ItemName) from factureTrans
group by TaxCode, Dimension, ExchRate,InventTransId, InternalInvoiceId,InvoiceId,NumberSequenceGroup,markupRefRecId
where factureTrans.FactureId == _factureJour.FactureId &&
factureTrans.Module == module &&
factureTrans.FactureLineType == FactureLineType_RU::Markup
exists join markupTrans
where markupTrans.RecId == factureTrans.MarkupRefRecId &&
markupTrans.TransTableId == custVendInvoiceTrans.TableId
exists join custVendInvoiceTrans
where custVendInvoiceTrans.RecId == markupTrans.TransRecId &&
custVendInvoiceTrans.SalesPurchId == _custVendInvoiceJour.Num &&
custVendInvoiceTrans.InvoiceNum == _custVendInvoiceJour.InvoiceId &&
custVendInvoiceTrans.InvoiceDate == _custVendInvoiceJour.InvoiceDate &&
(module == FactureModule_RU::Cust ||
(module == FactureModule_RU::Vend &&
custVendInvoiceTrans.PurchInternalInvoiceId == _custVendInvoiceJour.PurchInternalInvoiceId)) &&
custVendInvoiceTrans.NumberSequenceGroupId
== _custVendInvoiceJour.NumberSequenceGroupId
{
this.addFactureTransAmounts(factureAmounts, factureTrans, _factureJour);
}
С нетерпением жду совета :-)