gpt4 book ai didi

javascript - 对方法或属性访问的意外调用。微软客户关系管理

转载 作者:行者123 更新时间:2023-12-03 06:03:14 26 4
gpt4 key购买 nike

我有以下 js 脚本,可在 ms crm 中的 FormLoad 事件上运行。

function showForm() {
if (Xrm.Page.ui.getFormType() == 2) {
Xrm.Page.ui.controls.get("pcrm_contactfield").setDisabled(true);
Xrm.Page.ui.controls.get("pcrm_privatefield").setDisabled(true);
return;
}

processField("contact", "pcrm_contactfield");
processField("pcrm_userconnection", "pcrm_privatefield");
var userName = '';
var lblUser = parent.document.getElementById('lblUserName');
if (lblUser != null)
if (typeof lblUser.innerText != "undefined")
userName = lblUser.innerText;
else
userName = lblUser.innerHTML;
else
userName = Xrm.Page.context.getUserName();

if (!Xrm.Page.data.entity.getId()) {
var userControl = Xrm.Page.getControl("pcrm_userid");
if (userControl) {
if (XrmServiceToolkit.Soap.IsCurrentUserRole("PCRM Connections Manager")) {
userControl.setDisabled(false);
} else {
var userAttribute = Xrm.Page.getAttribute("pcrm_userid");
var lookupValue = {
id: Xrm.Page.context.getUserId(),
entityType: "systemuser",
name: userName
};
userAttribute.setValue([lookupValue]);
userAttribute.setSubmitMode("always");
}
}
}
}

function processField(entityName, field)
{
SDK.Metadata.RetrieveEntity(SDK.Metadata.EntityFilters.Attributes, entityName, null, false,
function (entityMetadata) {
entityMetadata.Attributes.sort(function (a, b) {
if (a.LogicalName < b.LogicalName)
return -1;
if (a.LogicalName > b.LogicalName)
return 1;
return 0;
});
applySelect(field, entityMetadata.Attributes);
},
function () {
});
}

function applySelect(id, attributes) {
if (parent.document.getElementById(id + "_container"))
parent.document.getElementById(id + "_container").style.display = "none";
else if (parent.document.getElementById(id)) {
parent.document.getElementById(id).style.display = "none";
parent.document.getElementById(id + "_d").style.display.paddingLeft = "23px";
}

var selectControl = "<select style='width: 100%' id ='" + id + "_select' onchange='onChange(this, \"" + id + "\")'><option></option>";
var value = Xrm.Page.data.entity.attributes.get(id).getValue();

for (var i = 0; i < attributes.length; i++) {
if (attributes[i].IsPrimaryId || attributes[i].AttributeType == "Lookup" || attributes[i].DisplayName.LocalizedLabels.length == 0)
continue;

var logicalName = attributes[i].LogicalName;
if (logicalName == "createdon" || logicalName == "modifiedon" || logicalName == "importsequencenumber" ||
logicalName == "overriddencreatedon" || logicalName == "ownerid" || logicalName == "statecode" || logicalName == "statuscode" ||
logicalName == "timezoneruleversionnumber" || logicalName == "utcconversiontimezonecode")
continue;

selectControl += "<option" + (value == logicalName ? " selected" : "") + " value='" + logicalName + "'>" + logicalName + " (" + attributes[i].DisplayName.LocalizedLabels[0].Label + ")</option>";
}
selectControl += "</select>";

parent.document.getElementById(id + "_d").innerHTML += selectControl;
}

parent.onChange = function (control, field) {
Xrm.Page.data.entity.attributes.get(field).setValue(control.value);
}

现在我解释一下他在做什么。我有表单,这个 js 代码动态创建两个 <select>元素。此代码还将元素与一些数据绑定(bind)。此功能在 applySelect 方法中起作用。
它工作没有错误。我可以选择一些选项,单击“保存”并创建新记录。这是异步工作的。
但是,当调用另一个重定向到另一个页面或刷新当前页面的事件时,就会出现 js 错误。这仅在 IE 中重现,我不认为这是 MS CRM 中的功能或错误。来自 CRM 的消息如下所示:

Microsoft Dynamics CRM Error Report Contents

