Показать сообщение отдельно
Старый 15.12.2011, 00:09   #2  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Джоб
X++:
static void glibs(Args _args)
{
    TmpAccountSum       tmpAccountSum1,
                        tmpAccountSum2;
    Counter             i;
    FreeText            text;
    Counter             startTime;

    #Define.cycles(1000)
    ;

    startTime = WinAPI::getTickCount();
    for (i = 0; i <= #cycles; i++)
    {
        tmpAccountSum1.clear();
        tmpAccountSum2.clear();
        text = int2str(i);
        tmpAccountSum1.AccountNum = strrep("0", 20 - strlen(text)) + text;
        tmpAccountSum2.AccountNum = strrep("0", 20 - strlen(text)) + text;
        tmpAccountSum1.Balance01 = 999999 * 888888;
        tmpAccountSum2.Balance01 = 999999 * 888888;
        tmpAccountSum1.Balance02 = 999999 * 888888;
        tmpAccountSum2.Balance02 = 999999 * 888888;
        tmpAccountSum1.Balance03 = 999999 * 888888;
        tmpAccountSum2.Balance03 = 999999 * 888888;
        tmpAccountSum1.Balance04 = 999999 * 888888;
        tmpAccountSum2.Balance04 = 999999 * 888888;
        tmpAccountSum1.Balance05 = 999999 * 888888;
        tmpAccountSum2.Balance05 = 999999 * 888888;
        tmpAccountSum1.Balance06 = 999999 * 888888;
        tmpAccountSum2.Balance06 = 999999 * 888888;
        tmpAccountSum1.Balance07 = 999999 * 888888;
        tmpAccountSum2.Balance07 = 999999 * 888888;
        tmpAccountSum1.Balance10 = 999999 * 888888;
        tmpAccountSum2.Balance10 = 999999 * 888888;
        tmpAccountSum1.TaxCode = "XXXXXXXXXXXXXXXXXXXX";
        tmpAccountSum2.TaxCode = "XXXXXXXXXXXXXXXXXXXX";
        tmpAccountSum1.CurrencyCode = "XXX";
        tmpAccountSum2.CurrencyCode = "XXX";
        tmpAccountSum1.Posting = 1;
        tmpAccountSum2.Posting = 1;
        tmpAccountSum1.Dimension[1] = "XXXXXXXXXXXXXXXXXXXX";
        tmpAccountSum2.Dimension[1] = "XXXXXXXXXXXXXXXXXXXX";
        tmpAccountSum1.Dimension[2] = "XXXXXXXXXXXXXXXXXXXX";
        tmpAccountSum2.Dimension[2] = "XXXXXXXXXXXXXXXXXXXX";
        tmpAccountSum1.Dimension[3] = "XXXXXXXXXXXXXXXXXXXX";
        tmpAccountSum2.Dimension[3] = "XXXXXXXXXXXXXXXXXXXX";
        tmpAccountSum1.OperationsTax = 1;
        tmpAccountSum2.OperationsTax = 1;
        tmpAccountSum1.TransDate = today();
        tmpAccountSum2.TransDate = today();
        tmpAccountSum1.Txt = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +
                             "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +
                             "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +
                             "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        tmpAccountSum2.Txt = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +
                             "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +
                             "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" +
                             "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        tmpAccountSum1.SortDate = today();
        tmpAccountSum2.SortDate = today();
        tmpAccountSum1.Balance01Cur = 999999 * 888888;
        tmpAccountSum2.Balance01Cur = 999999 * 888888;
        tmpAccountSum1.Qty01 = 999999 * 888888;
        tmpAccountSum2.Qty01 = 999999 * 888888;
        tmpAccountSum1.Qty02 = 999999 * 888888;
        tmpAccountSum2.Qty02 = 999999 * 888888;
        tmpAccountSum1.Qty03 = 999999 * 888888;
        tmpAccountSum2.Qty03 = 999999 * 888888;
        tmpAccountSum1.Voucher = "XXXXXXXXXXXXXXXXXXXX";
        tmpAccountSum2.Voucher = "XXXXXXXXXXXXXXXXXXXX";
        tmpAccountSum1.insert();
        tmpAccountSum2.insert();
    }
    info (strfmt("%1", (WinAPI::getTickCount() - startTime) / 1000));

    startTime = WinAPI::getTickCount();
    i = 0;
    while select tmpAccountSum1
    join tmpAccountSum2
        where tmpAccountSum1.AccountNum == tmpAccountSum2.AccountNum
    {
        text = tmpAccountSum1.Voucher + tmpAccountSum2.Voucher;
        i++;
    }
    info (strfmt("%1", i));
    info (strfmt("%1", (WinAPI::getTickCount() - startTime) / 1000));
    
    startTime = WinAPI::getTickCount();
    i = 0;
    while select tmpAccountSum1
    {
        while select tmpAccountSum2
            where tmpAccountSum2.AccountNum == tmpAccountSum1.AccountNum
        {
            text = tmpAccountSum1.Voucher + tmpAccountSum2.Voucher;
            i++;
        }
    }
    info (strfmt("%1", i));
    info (strfmt("%1", (WinAPI::getTickCount() - startTime) / 1000));

}
__________________
С уважением,
glibs®
За это сообщение автора поблагодарили: mazzy (5), sukhanchik (3), Logger (15).