2009-08-05 42 views
1

我們有一個Dynamics CRM 4.0實例,其中包含Case實例和所有活動實體上的「money」類型的一些自定義屬性(電子郵件,電話等)當我使用內置的「將活動轉換爲大小寫」功能時,我發現生成的Case沒有設置貨幣,即使它創建的活動確實擁有它。每當案件被打開,用戶就會得到這個JavaScript錯誤:Dynamics CRM錯誤「將貨幣存在於貨幣字段中時需要貨幣」將活動轉換爲大小寫

A currency is required if a value exists in a money field. Select a currency and try again.

這是非常煩人的!我如何解決它?有什麼方法可以設置貨幣嗎?它需要同步完成,因爲Case從Activity創建時立即打開。所以即使我開始設置貨幣工作流程,用戶仍然會至少得到一次該錯誤。另外,我可以以某種方式抑制警告嗎?我並不在乎設置貨幣,我只是想讓錯誤消失。

回答

1

你可能想通過米奇米拉姆

更新來看看這個文章CRM 4 Currency Calculations:圍繞谷歌搜索後,我發現,你可能需要的地方設置transactioncurrencyid查找。所以就你的情況而言,它可能在工作流程代碼的執行中存在或存在。我從這裏讀取它Error: Assign a decimal value to CRM 4.0 money field using Javascript

+0

我沒有任何工作流程代碼 - 將活動轉換爲案例是內置的CRM功能。 – EMP 2009-08-06 06:26:20

1

如果您的表單上有一個貨幣字段,CRM需要知道使用哪種貨幣。確認您的用戶偏好設置中設置了默認貨幣(從主頁面個性化工作區,然後是常規選項卡)。也就是說,您的每個用戶都需要設置默認貨幣。

我也能夠解決此問題,通過將貨幣字段添加到窗體,默認爲美元,然後隱藏該字段。但是,如果使用內存,這並不理想,因爲美元貨幣是系統中的記錄,並且在不同的環境中可能具有不同的GUID。

+0

我設定了我的預設貨幣。當你在表單上「默認」貨幣時 - 你怎麼做? – EMP 2009-08-06 06:27:09

+0

創建一個web服務,返回美國貨幣記錄的查找信息(或者您希望默認的貨幣)。然後,將transactioncurrencyid字段添加到表單。在表單加載時檢查它是否爲空。如果是這樣,請致電您的web服務獲取默認貨幣的查找信息並使用它填充該字段。或者,隱藏窗體上的字段。 當然不是一個有趣或快速的解決方法,但它會完成這項工作。 這是否回答你的問題? – Polshgiant 2009-08-06 16:20:24

0

我同意Hadi Teo的說法,您需要設置transactioncurrencyid。自從我碰到這個問題以來,我已經有一段時間了 - 所以這是我想起的。

如果您創建一個填充了貨幣字段的新實體,則會設置交易幣種。 如果您更新實體,則不會設置交易貨幣字段。

我還沒有使用Activity to Case函數,所以我並不完全確定它的功能。你可以做的一件事是將transactioncurrencyid添加到表單上。然後,您可以在修改案例之前進行設置。

另一種方法是在代碼中默認貨幣。有兩個地方可以確定默認貨幣。首先關閉用戶設置。其次(如果爲空)關閉組織設置。

1

這個煩人的問題在我的系統上解決了,它發現了用於美元的transactioncurrencyid,然後更新了實體數據庫表中所有現有實體記錄的transactioncurrencyid列。這樣做後,我能夠在實體表格上添加金錢價值,而沒有其他問題。不知道這個解決方案是否適合每個人,但因爲我不想編寫代碼來做到這一點,並認爲我不應該這樣做,因爲如果我向新定義的實體添加了金錢屬性,它不需要編寫代碼我的一部分填充transactioncurrencyid字段 - 它只是默認做它。因此,總而言之,只有在將貨幣字段添加到現有實體並具有與之相關聯的數據時,纔會出現此問題。

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; 
     } 
    } 
} 
2

設定的默認貨幣,常規選項卡 新記錄將使用此貨幣 現有記錄(錢場(S)加入之前)使用高級搜索查找記錄,沒有貨幣價值,那麼使用批量修改設置貨幣

0

修復此問題 1.將基本貨幣字段也添加到表單中。 2.取消基礎貨幣區域的「默認可見」選項。