если у вас тормоза при нажатии кнопочки запросы в шапках (заказо/закупок..) то предлагаю следующее:
есть такой метод на карте (MAP) - CustVendInvoiceJour.factureJourSortedList_RU
X++:
DIS :
// Header markups
while select factureJour
join RecId from factureTrans
join RecId from markupTrans
where factureJour.Module == module &&
factureJour.CustVendInvoiceAccount == this.InvoiceAccount &&
factureTrans.FactureId == factureJour.FactureId &&
factureTrans.Module == module &&
factureTrans.FactureLineType == FactureLineType_RU::Markup &&
markupTrans.RecId == factureTrans.MarkupRefRecId &&
markupTrans.TransTableId == this.TableId &&
markupTrans.TransRecId == this.RecId
{
if ( ! ret.find(factureJour))
{
ret.ins(factureJour);
}
}
// Line markups
while select factureJour
join RecId from factureTrans
join RecId from markupTrans
join RecId from custVendInvoiceTrans
where factureJour.Module == module &&
factureJour.CustVendInvoiceAccount == this.InvoiceAccount &&
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 == this.Num &&
custVendInvoiceTrans.InvoiceNum == this.InvoiceId &&
(module == FactureModule_RU::Cust ||
(module == FactureModule_RU::Vend &&
custVendInvoiceTrans.PurchInternalInvoiceId == this.PurchInternalInvoiceId)) &&
custVendInvoiceTrans.InvoiceDate == this.InvoiceDate &&
custVendInvoiceTrans.NumberSequenceGroupId
== this.NumberSequenceGroupId
{
if ( ! ret.find(factureJour))
{
ret.ins(factureJour);
}
}
в запросах вся надежда на сиквел (как бы правильно), но вот сиквел на нашей базе начал интересный план придумывать : оба запроса начинаются с выборки по factureTrans, что чем дальше - тем больше выражается в задержках.
Пришлось явно сиквелу сказать что делать: для первого запроса наилучшую селективность обеспечивает MARKUPTRANS, для второго карта CUSTINVOICETRANS - имеем:
X++:
// Header markups
// SHiSHok.FRA_Optimize -->
factureJour.clear();
while select forceselectorder forcenestedloop forceplaceholders RecId from markupTrans
join RecId from factureTrans
join * from factureJour index CustVendModuleIdx
where
markupTrans.TransTableId == this.TableId &&
markupTrans.TransRecId == this.RecId &&
factureTrans.FactureLineType == FactureLineType_RU::Markup &&
factureTrans.MarkupRefRecId == markupTrans.RecId &&
factureJour.FactureId == factureTrans.FactureId &&
factureJour.Module == factureTrans.Module &&
factureJour.Module == module &&
factureJour.CustVendInvoiceAccount == this.InvoiceAccount
{
if ( ! ret.find(factureJour))
{
ret.ins(factureJour);
}
}
// Line markups
while select forceselectorder forcenestedloop forceplaceholders RecId from custVendInvoiceTrans
join RecId from markupTrans
join RecId from factureTrans
join * from factureJour index CustVendModuleIdx
where
custVendInvoiceTrans.SalesPurchId == this.Num &&
custVendInvoiceTrans.InvoiceNum == this.InvoiceId &&
custVendInvoiceTrans.InvoiceDate == this.InvoiceDate &&
custVendInvoiceTrans.NumberSequenceGroupId
== this.NumberSequenceGroupId &&
(module == FactureModule_RU::Cust ||
(module == FactureModule_RU::Vend &&
custVendInvoiceTrans.PurchInternalInvoiceId == this.PurchInternalInvoiceId)) &&
markupTrans.TransTableId == custVendInvoiceTrans.TableId &&
markupTrans.TransRecId == custVendInvoiceTrans.RecId &&
factureTrans.FactureId == factureJour.FactureId &&
factureTrans.Module == factureJour.Module &&
factureTrans.FactureLineType == FactureLineType_RU::Markup &&
factureTrans.MarkupRefRecId == markupTrans.RecId &&
factureJour.Module == module &&
factureJour.CustVendInvoiceAccount == this.InvoiceAccount
{
if ( ! ret.find(factureJour))
{
ret.ins(factureJour);
}
}
// SHiSHok.FRA_Optimize <--
теперь запросы не нервируют.