После обновления 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)
}
}