简体   繁体   English

AX 2009中无法使用AIF Web服务更新小数

[英]Can't update decimals with an AIF Webservice in AX 2009

I've created an AIF web-service in AX 2009 with the standard wizard from a query. 我已经使用来自查询的标准向导在AX 2009中创建了AIF Web服务。 Now it looks like that every thing works, except in the update. 现在看起来一切正常,除了更新。 I'm not able to write back fields from the type "decimal". 我无法从“十进制”类型写回字段。 But "string" fields works without problems. 但是“字符串”字段可以正常工作。

If you look into the code below, the field "PickQty" is an decimal, that doesn't work and the "PickQtyMob" is a string field, that works. 如果您查看下面的代码,则“ PickQty”字段是一个十进制无效,而“ PickQtyMob”是一个字符串字段,有效。

If I only update PickQty I get into the update from the service in AX but not in the parm method. 如果仅更新PickQty,则会从AX中的服务进入更新,而不会在parm方法中。

And I don't get any error messages or exceptions. 而且我没有收到任何错误消息或异常。

Code snippet for the update: try { MOBBatchPickServiceUpdateRequest updateRequest = new MOBBatchPickServiceUpdateRequest(); 更新的代码段:尝试{MOBBatchPickServiceUpdateRequest updateRequest = new MOBBatchPickServiceUpdateRequest(); updateRequest.MOBBatchPick = new AxdMOBBatchPick(); updateRequest.MOBBatchPick = new AxdMOBBatchPick(); updateRequest.MOBBatchPick.BatchPick = new MOBBatchPickService.AxdEntity_BatchPick[1]; updateRequest.MOBBatchPick.BatchPick =新的MOBBatchPickService.AxdEntity_BatchPick [1]; updateRequest.MOBBatchPick.BatchPick[0] = new MOBBatchPickService.AxdEntity_BatchPick(); updateRequest.MOBBatchPick.BatchPick [0] =新的MOBBatchPickService.AxdEntity_BatchPick();

    updateRequest.EntityKeyList = new MOBBatchPickService.EntityKey[mobBatchPick.BatchPick.Length];

    for (i = 0; i < mobBatchPick.BatchPick.Length; i++)
    {
        updateRequest.EntityKeyList[i] = new MOBBatchPickService.EntityKey();
        updateRequest.EntityKeyList[i].KeyData = new MOBBatchPickService.KeyField[1];

        updateRequest.EntityKeyList[i].KeyData[0] = new MOBBatchPickService.KeyField();
        updateRequest.EntityKeyList[i].KeyData[0].Field = "PickRequestNum";
        updateRequest.EntityKeyList[i].KeyData[0].Value = mobBatchPick.BatchPick[i].PickRequestNum;

        mobBatchPick.BatchPick[i].PickQty = mobBatchPick.BatchPick[i].PickQty; // decimal: Doesn't work
        mobBatchPick.BatchPick[i].PickQtyMob = mobBatchPick.BatchPick[i].PickQty.ToString(); // string: Works

        mobBatchPick.BatchPick[i].action = MOBBatchPickService.AxdEnum_AxdEntityAction.update;

    }// for


    updateRequest.MOBBatchPick = mobBatchPick;
    batchPickClient.update(updateRequest);

}
catch (Exception _exception)
{
    MessageBox.Show(_exception.ToString());
}

I solved the problem by adding the field into the initMandatoryFieldsMap method in AX like this: 我通过将字段添加到AX中的initMandatoryFieldsMap方法中来解决了这个问题,如下所示:

protected void initMandatoryFieldsMap()
{
    super();
    this.setParmMethodAsMandatory(classNum(AxMobBatchPick),methodStr(AxMobBatchPick,parmPickty));
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM