Возможность "закрыть как потерянный" не работает после обновления с CRM2011 до CRM2016 - PullRequest
0 голосов
/ 09 января 2019

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