【问题标题】:Decomposing dates in Dynamics CRM在 Dynamics CRM 中分解日期
【发布时间】:2018-11-02 19:07:14
【问题描述】:

我接到了一项要求,使业务用户能够将多个实体上的日期字段子集分解为年、月和日的字符串字段。 Dynamics 似乎没有开箱即用的功能。

我想使用计算字段添加它。最吸引人的方法是扩展计算字段表达式中可用的functions 列表,并公开一个调用DateTime.ToString 或其朋友之一的列表。找不到有关该主题的文档。这可能或支持吗?

在没有这种可能性的情况下,有没有人对如何完成分解有好的想法?除了写插件...


注意:我知道由于日期文化和演示问题,这可能是一个坏主意。但这正是企业想要的,唯一的选择是开发最差的解决方案。

【问题讨论】:

  • 下载到 Excel 并进行分解,我认为没有选项?
  • 正确。 Excel路线不是一种选择。它必须是自动化的。

标签: c# dynamics-crm


【解决方案1】:

要回答我自己的问题,计算字段的函数列表似乎无法扩展。计算字段表达式“编译”成标量值函数,由基础表上的计算列表达式调用。这些 SQL 函数是由Microsoft.Crm.CalculatedField.dll 中的代码生成的。

无需深入研究太多细节,表达式函数列表似乎与Microsoft.Crm.dll 中的Microsoft.Crm.Workflow.Activities.ExpressionOperator 枚举相关联。绑定到该枚举表明该列表是硬编码的。

对于那些需要不包含Dynamics-365-Workflow-Tools 中包含的所有附加功能的解决方案的人,这里有一个:

public class DateFormatter : CodeActivity
{
    public const string DEFAULT_LOCALE = "en-us";

    [Input("Date")]
    [RequiredArgument]
    public InArgument<DateTime> Date
    {
        get;
        set;
    }

    [Input("Locale")]
    [Default(DEFAULT_LOCALE)]
    public InArgument<string> Locale
    {
        get;
        set;
    }

    [Input("Format")]
    public InArgument<string> Format
    {
        get;
        set;
    }

    [Output("Formatted Date")]
    public OutArgument<string> DateAsString
    {
        get;
        set;
    }

    protected override void Execute(CodeActivityContext context)
    {
        DateTime? date = this.Date.Get(context);
        string locale = this.Locale.Get(context);
        string format = this.Format.Get(context);

        if (date.HasValue == false)
        {
            this.DateAsString.Set(context, null);
            return;
        }

        DateTime value = date.Value;
        CultureInfo culture = CultureInfo.GetCultureInfo(locale ?? DEFAULT_LOCALE);
        string dateAsString = (format == null) ? value.ToString(culture) : value.ToString(format, culture);
        this.DateAsString.Set(context, dateAsString);
    }
}

【讨论】:

    【解决方案2】:

    您可能会考虑安装Dynamics-365-Workflow-Tools

    安装后,您可以创建一个工作流,以便在任何给定的 DateTime 字段更新时运行。

    工作流将涉及使用工作流工具中的“Date Functions”步骤的步骤。此步骤接受两个 DateTime 参数(尽管可以选择一个)并计算多个输出值,即针对您的场景:

    • 年份

    您的最终工作流程步骤将根据需要将分解的实体字段设置为三个输出值之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多