Acumatica Rest API 获取客户属性名称

问题描述

我正在尝试通过 Rest API 获取客户属性的值。目前,我可以检索客户属性,但无法确定关联的是哪个特定属性。例如,给定此代码(基于 https://github.com/Acumatica/AcumaticaRESTAPIClientForCSharp,Endpoint = "Default",EndpointVersion = "18.200.001",Endpoint Library = Acumatica.Default_20.200.001,Acumatica version = Cloud ERP 2020 R1,Build 20.110.0017 ):

            var customerApi = new CustomerApi(configuration);
            var customers = customerApi.GetList(top: 5,expand: "Attributes",select: "Attributes/Attribute,Attributes/Value");

            foreach (var cust in customers)
            {
                Console.WriteLine(cust.ToString());
            }

产生这个输出

{
  
"AccountRef": {},"Attributes": [
    {
      "Value": {
        "value": "True"
      },"id": "8de7a85d-6d60-4235-9d35-74a9d08d1cc6","rowNumber": 1,"custom": {}
    },{
      "Value": {
        "value": "Sample Email Body"
      },"id": "8da2a21c-2ba3-45ba-9e12-02122c626e11","rowNumber": 2,...

enter image description here

enter image description here

我还缺少什么才能返回属性名称?或者我应该如何将给定的值关联回给定的属性

解决方法

Customers API 的默认配置为 Attributes 请求返回 customerApi.GetList(top: 5,expand: "Attributes",select: "Attributes/Attribute,Attributes/Value"); 数组,如下所示

 "Attributes": [
    {
      "Attribute": {
        "value": "Company Revenue"
      },"Value": {
        "value": "1,000,000 to 5,000"
      },"id": "6df69428-7157-438f-8b61-99b2d7d1a3ad","rowNumber": 1,"custom": {}
    },{
      "Attribute": {
        "value": "Number of Employees"
      },"Value": {
        "value": "1-100"
      },"id": "15c3f47f-36eb-481b-92c0-f6b2f738732f","rowNumber": 2,"custom": {}
    }
  ]

Attributes->Attribute->Value是属性的标识符,对应于属性记录的描述。

您的结果是针对 customerApi.GetList(top: 5,select: "Attributes/Value"); 请求返回的。如果要指定,请确保在选择部分中包含了 Attributes/Attribute。

enter image description here

更新

18.200 和 20.200 的命名有细微差别。

在 18.200 中,属性 ID 实际上被命名为 Attribute
在 20.200 中,属性 ID 更名为属性 ID

这就是此请求在 18.200 上正常工作的原因

namespace Acumatica.Default_18_200_001.Model
{
    [DataContract]
    public class AttributeDetail : Entity_v3
    {

        [DataMember(Name="Attribute",EmitDefaultValue=false)]
        public StringValue Attribute { get; set; }

        [DataMember(Name="RefNoteID",EmitDefaultValue=false)]
        public GuidValue RefNoteID { get; set; }

        [DataMember(Name="Required",EmitDefaultValue=false)]
        public BooleanValue Required { get; set; }

        [DataMember(Name="Value",EmitDefaultValue=false)]
        public StringValue Value { get; set; }

    }
}



namespace Acumatica.Default_20_200_001.Model
{
    [DataContract]
    public class AttributeValue : Entity_v4
    {

        [DataMember(Name="AttributeID",EmitDefaultValue=false)]
        public StringValue AttributeID { get; set; }

        [DataMember(Name="AttributeDescription",EmitDefaultValue=false)]
        public StringValue AttributeDescription { get; set; }

        [DataMember(Name="RefNoteID",EmitDefaultValue=false)]
        public StringValue Value { get; set; }

        [DataMember(Name="ValueDescription",EmitDefaultValue=false)]
        public StringValue ValueDescription { get; set; }

    }
}