Отметьте флажок во всех компаниях AX2012 - PullRequest
1 голос
/ 01 мая 2020

Я добавил флажок в таблице PurchaseParameters, имя которого - setExchRateVal, и я хочу отметить это поле во всех моих компаниях без операций sql.

Как я могу сделать это в AX с заданием?

Я пробовал это, но это еще не сделано,

PurchParameters purchParameters ;

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

AX ERROR: Операции обновления не разрешены в разных компаниях.

1 Ответ

3 голосов
/ 01 мая 2020

Ошибка понятна. Вы не можете сделать crossCompany и updates в одном запросе выбора. Method 2 ниже ближе к тому, что вы делаете. При обновлении таблиц параметров это можно сделать несколькими способами из-за 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");
...