Показать сообщение отдельно
Старый 26.11.2009, 15:05   #29  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,709 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от propeller Посмотреть сообщение
X++:
  Axapta = new Com("AxaptaCOMConnector.axapta2");
    Axapta.Logon2(****);
    transdate = mkdate(25,11,2009);
 
    axaptaTable = Axapta.CreateRecord("CustInvoiceJour");
    axaptaTable.ExecuteStmt("select * from %1 where %1.InvoiceDate == 24\11\09");

    while (axaptaTable.found())
    {
        axaptafield = axaptaTable.field("InvoiceId");
        info(axaptafield.bStr());
        axaptaTable.next();
    }
Job запускаю в Ax 4.0, комконнектор коннектится к Ax 2.5
Это так и задумано, что mkDate() - на 25 число, а запрос с константой - на 24? Если попоробовать подставить ДРУГИЕ даты в виде константы?

И еще, поле CustInvoiceJour.InvoiceId не имеет признака Mandatory. Вы уверены, что для найденных записей InvoiceId указано? Может, пытаться читать RecId? Или просто подсчитывать количество шагов цикла (количество строк в выборке).

Вот такой тест что даст

X++:
    Axapta = new Com("AxaptaCOMConnector.axapta2");
    Axapta.Logon2(****);
    transdate = mkdate(1,11,2009);
 
    for (nextI = 1; nextI <= 30; nextI++ )
    {
        axaptaTable = Axapta.CreateRecord("CustInvoiceJour");
        axaptaTable.ExecuteStmt("select * from %1 where %1.InvoiceDate == " + global::date2StrXpp(transdate));
        
        if (axaptaTable.found()) info(strFmt("%1 YES", transDate));
        else info(strFmt("%1 NO", transDate));

        transdate += 1;
    }