在 Microsoft Dynamics CRM 中,如何获取 attributemask 值的含义?

In Microsoft Dynamics CRM, how do I get the meaning of an attributemask value?

我没有 Microsoft Dynamics CRM 的背景,我所在的公司失去了一位维护该系统的开发人员。有一个函数应用程序,其中包含一些我试图理解的代码。该代码的目的似乎是确定设置价格折扣的用户然后允许或不允许。它获取与在 CSV AttributeMask 中包含 115 的销售订单关联的审计实体。

List<Audit> audit = myServiceContext.AuditSet.Where(a => a.ObjectId.Id == x.Id)
    .ToList();

audit = audit.Where(a => a.AttributeMask.Split(',').ToList().Contains("115"))
    .ToList();

我相信这个115一定代表折扣字段,但我想知道过去的开发人员在哪里找到这个值。

我在网上找到了有关如何从字符串映射 table 中获取这些带有名称的 AttributeMask 值的建议,例如 this one。我使用 XrmToolBox 的 FetchXML Builder 转储整个 table 但它只从 0 到 113。有人建议查看 MetadataSchema tables,但我找不到那些 tables,并且看到这些建议仅适用于本地 CRM。

在哪里可以找到 115 的含义 and/or 过去的开发人员是如何决定使用这个值的?

代码查询 Audit table 并为 objectid 标识的记录选择审计行。 (这是第一行。)正如您在 MS Docs 上看到的那样,列 audit.attributemetadata 包含属性的 ColumnNumber 元数据 属性 的 CSV。

在第二行中,审计行被过滤到包含目标记录所属 table 的第 115 列更新的行。您可以通过检索 table 的实体元数据来查找此列的名称和其他属性。 EntityMetadata 对象有一个 AttributeMetadata 数组。在此数组中,您可以通过在 属性 ColumnNumber 中搜索其列号来找到所需的属性。可以在 MS Docs - AttributeMetadata.ColumnNumber Property.

上找到更多信息