5

私は興味深いタスクに直面しています: crm 2011 には、請求書の明細項目を含むサブグリッドが配置された請求書フォームがあります。請求書明細エンティティ フォームには通貨フィールドと通貨ルックアップが含まれており、問題は、請求書明細の通貨に関連するすべてのフィールドが米ドル記号「$」で表示されることですが、すべてのフィールドが「ドキュメント通貨」フィールドで選択された値に従って記号を表示する必要があることです。請求書の。

それは GB ポンドである可能性があり、請求書明細エンティティ フォームを作成すると、通貨ルックアップは GB ポンドとして表示されますが、通貨フィールドは引き続き米ドル記号 '$' で表示されます。そして、ユーザーがそれをnullに変更してGBポンドに戻した場合にのみ、それらが変更されます。

請求書ドキュメントの通貨値の ID と名前をパラメーター (p_DocumentCurrencyId、p_DocumentCurrencyName) として送り、請求書明細エンティティ フォームに送り、通貨ルックアップを次のように入力します。

Xrm.Page.getAttribute("transactioncurrencyid").setValue([{ id:   parameters["p_DocumentCurrencyId"], name: parameters["p_DocumentCurrencyName"], entityType:    "transactioncurrency"}]);

助けてください!

4

1 に答える 1

2

さて、私は自分で解決策を見つけました。ここにあります。ルックアップ通貨フィールドから通貨 ID を取得し、それを関数に渡す必要があります。SDK の関数など、ID で通貨オブジェクトが返されます。

function retrieveCurrency(CurrencyId) {
SDK.REST.retrieveRecord(
 CurrencyId,
 "TransactionCurrency",
 null,null,
 function (currency) {
  ChangeCurrencySymbol(currency);
 },
 errorHandler
 );
}

MS SDK からhttp://msdn.microsoft.com/en-us/library/gg334427.aspx

そして、成功したコールバックから呼び出され、文字の置換を行う関数:

function ChangeCurrencySymbol(currencyInfo) {
if (currencyInfo != null) {
    var currencySymbol = currencyInfo.CurrencySymbol;
    // Looping through all currency controls on the form and sets the currency symbol.
    $.each($("span.ms-crm-Money-CurrencySymbol"), function()
    {
        this.textContent = currencySymbol;
    });        
}
}

調査の結果、現在まで JavaScript による通貨検索に値を追加した後、これが通貨記号を動的に変更する唯一の方法であることがわかりました。

于 2013-07-12T10:00:48.690 に答える