在所有公司中标记复选框 AX2012

Mark checkbox in all companies AX2012

我在 PurchParameters table 中添加了一个名为 setExchRateVal 的复选框,我想在没有 sql 操作的所有公司中将此字段标记为 true。

如何在 AX 中使用作业执行此操作?

我试过了,但还没有完成,

PurchParameters purchParameters ;

while select forUpdate crossCompany purchParameters
{
    purchParameters.setExchRateVal = NoYes::Yes;
    purchParameters.update();
    //info(strFmt("%1 - %2", purchParameters.SetExchRateVal, purchParameters.dataAreaId));
}

AX 错误: 不允许跨公司进行更新操作。

错误很明显。您不能在同一个 select 查询中执行 crossCompanyupdatesMethod 2 下面更接近您的操作。更新参数 tables 时,由于 table.

上的 Key,可以通过几种方式完成

见下文:

PurchParameters purchParametersUpdate;
PurchParameters purchParametersSeek;
DataArea        dataArea;

// Method 1
ttsBegin;
while select dataArea
{
    changeCompany(dataArea.id)
    {
        purchParametersUpdate = PurchParameters::find(true);
        purchParametersUpdate.setExchRateVal = NoYes::Yes;
        purchParametersUpdate.update();
    }
}
ttsCommit;


// Method 2
ttsBegin;
while select crossCompany purchParametersSeek
{
    purchParametersUpdate = null;

    select firstOnly forUpdate purchParametersUpdate
        where purchParametersUpdate.RecId == purchParametersSeek.RecId;

    if (purchParametersUpdate)
    {
        //purchParametersUpdate.setExchRateVal = NoYes::Yes;
        purchParametersUpdate.update();
    }
}
ttsCommit;

info("Done");