You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haufe x360环境下自定义字段API调用返回数据类型不匹配问题求助

解决Acumatica(Haufe x360)API返回自定义Int字段显示文本而非数值的问题

问题分析

你的自定义字段UsrKundengruppe(API中映射为Kundengruppe)在数据类里定义为PXDBInt并绑定了PXIntList提供下拉选项,但API返回的是下拉控件的显示文本(比如bis 25.000,- 0,00%),而非数据库存储的Int数值(比如1)。这是Acumatica REST API的默认行为:对于带选项列表的字段,默认返回用户可见的显示值,而非底层存储的原始值。


方法1:通过端点编辑器修改配置(无需代码)

这是最适合你的方案,完全不需要编写C#代码:

  1. 登录Acumatica系统,进入Customization > Endpoints(自定义 > 端点)
  2. 找到你正在使用的端点(包括你新建的专属端点),点击Edit进入编辑界面
  3. 在左侧实体列表中,定位到包含UsrKundengruppe字段的业务实体(比如Customer或对应的数据实体)
  4. 在右侧字段列表里找到UsrKundengruppe(API中显示为Kundengruppe),点击字段的Settings按钮
  5. 在弹出的设置窗口中,找到Return Display Value选项,将其设置为False,点击OK保存
  6. 保存整个端点配置,必要时重新发布端点
  7. 再次测试API调用,此时Kundengruppe字段应该返回存储的Int数值(如{"value": "1"})

方法2:代码层面调整(如果方法1无效)

如果方法1没解决问题,你可以通过少量代码强制API返回存储值。按照以下步骤操作即可:

  1. 打开你的自定义项目(没有的话先创建一个)
  2. 找到定义UsrKundengruppe字段的数据类文件
  3. 在字段属性上方添加PXRestApiDisplayValue(false)属性,修改后的代码如下:
[PXRestApiDisplayValue(false)] // 新增该属性,强制API返回存储的数值
[PXDBInt]
[PXIntList(new int[] {0,1,2,3,4,5,6,7,8}, new string[] {"bis 25.000,- 0,00%", "25.001,- bis 50.000,- 3,75%", "50.001,- bis 100.000,- 7,50%", "100.001,- bis 200.000,- 10,00%", "200.001,- bis 300.000,- 12,00%", "300.001,- bis 500.000,- 14,50%", "500.001,- bis 750.000,- 16,50%", "750.001,- bis 1.000.000,- 18,50%", "ab 1.000.000,- 20,00%"})]
[PXUIField(DisplayName="Kundengruppe Jahresumsatz von - bis Rabatt")]
public virtual int? UsrKundengruppe { get; set; }
public abstract class usrKundengruppe : PX.Data.BQL.BqlInt.Field<usrKundengruppe> { }
  1. 保存代码并发布自定义项目
  2. 重新测试API调用,此时字段会返回你预期的Int数值

验证结果

修改完成后,API返回的Kundengruppe字段应该和你预期的格式一致:

{ "id": "4b2758c6-8d86-4357-871e-70621d09719d", "rowNumber": 3, "note": null, "Kundengruppe": { "value": "1" }, "UUID": {}, "custom": {} }

内容的提问来源于stack exchange,提问作者Ilham AR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 19:37:27