我有自定义活动实体。我想在完成之前检查天气产品样品已发送字段是否已填充。
我使用了这段代码,并将其添加到表单中,就像保存事件一样,但它不起作用。
function checkMandatory(executionObj)
{
debugger;
if (executionObj.getEventArgs().getSaveMode() == 58) {
if (Xrm.Page.getAttribute("ad_sampleproductssenton").getValue() == null) {
alert("Date is mandatory when completing activity");
executionObj.getEventArgs().preventDefault();
Mscrm.CommandBarActions.$O = false;
return false;
}
}
} //(this is line 65)
有没有人知道潜在的问题是什么? 以下是报告的错误:
Microsoft Dynamics CRM错误报告内容:
<CrmScriptErrorReport>
<ReportVersion>1.0</ReportVersion>
<ScriptErrorDetails>
<Message>Uncaught SyntaxError: Unexpected end of input</Message>
<Line>65</Line>
<URL>/%7B636106488660001088%7D/WebResources/ad_productSampleRequest?ver=-479036267</URL>
<PageURL>/form/page.aspx?lcid=1033&themeId=f499443d-2082-4938-8842-e7ee62de9a23&tstamp=581317&updateTimeStamp=636099264463033785&userts=131195256708212045&ver=-479036267#etc=10010&extraqs=%3fetc%3d10010&pagemode=iframe&pagetype=entityrecord&counter=1475052420068</PageURL>
<Function>anonymousror:Unexpectedendofinput</Function>
<FunctionRaw>SyntaxError: Unexpected end of input</FunctionRaw>
<CallStack>
<Function>anonymousror:Unexpectedendofinput</Function>
</CallStack>
</ScriptErrorDetails>
<ClientInformation>
<BrowserUserAgent>Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36</BrowserUserAgent>
<BrowserLanguage>undefined</BrowserLanguage>
<SystemLanguage>undefined</SystemLanguage>
<UserLanguage>undefined</UserLanguage>
<ScreenResolution>1366x768</ScreenResolution>
<ClientName>Web</ClientName>
<ClienState>Online</ClienState>
<ClientTime>2016-09-28T10:47:00</ClientTime>
</ClientInformation>
<ServerInformation>
<OrgLanguage>1033</OrgLanguage>
<OrgCulture>1033</OrgCulture>
<UserLanguage>1033</UserLanguage>
<UserCulture>1033</UserCulture>
<OrgID>{3567FFBD-0F48-E611-80BD-00155DFCDF39}</OrgID>
<UserID>{033FC4B4-2148-E611-80BD-00155DFCDF39}</UserID>
<CRMVersion>8.0.0.1088</CRMVersion>
</ServerInformation>
</CrmScriptErrorReport>
我删除了有问题的一行。但它仍然无法奏效。 这是我如何注册这个功能。这可以吗?
Andrii在这里是解释:
我发现有一些标记完成的背景代码:
if (!Mscrm.CommandBarActions.$O) {
Mscrm.CommandBarActions.$O = true;
var $v_5 = new Xrm.SaveOptions;
$v_5.useSchedulingEngine = false;
Xrm.Page.data.save($v_5).then($v_0, $v_1); //here is the call to your save-method
}
在这段代码中,他们的变量Mscrm.CommandBarActions。$ O在检查它是否为假之后立即设置为true。 只有当此变量为false时,才能再次调用save-method。如果你不中止保存过程,他们会在内部将此变量设置为true 它应该再次将此变量设置为false。
但是,对我而言,第一个世界的问题是让这项工作,甚至一次。 我可以尝试删除这行代码,如果它看起来像一个障碍,我只是想知道是否有其他原因。例如,这个函数有一个参数,这可能是一个问题吗?或其他什么......