【问题标题】:Ms Dynamics CRM custom workflow get visible attributes from form using c#Ms Dynamics CRM 自定义工作流使用 c# 从表单中获取可见属性
【发布时间】:2015-09-15 06:45:00
【问题描述】:

如何在自定义工作流中使用 c# 从实体表单中获取可见属性? 有什么想法请分享!

【问题讨论】:

  • 你想完成什么?流程不应该关心表单(因为数据可能不是来自表单)
  • 表示进程不读取表单数据

标签: dynamics-crm-2011 dynamics-crm dynamics-crm-2013 dynamics-crm-2015


【解决方案1】:

这是一个 PITA,但它是可行的。

  1. systemform 实体中检索您要处理的表单(您需要formxml 属性)
  2. formxml 属性包含表单定义,它被编码(< 写成< 等等)xml 格式。

formxml 内容中,一个字段如下所示:

    <cell id="(guid)" labelid="(guid)" showlabel="true" locklevel="0" visible="false">
    <labels>
        <label description="(field label)" languagecode="1033" />
    </labels>
    <control id="(field name)" classid="(guid)" datafieldname="(field name)" disabled="false">
  1. 解析xml,寻找cell元素没有visible属性(只有当字段被隐藏时才会出现)
  2. 您可能必须通过在 xml 中的进一步搜索来缩小列表的范围(对于子网格的外观不是 100% 肯定),但我对这种逻辑没有直接经验,所以我无法确定每一个角盒

痛点:您将无法判断字段可见性是否已通过 javascript 切换

【讨论】:

  • 当然,流程应该永远假设数据来自表单(如果外部应用程序创建/更新记录怎么办?导入?其他处理数据的工作流?插件?外部应用程序?)所以YMMV
【解决方案2】:

可见属性是什么意思?您的意思是具有值的属性或表单中显示的属性?如果是第二种,那么您必须跟踪的唯一方法是使用文本字段并使用一些代码来识别活动的内容。

例如。创建一个文本字段

并在其中写下所有可见的前姓名和姓氏:

“姓名”、“姓氏”

您可以使用 javascript 和业务规则对此进行操作,以使每条记录的字段列表每次都更新。在后面的代码中,您只需要阅读文本字段并操作魔术字符串。 这不是一个非常好的操作,但它是我能看到的唯一方法来跟踪表单上显示的字段。

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多