代码之家  ›  专栏  ›  技术社区  ›  Aaron St Clair

从常规查询访问客户属性

  •  0
  • Aaron St Clair  · 技术社区  · 6 年前

    我需要利用 Customer Attributes 在a中 Generic Inquiry 。我在Server Management Studio中从原始SQL开始设计大多数通用查询。我发现用这种方式定位所需的数据要容易得多。然而,我很难弄清楚属性是如何与客户联系在一起的。属性添加到 Customer Class ,然后将客户与客户类关联。这允许该客户类可用的任何属性可供该客户修改。

    使用该数据库,我发现了以下内容:

    • 单个属性对象存储在 CSAttribute 桌子
    • 属性的选项(如combobox)存储在 CSAttributeDetail 桌子
    • 每个属性的各个实例存储在 CSAnswers 桌子
    • 还有一个 CSAttributeGroup 表,我认为是相关的 CSAttributeDetail属性详细信息 记录到 CSAttribute属性 记录。

    因此,人们会期望 C答案 参考客户的表格答案附在。。。但事实并非如此。此表定义为:

    • 公司ID(PK、int、非空)
    • RefNoteID(主键,唯一标识符,非空)
    • AttributeID(主键,nvarchar(10),非空)
    • 值(nvarchar(255),null)

    雪上加霜的是,数据库中的表名并不总是与通用查询中可用的表名一一对应。例如,许多字段可用于 ARInvoice 在GI中实际存储在 ARRegister 数据库中的表。我怀疑属性也在发生类似的事情。

    有人能告诉我在数据库级别和GI级别如何将属性与客户关联的正确方向吗?

    2 回复  |  直到 6 年前
        1
  •  4
  •   Gabriel    6 年前

    属性通过RefNoteID字段链接到记录;它将匹配另一条记录的NoteID(请注意,在您的情况下,它不在Customers表中,而是在BAccount中,这是与Customers的1:1联接)。您应该很少(如果有)需要直接引用CSAnswers表。在内部,Acumatica将在主表中生成一组与属性名称匹配的虚拟字段,后缀为\u属性:

    Attributes fields for BAccount table

    请注意,您将无法在“条件”选项卡中引用该属性,但您可以在网格中按此列过滤并创建预定义的过滤器。

        2
  •  1
  •   Casval    6 年前

    我使用客户属性制作了许多GIs,CSAnswers表中的RefNoteID uniqueidentifier与客户表中的NoteID uniqueidentifier相关,AttributeID是特定属性。要获取多行客户的所有属性,请仅在RefNoteID上进行连接,如果需要特定属性,请为每个AttributeID添加其他连接条件。 enter image description here