<CrmScriptErrorReport>
<ReportVersion>1.0</ReportVersion>
<ScriptErrorDetails>
<Message>Unexpected call to method or property access.</Message>
<Line>0</Line>
<URL>/form/page.aspx?lcid=1033&themeId=f499443d-2082-4938-8842-e7ee62de9a23&tstamp=513281&updateTimeStamp=636096333533056238&userts=131191056966436445&ver=-703338019#etc=10007&extraqs=%3fetc%3d10007&pagemode=iframe&pagetype=entityrecord&counter=1474641000171</URL>
<PageURL>/form/page.aspx?lcid=1033&themeId=f499443d-2082-4938-8842-e7ee62de9a23&tstamp=513281&updateTimeStamp=636096333533056238&userts=131191056966436445&ver=-703338019#etc=10007&extraqs=%3fetc%3d10007&pagemode=iframe&pagetype=entityrecord&counter=1474641000171</PageURL>
<Function>anonymous(dirtyVisiblePropertyData){var$v_0=dirtyVisiblePropertyData.getKeys();for(var$v_1=0;$v_1<$v_0.length;$v_1++){var$v_2=$v_0[$v_1];if(IsNull(this.get_viewMap().get_item($v_2))){}else{try{this.get_viewMap().get_item($v_2).update(dirtyVisiblePropertyD</Function>
<FunctionRaw>function(dirtyVisiblePropertyData) {
var $v_0 = dirtyVisiblePropertyData.getKeys();
for (var $v_1 = 0; $v_1 < $v_0.length; $v_1++) {
var $v_2 = $v_0[$v_1];
if (IsNull(this.get_viewMap().get_item($v_2))) {
</FunctionRaw>
<CallStack>
<Function>anonymous(dirtyVisiblePropertyData){var$v_0=dirtyVisiblePropertyData.getKeys();for(var$v_1=0;$v_1<$v_0.length;$v_1++){var$v_2=$v_0[$v_1];if(IsNull(this.get_viewMap().get_item($v_2))){}else{try{this.get_viewMap().get_item($v_2).update(dirtyVisiblePropertyData.get_item($v_2));}catch($v_3){Mscrm.CrmDebug.fail(String.format('ExceptionencounteredupdatingUIelement{0}:{1}',$v_2,$v_3.message));catchError($v_3.message,window.location.href,0,true);}}}}</Function>
<Function>anonymous(){if(this.$9i_1){var$v_0=this.$4M_1;this.$4M_1=new(Mscrm.TurboForm.Control.TypedDictionary$1.$$(Mscrm.TurboForm.Control.PropertyBag))();this.ui.updateUI($v_0);}}</Function>
<Function>anonymous(){this.$AC_1++;var$v_0=null;if(!this.$9V_1){$v_0=Xrm.Internal.startMetricsStopwatch(String.format('UIUpdate{0}',this.$AC_1));$v_0.start();}this.$8M_1=false;for(var$v_1=0;$v_1<this.$1w_1.length;$v_1++){var$v_2=this.$1w_1[$v_1];if(!IsNull($v_2)){$v_2.flushVisibilityChanges();}}if($v_0){$v_0.stop();}}</Function>
<Function>tryCommitActiveControl(keepFocus)</Function>
<Function>anonymous(action,isAutoSave,sync,shouldPromptOnDataLoss,saveOptions,saveAsCompleted){var$v_0=jQueryApi.jQueryDeferredFactory.Deferred(Mscrm.TurboForm.Control.EntityDataDescriptor,Mscrm.ErrorInformation);if(this.$7C_1){$v_0.reject(Mscrm.ErrorInformation.createErrorInfo((-1).toString(),Mscrm.TurboForm.Control.ErrorCode.toString(-1),null));return$v_0.promise();}this.$7C_1=true;if(!isAutoSave){tryCommitActiveControl(true);}var$v_1=this.$F1_1(action,isAutoSave);sync=(IsNull(sync))?false:sync;sync=(IsNullOrEmptyString(action))?sync:true;shouldPromptOnDataLoss=(IsNull(shouldPromptOnDataLoss))?true:shouldPromptOnDataLoss;var$v_2=newMscrm.TurboForm.Control.Data.EntitySaveEventArgs($v_1);if(IsNull(isAutoSave)){isAutoSave=false;}var$v_3=this.get_isNew();this.$8n_1=isAutoSave;var$v_4=this.$JO_1(isAutoSave,$v_2);if($v_4.$14_0){var$v_5=Mscrm.TurboForm.Control.CommandService.get_instance().handleSaveForScheduledEntities(Xrm.Page.data.entity.getEntityName(),saveOptions,$v_1,$v_0);if($v_5){this.$7C_1=false;return$v_0.promise();}var$$t_H=this;var$v_6=function($p1_0){$$t_H.$II_1($p1_0,$v_3);$v_0.resolve($p1_0);$$t_H.$An_1(action,$v_2,isAutoSave,shouldPromptOnDataLoss);$$t_H.$Hx_1();};var$$t_I=this;var$v_7=function($p1_0){if(isGlobalQuickCreate()){var$v_8=newXrm.SaveErrorResponse($p1_0.get_errorCode(),$p1_0.get_description(),$p1_0.get_serializedException());Mscrm.GlobalQuickCreate.GlobalQuickCreateBehavior.executeCallbacksAssociatedWithGlobalQuickCreate('savefailure',$v_8);}$v_0.reject($p1_0);};this.$L_1.$8_1.removeState(16);if(this.$L_1.$8_1===Mscrm.TurboForm.Control.PageManager.get_instance().$M_1){Mscrm.TurboForm.Control.CommandService.get_instance().save(this,sync,action).then($v_6,$v_7);}else{Mscrm.TurboForm.Control.CommandService.get_instance().quickFormSave(this,saveAsCompleted).then($v_6,$v_7);}}else{if(isAutoSave){Mscrm.TurboForm.Control.CommandService.get_instance().handleAutoSaveInvalid();}if($v_4.$3w_0===14){$v_0.resolve();this.$An_1(action,$v_2,isAutoSave,shouldPromptOnDataLoss);}elseif($v_4.$3w_0===13){$v_0.reject(Mscrm.ErrorInformation.createErrorInfo(saveCanceledErrorCodeAsString(),'',''));this.$An_1(action,$v_2,isAutoSave,shouldPromptOnDataLoss);}else{$v_0.reject();}}this.$7C_1=false;return$v_0.promise();}</Function>
<Function>anonymous(action,isAutoSave){this.saveInternal(action,isAutoSave);}</Function>
<Function>anonymous(action){this.$1T_1.save(action);}</Function>
<Function>anonymous(saveMode){if(Mscrm.InternalUtilities._String.isNullOrWhiteSpace(saveMode))Xrm.Page.data.entity.save();elseXrm.Page.data.entity.save(saveMode)}</Function>
<Function>anonymous(form){if(Mscrm.RibbonActions.isRefreshForm())Mscrm.CommandBarActions.saveForm("");elseMscrm.RibbonActions.saveLegacyForm(form,"Save")}</Function>
<Function>anonymous($p0,$p1,$p2,$p3){try{var$v_0=Mscrm.CommandHandler.$JQ($p1);Mscrm.CrmHeader.setScriptFile(Mscrm.CrmUri.create($p1.trim()),true,null,$v_0);var$v_1=!$v_0?window:Mscrm.Utilities.getTurboFormCustomScriptWindow();$v_0&&Xrm.Internal.trace.logT(Mscrm.CommandHandler,$p1+"isbeingloadedintoturboformscriptmanager");for(var$v_2=$p0.split("."),$v_3=0;$v_3<$v_2.length;$v_3++)if($v_1)$v_1=$v_1[$v_2[$v_3]];if(!IsNull($v_1)&&typeof$v_1==="function"){var$v_4=this.$Fa_1($p2,$p3);return$v_1.apply(null,$v_4)}returnnull}catch($v_5){returnnull}}</Function>
<Function>anonymous($p0,$p1,$p2,$p3){var$v_0=this.getCommandDefinition($p0,$p1);if(IsNull($v_0)||IsNull($v_0.Actions))returnfalse;for(var$v_1=0;$v_1<$v_0.Actions.length;$v_1++){var$v_2=$v_0.Actions[$v_1];switch($v_2.ActionType){case2:this.$GX_1($v_2.Attributes);break;case3:var$v_3=$v_2.Attributes;this.$Ce_1($v_3.FunctionName,$v_3.Library,$v_2.Parameters,$p2);break;case1:this.$GY_1($v_2.Attributes,$v_2.Parameters);break}}returntrue}</Function>
<Function>anonymous($p0,$p1,$p2){var$v_0=this.parseCommandFromRibbon($p0),$v_1=this.$Ag_1($v_0.command,$v_0.entityLogicalName,$p1,$p2),$v_2=$p1;if(!IsNull($v_2)&&!isNullOrEmptyString($v_2.PopulationXML)&&!$v_2.SuppressCommandIncludes){var$v_3=null;if($v_0.entityContext==="Form"){var$v_4=$find("crmFormSelector");if($v_4)$v_3=$v_4.get_currentFormId()}$v_2.PopulationXML=this.$Iq_1($v_2.PopulationXML,$v_0.entityLogicalName,$v_3)}return$v_1}</Function>
<Function>anonymous(command,properties){if(this.isControlEnabled(command)){if(!properties)properties={};this.get_$50_2().handleCommand(command,properties,0)}}</Function>
<Function>anonymous($p0,$p1){if(!IsNull(this.ribbonData)){if(IsNull($p1))$p1={};$p1["SourceControlId"]=IsNull(this.id)?$p0.id:this.id;var$v_0=this.getAttribute("CommandValueId");if(!IsNull($v_0))$p1["CommandValueId"]=$v_0;this.get_commandBar().$CU_4(.5);try{this.ribbonData.executeCommand(this.command,$p1);this.$5K_0&&Mscrm.RibbonManager.get_$3T().$z_1.executeCommand(this.command,$p1)}finally{this.get_commandBar().$CW_4(true)}}}</Function>
<Function>anonymous($p0,$p1){this.executeCommand($p0,null)}</Function>
<Function>anonymous(domEvent){var$v_0=Mscrm.Utilities.getDomEventElement(domEvent,"LI"),$v_1=this.$1T_4[$v_0.id];if($v_1)$v_1.click($v_0,domEvent);elseif(this.$7Q_4($v_0.id)){window.self.CommandBarMoreMenuLoadStartTime=(newDate).getTime();this.$I0_4(domEvent);window.self.CommandBarMoreMenuLoadEndTime=(newDate).getTime()}}</Function>
<Function>anonymous(){returnb.apply(a,arguments)}</Function>
<Function>anonymous(b){returne.call(a,newSys.UI.DomEvent(b))}</Function>
</CallStack>
</ScriptErrorDetails>
<ClientInformation>
<BrowserUserAgent>Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; rv:11.0) like Gecko</BrowserUserAgent>
<BrowserLanguage>en-US</BrowserLanguage>
<SystemLanguage>ru-RU</SystemLanguage>
<UserLanguage>en-US</UserLanguage>
<ScreenResolution>1920x1080</ScreenResolution>
<ClientName>Web</ClientName>
<ClienState>Online</ClienState>
<ClientTime>2016-09-23T17:30:33</ClientTime>
</ClientInformation>
<ServerInformation>
<OrgLanguage>1033</OrgLanguage>
<OrgCulture>1033</OrgCulture>
<UserLanguage>1033</UserLanguage>
<UserCulture>1033</UserCulture>
<OrgID>{E5438BCF-087C-E611-80CA-000C29135D52}</OrgID>
<UserID>{6A82F1DF-087C-E611-80CA-000C29135D52}</UserID>
<CRMVersion>8.0.1.79</CRMVersion>
</ServerInformation>
</CrmScriptErrorReport>

我做错了什么?如果可能的话如何解决?

最佳答案

您的代码正在篡改表单的 DOM,这是不受支持的,应该避免,因为它可能会导致表单以不可预测的方式运行,并且在使用 Service Pack 或新版本更新 CRM 时也可能会中断。

当您的表单上需要一段自定义 HTML 时,请使用 HTML Web 资源。

关于javascript - 对方法或属性访问的意外调用。微软客户关系管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39663467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com