DynamicsCRM365脚本操作指南
CRM脚本
Attribute()
转控件:(0)
取赋值:getValue(),setValue()
是否改动:getIsDirty()
表单载⼊时的值:getInitialValue()[Boolean, optionset]
提交类型:getSubmitMode(),setSubmitMode()//always,never,ditry
必填等级:getRequiredLevel(),setRequiredLevel()//required、none
⽤户操作等级:getUserPrivilege()//canCreate()、canRead()、canUpdate()
事件:addOnChange(),removeOnChange(),fireOnChange()[强制执⾏]
其他:getAttributeType(),getFormat(),getIsValid(),getMax(),getMaxLength(),getMin(),getName(),getParent(),getPrecision()
选项集:getOption(),getOptions(),getSelectedOption(),getText()
Control()
转属性:getAttribute()
提醒:addNotification(notification),clearNotification(uniqueId),clearNotifications(),setNotification(message,uniqueId)
禁⽤/启⽤:setDisabled(true),setDisabled(false),getDisabled()
显⽰/隐藏:setVisible(true),setVisible(false),getVisible()
描述:setLabel(),getLabel()
选中:setFocus
刷新:refresh()//仅限SubGrid
其他:addCustomFilter(),addCustomView(),addOption(),removeOption(value),clearOptions(),getControlType(),getData(),setData(),
getDefaultView(),setDefaultView(),getName(),getParent(),getSrc(),setSrc(),getInitialUrl(),getObject(),addOnKeyPress(),removeOnKeyPress(),fireOnKeyPress() hideAutoComplete(),showAutoComplete(),
查:addCustomFilter (fetchXmlFilter, entityType),
addCustomView (viewId, entityLogicalName, viewDisplayName, fetchXml, layoutXml, isDefault)
⼦⽹格:⽹格(只读)对象和⽅法(客户端引⽤)可编辑⽹格对象和⽅法(客户端引⽤)
Control:getGrid(),addOnLoad(),removeOnLoad(),addRecord(),getRelationship(),getRelationshipAttributeName(),getRelationshipName(),
getViewSelector().setCurrentView(),
Grid:getGrid().getSelectedRows(),getRows(),addOnRecordSelect(),fireOnRecordSelect(),removeOnRecordSelect(),getTotalRecordCount(),showLoadingMessage()                Rows:getGrid().getSelectedRows().get(),getAll(),getByFilter(),getByIndex(),getByName(),getFirst(),getLength(),add(),forEach(),remove()
Row: getGrid().getSelectedRows().get(0).ity.attributes/relatedEntities
执⾏上下⽂:FormContext().ity
t
⽤户ID:getUserId()
⽤户⾓⾊:getUserRoles()
⽤户语⾔:getUserLcid()
组织名称:getOrgUniqueName()
组织语⾔:getOrgLcid()
路径参数:getQueryStringParameters()
服务器路径: getClientUrl()
前追加组织名称:prependOrgName("/WebResource/**")效果:crmtest/WebResource/**
当前主题:getCurrentTheme()
客户端信息:client
OutLook:isOutlookClient()/isOutlookOnline()
Xrm.Page.data
页⾯流程:process(process=>State=>Step)
事件:abandonProcess(),addOnProcessStatusChange(),addOnStageChange(),addOnStageSelected(),
completeProcess(),getSelectedStage(),getStatus(),moveNext(),movePrevious(),setStatus(),switchProcess()…
获取Step:getActiveStage().getSteps().getByIndex(0)
当前页面脚本发生错误
事件:addOnLoad(),removeOnLoad(),blockAutoSave(),getIsDirty(),setFormDirty(),refresh(),save()
Xrm.ity
所有页⾯元素:attributes【forEach(),get(),getLength(),getByIndex(),getByName()…】
实体名称:getEntityName(),getEntitySetName()
实体ID:getId(),getKey(),getEntityReference()
主字段值:getPrimaryAttributeValue()
是否修改:getIsDirty()
保存事件:save( null | "saveandclose" |"saveandnew" )
添加保存时事件:addOnSave()
移出保存时事件:removeOnSave()
是否Hierarchy:isInHierarchy()
Xrm.Page.ui
事件:clearFormNotification(uniqueid),close(),getControls(),getCurrentControl(),getFormType(),getTabs(),refreshRibbon(),
标题:get_formTitle(),set_formTitle()
窗体提⽰框:setFormHtmlNotification(htmlText, notificationLevel, uniqueId)
setFormNotification(message, notificationLevel, uniqueId)
页⾯所有控件:controls【forEach(),get(),getAll(),getByFilter(),getByIndex(),getByName(),getLength()】
单个控件:("")【同Control()】
页⾯Tab:tabs【forEach(),get(),getLength()】
单个Tab:()【sections,getDisplayState(),getLabel(),getName(),getParent(),getVisible(),setDisplayState(),setFocus(),setLabel(),setVisible()】
Tab-Sections:(0).sections【forEach(),get(),getLength()】
单个Section:(0).(0)【getLabel(),getName(),getParent(),getVisible(),setLabel(),setVisible(),controls】
页⾯导航:navigation.items【forEach(),get(),getByFilter(),getByIndex(),getByName(),getLength()】
单个导航:()【getId(),getLabel(),getVisible(),setFocus()-导航跳跃,setLabel(),setVisible()】
获取导航:1.通过getLabel()遍历;2.通过ID:.get("navContacts")
例:隐藏活动:Xrm.Page.ui.("navActivities").setVisible(false)
窗体:formSelector.items【forEach(),get(),getByFilter(),getByIndex(),getByName(),getLenght()】
单个窗体:()【getId(),getLabel(),navigate()-窗体跳跃】
var formItem = Xrm.Page.CurrentItem();
Xrm.Utility
Xrm.Utility(客户端引⽤)
弹出框:Xrm.Utility.alertDialog(message,onCloseCallback)
确认框:firmDialog(message,yesCloseCallback,noCloseCallback)
打开新的或现有实体记录:Xrm.Utility.openEntityForm(name,id,parameters,windowOptions)
打开快速创建窗体:Xrm.Utility.openQuickCreate(entityLogicalName,createFromEntity,parameters).then(successCallback, errorCallback);
打开HTML Web资源:Xrm.Utility.openWebResource(webResourceName,webResourceData,width, height)
是否活动实体:Xrm.Utility.isActivityType(entityName)
使⽤移动设备摄像头扫描条形码:BarcodeValue().then(successCallback, errorCallback)
返回设备当前地理位置:CurrentPosition().then(successCallback, errorCallback)
隐藏函数
返回记录WebApi请求路径:EntityUrl(entityName, entityId)
删除数据:Xrm.Utility.deleteRecord(entityName, entityId)
创建数据:ate(entityLogicalName, parent, relationship, parameters, successCallback, failureCallback)
检索数据:ieveEntityRecord(entityReference, columnNames, successCallback, actionFailedCallback)
检索集合:ieveEntityCollection(keyQuery, successCallback, actionFailedCallback)
弹出框:Xrm.Utility.openDialog (url, dialogOptions, dialogArguments, initFunctionName, returnFunction)
打开记录:Xrm.Utility.openRecord(entityName, entityId, parameters)
展⽰Hierarchy:Xrm.Utility.showHierarchyPage(entityTypeName, entityId)
最佳新能
避免包含不必要的 JavaScript Web 资源库
向窗体中添加的脚本越多,⽤于下载脚本的时间也会越多。通常,脚本⾸次下载后会缓存在浏览器中,但⾸次查看窗体时的性能通常会形成重要的印象。
对于特定⽰例,因为您要使⽤ XMLHttpRequest,因此不要在窗体脚本中包括 jQuery。当 jQuery 提供
很多⼈很熟悉的 $.ajax 函数来执⾏这些请求时,它是开发⼈员的⾸选项,不是必选项。可以使⽤ Microsoft Dynamics 365 ⽀持的所有浏览器中的本机 XMLHttpRequest 对象来执⾏这些请求。详细信息:jQuery 的使⽤
避免在 Onload 事件中加载所有脚本
如果您有仅⽀持字段的 OnSave 事件或 OnChange 事件的代码,请确保使⽤事件处理程序为这些事件(⽽不是 OnLoad 事件)设置脚本库。这样可以推迟加载这些库,从⽽提⾼窗体加载时的性能。
为⽅便起见,不建议使⽤ OnLoad 事件处理程序中的 addOnChange ⽅法。虽然此⽅法可减少添加事件处理程序所需的步骤数,但它将导致窗体加载速度更慢。使⽤折叠选项卡来推迟加载 Web 资源
当折叠的选项卡中的分区中包括了 Web 资源或 IFRAME 时,在选项卡折叠的情况下不会加载它们。它们会在选项卡展开时加载。当选项卡状态发⽣变化时,会发⽣ TabStateChange 事件。⽀持折叠的选项卡中的 Web 资源或 IFRAME 所需的任何代码都可以使⽤ TabStateChange 事件的事件处理程序,从⽽减少本来必须在 OnLoad 事件中发⽣的代码。
设置默认可见性选项
避免在隐藏窗体元素的 OnLoad 事件中使⽤窗体脚本。请为可能隐藏的窗体元素设置默认可见性选项,
以便在加载窗体时使其默认不可见。然后,在 OnLoad 事件中使⽤脚本来显⽰您希望显⽰的窗体元素。