AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.11.2009, 16:22   #1  
Alexanderrrr is offline
Alexanderrrr
Участник
Аватар для Alexanderrrr
 
54 / 19 (1) ++
Регистрация: 06.03.2009
Адрес: Саратов
Проблема с CustTrans
Доброго времени суток, уважаемые программисты, гуру Аксапты
У нас существует отчет "Оплата по группам финансирования", выбирающий данные из таблиц Custtrans, CustInvoiceJour и LedgerJournalTrans (Axapta 3.0 SP5). Работал он работал, и вот однажды утром снова стал работать гораздо медленнее. Включив мониторинг запросов, выяснил, что очень долго проходит кверик по custtrans.
Привожу код метода:

X++:
void insertTmpFromCustTrans()
{
    CustTrans           qCustTrans;
    RContractTable      qContractTable,
                        contractTable;
    ;

    queryRun.query().dataSourceTable(tableNum(CustTrans)).addRange(fieldNum(CustTrans,TransDate)).value(queryRange(dateNull(),datefrom-1));

    if (accountNum)
        queryRun.query().dataSourceTable(tableNum(CustTrans)).addRange(fieldNum(CustTrans,AccountNum)).value(accountNum);
    if (contractAccount)
    {
        queryRun.query().dataSourceTable(tableNum(RContractTable)).addRange(fieldNum(RContractTable,RContractCode)).value(contractCode);
        queryRun.query().dataSourceTable(tableNum(RContractTable)).addRange(fieldNum(RContractTable,RContractAccount)).value(contractAccount);
        queryRun.query().dataSourceTable(tableNum(RContractTable)).addRange(fieldNum(RContractTable,RContractPartnerCode)).value(accountNum);
    }

    while (queryRun.next())
    {
        qCustTrans      = queryRun.get(tableNum(CustTrans));
        qContractTable  = queryRun.get(tableNum(RContractTable));

        if (qCustTrans)
        {
            tmpTable.clear();
            tmpTable.GroupFinancName    = GroupsFinancTable::find(qContractTable.GroupFinancId).GroupFinancName;
            tmpTable.AccountNum         = qCustTrans.AccountNum;
            tmpTable.AccountName        = CustTable::find(qCustTrans.AccountNum).NameAlias;
            tmpTable.ContractNumberDate = qContractTable.contractNumberDate;
            tmpTable.Voucher            = qCustTrans.Voucher;
            tmpTable.Advance            = NoYes::No;
            tmpTable.DebtBeginPeriod    = qCustTrans.AmountCur;
            tmpTable.CurrentPayTotal    = tmpTable.BPayCurrent + tmpTable.PayCurrent;
            tmpTable.PayPeriodTotal     = tmpTable.BPay + tmpTable.Pay + tmpTable.CurrentPayTotal;
            tmpTable.CurrentDebt        = tmpTable.AddAmount + tmpTable.CurrentPayTotal;
            tmpTable.EndDebt            = tmpTable.DebtBeginPeriod + tmpTable.AddAmount + tmpTable.PayPeriodTotal;

            tmpTable.insert();
        }

    }

    queryRun.query().addDataSource(tableNum(TmpGroupFinancingTable));
}
Проблемы с этим отчетом уже были (Проблема с LedgerJournalTrans), но они не касались этого метода..

Реиндексацию индексов custtrans делал, не помогло..
__________________
..в каждой программе есть хотя бы одна ошибка..

Последний раз редактировалось Alexanderrrr; 18.11.2009 в 16:53.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с LedgerJournalTrans Alexanderrrr DAX: Программирование 14 23.09.2009 13:42
Проблема с единицей измерения longson DAX: Программирование 4 16.07.2007 14:35
Как в форме CustTrans через query отобрать записи у которых AmountCur != 0 ( когда в QueryBuildRange ставишь value(strFmt('!0')); - не работает!) rkorchagin DAX: Программирование 12 02.04.2007 17:58
Проблема с созданием объекта Lelya DAX: Администрирование 33 27.06.2005 16:38
Проблема: русские шрифты в отчетах, формируемых на сервере. Anais DAX: Администрирование 3 17.11.2003 13:20

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:21.