在将“活动”转换为“案例”后,动态CRM错误“如果货币字段中存在值,则需要货币”

时间:2009-08-05 02:08:27

标签: dynamics-crm dynamics-crm-4 crm

我们有一个Dynamics CRM 4.0实例,在Case实体和所有Activity实体(电子邮件,电话等)上都有一些类型为“money”的自定义属性。当我使用内置的“将活动转换为案例”时功能我发现生成的Case没有Currency集,即使它创建的Activity确实有它。每当打开案例时,用户就会收到此JavaScript错误:

  

如果货币字段中存在值,则需要货币。选择一个   货币,然后再试一次。

这非常烦人!我如何解决它?有什么办法可以设定货币吗?它需要同步完成,因为Case是从Activity创建时立即打开的。因此,即使我开始设置货币的工作流程,用户仍会至少获得一次该错误。另外,我能否以某种方式压制警告?我真的不在乎设置货币,我只是想让错误消失。

8 个答案:

答案 0 :(得分:3)

我想这段代码对下一个遇到同样问题的人有帮助。 我花了一整天时间弄明白我在下面做了什么。

这里涉及两个步骤:

  1. 设置默认货币
  2. 为货币字段设置货币符号。
  3. 以下是代码示例。

    var currency = crmForm.all.transactioncurrencyid;
    
    if (currency.DataValue == null) {
        var lookupData = new Array();
        var lookupItem= new Object();
    
        //Get transaction currency value from :
        select **TransactionCurrencyId** from MSCRM.dbo.TransactionCurrency
            lookupItem.id = '{The GUID that you get from the SELECT statement above}';
            lookupItem.typename = 'transactioncurrency';
            lookupItem.name = 'US Dollar';
            lookupData[0] = lookupItem;
            currency.DataValue = lookupData;
        //set default currency symbol for all the Money field.
        var defaultSymbol = '$';
        for(var i=0; i < crmForm.all.length ; i++)   {
            var oCtr = crmForm.all[i];
            if(!IsNull(oCtr.IsMoney) && !oCtr.IsBaseCurrency)
            {
                oCtr.CurrencySymbol = defaultSymbol;
            }
        }
    }
    

答案 1 :(得分:2)

在“个性化工作区”的“常规”选项卡中设置默认货币 新记录将使用此货币 对于现有记录(在添加货币字段之前),使用“高级查找”查找没有货币值的记录,然后使用批量编辑设置货币

答案 2 :(得分:1)

您可能想查看Mitch Milam撰写的这篇文章CRM 4 Currency Calculations

更新:谷歌搜索后,我发现你可能需要在某处设置transactioncurrencyid查找。因此,在您的情况下,它可能是onsave或在工作流代码的执行内部。我从这里阅读Error: Assign a decimal value to CRM 4.0 money field using Javascript

答案 3 :(得分:1)

如果您的表单上有金钱字段,CRM需要知道要使用哪种货币。验证是否在用户首选项中设置了默认货币(从主页面“个性化工作区”,然后是“常规”选项卡)。也就是说,您的每个用户都需要设置默认货币。

我也可以通过将货币字段添加到表单,将其默认为美元,然后隐藏字段来解决此问题。但是,如果内存服务,这并不理想,因为美元货币是系统中的记录,并且可以在不同的环境中具有不同的GUID。

答案 4 :(得分:1)

通过发现用于美元的transactioncurrencyid然后更新实体数据库表中所有现有实体记录的transactioncurrencyid列,我的系统解决了这个恼人的问题。在这样做之后,我能够在实体表单上添加货币值而没有其他问题。不确定这个解决方案是否适合每个人,但因为我不想编写代码来做到这一点,并认为我不应该这样做,因为如果我将金属属性添加到新定义的实体,它不需要编写代码我填充transactioncurrencyid字段的部分 - 默认情况下它就是这样做的。总而言之,只有将货币字段添加到具有与之关联的现有数据的现有实体时,才会出现此问题。

答案 5 :(得分:1)

当我在寻找CRM 2011的这个问题的解决方案时,我的谷歌搜索出现了这个帖子,我想我会添加我的博客文章,解释如何在CRM 2011的Onload中设置默认货币查找使用JavaScript,JSON和OData形成。

http://crmscape.blogspot.com/2011/03/crm-2011-set-default-transaction.html

答案 6 :(得分:0)

我同意Hadi Teo您需要设置transactioncurrencyid。自从我遇到这个问题已经有一段时间了 - 所以这就是我想起的事情。

如果您创建了一个填充了货币字段的新实体,则将设置交易币种。 如果更新实体,则不会设置交易货币字段。

我没有使用Activity to Case功能,所以我不确定它是做什么的。您可以做的一件事是将transactioncurrencyid添加到表单上。然后,您可以在修改案例之前进行设置。

另一种方法是在代码中默认货币。有两个地方可以确定默认货币。首先关闭用户设置。第二个(如果为空)关闭组织设置。

答案 7 :(得分:0)

修复此问题 1.还将基本货币字段添加到表单。 2.取消基本货币字段的“默认可见选项”。