Crm 2011货币字段不会更改货币符号

Iho*_*hor 5 javascript jquery crm dynamics-crm-2011

我面临着一个有趣的任务:在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"}]);
Run Code Online (Sandbox Code Playgroud)

请帮忙!

Iho*_*hor 2

好吧,我自己找到了解决方案,就在这里。我们需要从查找货币字段中检索货币 id 并将其传递给函数,然后函数将按 id 返回货币对象,例如 SDK 中的函数:

function retrieveCurrency(CurrencyId) {
SDK.REST.retrieveRecord(
 CurrencyId,
 "TransactionCurrency",
 null,null,
 function (currency) {
  ChangeCurrencySymbol(currency);
 },
 errorHandler
 );
}
Run Code Online (Sandbox Code Playgroud)

来自 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;
    });        
}
}
Run Code Online (Sandbox Code Playgroud)

经过我的研究,我发现这是迄今为止通过 javascript 为货币查找添加价值后动态更改货币符号的唯一方法。