5

我面临着有趣的任务:在 crm 2011 中,我有一个发票表格,其中放置了带有发票行项目的子网格。发票行实体表单包含货币字段和货币查找,问题是发票行中与货币相关的所有字段都显示为美元符号“$”,但它们都需要根据“文档货币”字段中选择的值显示符号的发票。

它可以是 GB 英镑,当我创建 Invoice Line 实体时,它的货币查找显示为 GB 英镑,但货币字段仍显示为美元符号 '$' 。只有当用户将其更改为 null 并返回 GB 磅时,它们才会更改。

我将发票文档货币值的 id 和名称作为参数(p_DocumentCurrencyId、p_DocumentCurrencyName)发送到发票行实体表单并在其上填写货币查找作为 foloving:

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

请帮忙!

4

1 回答 1

2

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

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 回答