【问题标题】:Exporting Business Account attributes with Acumatica API使用 Acumatica API 导出企业帐户属性
【发布时间】:2015-04-11 22:33:53
【问题描述】:

我们在 Acumatica 中的商业帐户有 13 个自定义属性,用于我们的主要商业帐户类。根据 Acumatica 的示例“将记录添加到业务帐户和机会表单”,我已经能够成功地将值保存到属性中。但我无法弄清楚如何使用导出检索值。

首先,我尝试使用类似于在保存字段时指定字段的格式。

 Public Function GetCustomerAttributes(ByVal customerID As String) As String()()
    Dim customer As CR303000Content = m_context.CR303000GetSchema()
    m_context.CR303000Clear()

    Dim idFilter As Filter = New Filter()
    idFilter.Field = customer.AccountSummary.BusinessAccount
    idFilter.Condition = FilterCondition.Equals
    idFilter.Value = customerID

    ' SIMILAR TO EXAMPLE FOR SAVING
    Dim awdField As Field = New Field()
    awdField.ObjectName = customer.Attributes.Attribute.ObjectName
    awdField.FieldName = "AWD Number"

    Dim searchfilters() As Filter = {idFilter}
    Dim searchCommands() As Command = {awdField}
    Dim searchResult As String()() = m_context.CR303000Export(searchCommands, searchfilters, 0, False, False)
    Return searchResult
End Function

我认为这将返回一个结果,其中包含我们名为“AWD Number”的属性的值。相反,它返回了 13 个结果,每个属性一个,每个属性的值都是空白的。我将 FieldName 更改为 customer.Attributes.Attribute.FieldName,然后它开始返回每个属性的名称。所以我想如果我为该值添加另一个字段,那么我可能会在单独的结果中获得名称和值,如下所示:

Public Function GetCustomerAttributes(ByVal customerID As String) As String()()
    Dim customer As CR303000Content = m_context.CR303000GetSchema()
    m_context.CR303000Clear()

    Dim idFilter As Filter = New Filter()
    idFilter.Field = customer.AccountSummary.BusinessAccount
    idFilter.Condition = FilterCondition.Equals
    idFilter.Value = customerID

    Dim awdField As Field = New Field()
    awdField.ObjectName = customer.Attributes.Attribute.ObjectName
    awdField.FieldName = customer.Attributes.Attribute.FieldName

    Dim awdValue As Field = New Field()
    awdValue.ObjectName = customer.Attributes.Attribute.ObjectName
    awdValue.FieldName = customer.Attributes.Attribute.Value

    Dim searchfilters() As Filter = {idFilter}
    Dim searchCommands() As Command = {awdField, awdValue}
    Dim searchResult As String()() = m_context.CR303000Export(searchCommands, searchfilters, 0, False, False)
    Return searchResult
End Function

我确实为 13 个结果中的每一个返回了一个包含 2 项的数组,但第二个字段中的值仍然是空白的。

有人知道我如何获得这些值吗?我真的不在乎是否必须一次获取它们,但我更愿意一次获取它们的名称或代码,这样我就不必依赖索引始终保持不变。下面是在我的第二个示例上运行的调试器的图像,并在 Acumatica 中查看。谢谢!

【问题讨论】:

    标签: acumatica


    【解决方案1】:

    您的第一次尝试是正确的,但是您没有使用正确的对象名称和字段名称。系统会在屏幕的主对象(视图)中动态添加字段,本例中对象名称为customer.AccountSummary.BusinessAccount.ObjectName variable(建议你也用调试器看看这个值等于什么——很好的学习练习)。

    属性字段名称将使用与How To Retrieve An Attribute Field In StockItems In Acumatica API? 中相同的命名约定。命名约定是_Attributes。属性ID不是属性名;我没有看到您的配置,但我怀疑在您的情况下属性 ID 是“AWD 编号”。总而言之,代码如下所示:

    Dim awdField As Field = New Field()
    awdField.ObjectName = customer.AccountSummary.BusinessAccount.ObjectName
    awdField.FieldName = "AWDNumber_Attributes"
    

    在您的示例中,通过放置 Attributes.Attribute.ObjectName 对象,系统将遍历此表中的所有值,然后为每一行返回您想要的字段。我不确定为什么在这种情况下您没有看到所有属性值,但我认为您应该对上面的示例没问题。

    【讨论】:

    • 谢谢!在我的第一个示例中,我实际上已经为 FieldName 尝试了这种格式,但绝对没有尝试过 ObjectName。我确信它应该引用属性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 2016-01-15
    • 2013-07-23
    相关资源
    最近更新 更多