将CRM 2011升级到最新的内部部署版本后,请停止工作机会表单上的“失去时关闭”按钮。 经过一番调查,我发现内部javascript库存在问题。
来自complete()
库(位于opps.js
中)的机会按钮“由于丢失而关闭”调用系统功能Program Files\Microsoft Dynamics CRM\CRMWeb\_static\SFA\opps\
。
(下面的代码)
发现问题
$get()
(更聪明的document.getElementById()
)-在Microsoft.Ajax.js
中定义。它主要调用document.getElementById()
,但看起来应该调用parent.document.getElementById()
。
Mscrm
对象存在,但不包含OpportunityCommandActions
。
openStdDlgWithCallback
在当前上下文中不存在,但在父上下文中存在。重写“关闭为丢失”按钮动作不是问题,但是提到的函数和对象在多个地方使用,因此我需要更通用的解决方案。
您有什么建议吗?
function complete(bWon) {
if (window._IsRefreshForm === "1") Mscrm.OpportunityCommandActions.opportunityClose(bWon);
else {
var oCrmFormSubmit = $get("crmFormSubmit"),
oUrl = Mscrm.CrmUri.create("/SFA/opps/dlg_closeopp.aspx");
oUrl.get_query()["pId"] = oCrmFormSubmit.crmFormSubmitId.value;
oUrl.get_query()["pType"] = oCrmFormSubmit.crmFormSubmitObjectType.value;
if (!IsNull(bWon)) oUrl.get_query()["won"] = bWon;
var estimatedvalueValue = Mscrm.FormControlInputBehavior.GetBehavior("estimatedvalue").get_dataValue();
if (!IsNull(estimatedvalueValue)) oUrl.get_query()["estimatedVal"] = estimatedvalueValue;
var callbackFunction = Mscrm.Utilities.createCallbackFunctionObject("performActionAfterCloseOpp", this),
ret_val = openStdDlgWithCallback(oUrl, document, 450, 420, callbackFunction);
isOutlookHostedWindow() && performActionAfterCloseOpp(ret_val)
}
}