2

CRM 4.0 用の素敵な小さな JavaScript スニペットを用意して、フォームの Money フィールドを更新し、文字列として渡す通貨記号を使用します。(ソース

UpdateCurrencySymbolInUI: function (_curr) {
    // BTP: fail to update currency symbol if using browser other than IE (crmForm will not be defined)
    // (set currency not supported via Xrm.Page CRM 2011)
    if (!IsNull(crmForm)) {
        var iLen = crmForm.all.length;
        var oCtrl, i;

        for (i = 0; i < iLen; i++) {
            oCtrl = crmForm.all[i];
            if (!IsNull(oCtrl.IsMoney) && !oCtrl.IsBaseCurrency) {
                oCtrl.CurrencySymbol = _curr;
            }
        }
    }
}

これは完全に機能しますが、マルチブラウザー サポートへの今後の変更 (2012 年第 4 四半期に予定されていますよね?)のために、Microsoft のカスタム コード検証ツールは、crmForm がサポートされなくなったため、IE 以外のブラウザーではこのコードが機能しないことを示唆しています。

グーグルで調べた後、通貨記号を設定するためのサポートされている代替手段が見つかりません。API に何かが欠けているのでしょうか、それとも (API を介して) 通貨記号を割り当てるためにこの機能を完全に削除したのでしょうか? この投稿では、document.getElementById を使用してフィールド名に「_sym」を追加することを提案していますが、これはサポートされていないと思います。サポートされているソリューションを希望します。

4

1 に答える 1

1

編集済み:OPの質問からすぐにはわかりませんが、この動作(通貨コードは変更されていません)は、transactioncurrencyid属性がJScriptを介して変更された場合にのみ表示されます。

つまり、これは、MSがCRMOnlineおよびOnPremise UR5(img.lu.transcur.htc)の内部でまだ行っていることです。私にかなり似ています。ただし、ここではブラウザ固有のものは何も表示されません...:

function updateCurrencySymbolInUI(){
    if(!IsNull(_oForm))
        for(var iLen=_oForm.all.length,oCtrl,i=0;i<iLen;i++){
            oCtrl=_oForm.all[i];
            if(!IsNull(oCtrl.IsMoney)&&!oCtrl.IsBaseCurrency){
                oCtrl.CurrencySymbol=_sCurSym;
               oCtrl.CurrencyPrecision=_iCurPre
            }        
        }
}

コード検証ツールの問題は、あなたが言うようcrmFormに非推奨になっているためだと思います。document.all['crmForm']の代わりに、ページのFORMオブジェクト()への参照を渡しますcrmForm。私はそれがうまくいくと思います。

なぜこのコードが必要なのですか?フィールドを含むフォームで取引通貨を変更するMoneyと、コントロールの通貨記号は、[ビジネス管理]>[通貨]で定義された記号に自動的に変更されます。

シンボルが表示したいものでない場合は、そこで変更してください:)

于 2012-08-28T15:32:35.073 に答える