Acumatica通过基于合同的SOAP API更新自定义字段

Acumatica通过基于合同的SOAP API更新自定义字段,acumatica,Acumatica,我正在尝试使用基于契约的SOAP API更新自定义字段。更新值并通过Put()保存后,数据库中的字段为空。当我逐步完成代码时,自定义字段值是正确的,因此我知道我正在获取该值,但在我更改它并执行Put()之后,它在数据库中为空。BBSOLines是我创建的销售订单端点。我做得不对的是什么?代码如下 Acumatica版本2019 R1版本19.104.0024 BBSOLines bBSOLinesSearch = new BBSOLines { OrderNbr = new String

我正在尝试使用基于契约的SOAP API更新自定义字段。更新值并通过Put()保存后,数据库中的字段为空。当我逐步完成代码时,自定义字段值是正确的,因此我知道我正在获取该值,但在我更改它并执行Put()之后,它在数据库中为空。BBSOLines是我创建的销售订单端点。我做得不对的是什么?代码如下

Acumatica版本2019 R1版本19.104.0024

BBSOLines bBSOLinesSearch = new BBSOLines
{
    OrderNbr = new StringSearch
    {
        Condition = StringCondition.Contains,
        Value = orderNumber
    },
    POOrderNbr = new StringValue(),
    CustomFields = new[]
        {
            new CustomStringField
            {
                fieldName = "UsrKNPOOrderNbr",
                viewName = "Document",
                Value = new StringValue(),
            }
        },
    ReturnBehavior = ReturnBehavior.All,
    Detail = new Details[]
    {
        new Details
        {
            CustomFields = new[]
            {
                new CustomStringField
                {
                    fieldName = "UsrKNPOOrderNbr",
                    viewName = "Transactions",
                    Value = new StringValue(),
                }
            },
            InventoryID = new StringValue(),
            ReturnBehavior = ReturnBehavior.All
        }
    }
};
BBSOLines bBSOLines = (BBSOLines)soapClient.Get(bBSOLinesSearch);
foreach (Details detail in bBSOLines.Detail)
{
    newOrderPOList = "";
    foreach (CustomStringField customStringField in detail.CustomFields)
    {
        if (customStringField.fieldName == "UsrKNPOOrderNbr")
        {
            string[] pOOnOrder = customStringField.Value.Value.Split(',');

            for (int i = 0; i < pOOnOrder.Length; i++)
            {
                if (pOOnOrder[i] == pONumber)
                    pOOnOrder[i] = newPONumber;

                if (!newOrderPOList.Equals(string.Empty))
                    newOrderPOList += ",";

                newOrderPOList += pOOnOrder[i];
            }

            customStringField.Value.Value = newOrderPOList;
        }
    }
}
soapClient.Put(bBSOLines);
BBSOLines bbsolinesearch=新的BBSOLines
{
OrderNbr=新字符串搜索
{
条件=StringCondition.Contains,
值=订单号
},
POOrderNbr=新的StringValue(),
CustomFields=new[]
{
新CustomStringField
{
fieldName=“usrknpoordenbr”,
viewName=“文档”,
值=新的StringValue(),
}
},
ReturnBehavior=ReturnBehavior.All,
详细信息=新的详细信息[]
{
新细节
{
CustomFields=new[]
{
新CustomStringField
{
fieldName=“usrknpoordenbr”,
viewName=“事务”,
值=新的StringValue(),
}
},
InventoryID=新的StringValue(),
ReturnBehavior=ReturnBehavior.All
}
}
};
bbsolinesbsolines=(BBSOLines)soapClient.Get(bBSOLinesSearch);
foreach(详情见bBSOLines.detail)
{
newOrderPOList=“”;
foreach(CustomStringField CustomStringField详细信息。CustomFields)
{
如果(customStringField.fieldName==“USRKNPORDENBR”)
{
string[]pOOnOrder=customStringField.Value.Value.Split(',');
for(int i=0;i