1

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

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

这非常烦人!我如何解决它?有什么办法可以设置货币吗?它需要同步完成,因为从 Activity 创建 Case 时会立即打开它。因此,即使我启动了设置货币的工作流程,用户仍然至少会收到一次该错误。或者,我可以以某种方式抑制警告吗?我并不真正关心设置货币,我只是希望错误消失。

4

8 回答 8

3

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

这里涉及两个步骤:

  1. 设置默认货币
  2. 为货币字段设置货币符号。

这是代码示例。

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;
        }
    }
}
于 2010-08-17T04:10:34.913 回答
2

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

于 2012-04-13T02:24:19.283 回答
2

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

于 2010-05-27T19:17:00.397 回答
1

由于当我在为 CRM 2011 寻找此问题的解决方案时,此线程出现在我的 Google 搜索中,我想我会添加我的博客文章,解释如何使用 JavaScript 在 CRM 2011 表单的 Onload 中设置默认货币查找、JSON 和 OData。

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

于 2011-03-04T15:31:44.053 回答
1

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

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

于 2009-08-05T12:52:59.650 回答
1

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

更新:谷歌搜索后,我发现您可能需要在某处设置 transactioncurrencyid 查找。因此,在您的情况下,它可能是 onsave 或在工作流代码的执行中。我从这里读到错误:使用 Javascript 为 CRM 4.0 货币字段分配十进制值

于 2009-08-05T02:47:10.387 回答
0

我同意 Hadi Teo 的观点,即您需要设置 transactioncurrencyid。自从我遇到这个已经有一段时间了 - 所以这就是我想我记得的。

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

我没有使用 Activity to Case 功能,所以我不太确定它的作用。作为变通方法,您可以做的一件事是将 transactioncurrencyid 添加到表单中。然后您可以在修改案例之前设置它。

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

于 2009-08-05T13:34:07.043 回答
0

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

于 2014-01-09T05:34:51.230 回答