Показать сообщение отдельно
Старый 14.01.2011, 11:09   #26  
AvrDen is offline
AvrDen
Участник
 
134 / 26 (1) +++
Регистрация: 04.08.2005
Адрес: Усть-Каменогорск
Изменили код Classes\SalesFormLetter\postUpdate
X++:
protected void  postUpdate()
{
    SalesParmTable  localSalesParmTable;
    ParmId          parmIdPrev;
    SalesId         salesIdPrev;
    ;

    ttsbegin;

    localSalesParmTable = this.setForUpdateSalesParmTable();

    localSalesParmTable.StartDateTime = startDateTimeTable;
    localSalesParmTable.EndDateTime   = DateTimeUtil::newDateTime(systemdateget(),timenow(),DateTimeUtil::getUserPreferredTimeZone());

    localSalesParmTable.updateParmJobStatusExecuted();

    salesParmLine.clear();
    // Sales totals are nulled in order to force a recalculation of the sales totals
    // which are then stored in the SalesTable.estimate field for utilization during credit limit check
    salesTotals = null;

    recordListSalesParmLine.first(salesParmLine);
    while (salesParmLine)
    {
        if (salesParmLine.OrigSalesId != salesIdPrev || salesParmLine.ParmId != parmIdPrev)
        {
            //counting number of SalesOrders we deal with
            if (salesParmLine.OrigSalesId != salesIdPrev)
            {
                ++numberOfRecords;
            }
            //  13.01.2011 AVRDV -->
            /*
            salesTable = salesParmLine.salesTable(true);
            if (salesTable)
            {
                salesTable.updateDocumentStatus(this.documentStatus());
                salesTable.updateBackStatus();
                this.updateSalesType();
                this.createBackorderLines();
                salesTable.updateDeadline(salesParmUpdate.RespiteDate);

                if (salesTable.SalesId != salesParmTable.SalesId)
                {
                    // If this is not the primary sales order in the summary order,
                    // void the credit card preauthorization that may exist as it is no longer valid
                    this.voidCreditCardPreauthorize();
                }
            }
            */
            //  13.01.2011 AVRDV <--
            localSalesParmTable = salesParmLine.salesParmTable(true);
            if (localSalesParmTable)
            {
                localSalesParmTable.updateParmJobStatusExecuted();
            }
        }

        salesIdPrev = salesParmLine.OrigSalesId;
        parmIdPrev  = salesParmLine.ParmId;

        if (!recordListSalesParmLine.next(salesParmLine))
            break;
    }
    //   13.01.2011 AVRDV -->
    salesTable = SalesTable::find(salesIdPrev,true);
    if (salesTable)
    {
        salesTable.updateDocumentStatus(this.documentStatus());
        salesTable.updateBackStatus();
        this.updateSalesType();
        this.createBackorderLines();
        salesTable.updateDeadline(salesParmUpdate.RespiteDate);

        if (salesTable.SalesId != salesParmTable.SalesId)
        {
            // If this is not the primary sales order in the summary order,
            // void the credit card preauthorization that may exist as it is no longer valid
            this.voidCreditCardPreauthorize();
        }
    }
    //   13.01.2011 AVRDV <--

    ttscommit;
}
В результате получили обработку заказа на 2500 строк 10 минут, вместо 20 минут.