Dynamics365—脚本
在这⾥记录下 Dynamics CRM/365 中常⽤的脚本使⽤⽅法。
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)
Xrm.Utility
Xrm.Utility.closeProgressIndicator                    关闭进度对话框。
AllowedStatusTransitions          返回指定实体类型和状态码的有效状态转换。
EntityMetadata                          返回指定实体的实体元数据。
GlobalContext                            获取全局上下⽂。
LearningPathAttributeName      返回学习路径(指导帮助)内容设计器期望的DOM属性的名称,该属性⽤于标识模型驱动的应⽤程序表单中的UI控件。
getattribute方法返回类型PageContext                              获取页⾯上下⽂作为表⽰页⾯的对象。
ResourceString                          返回与指定的Web资源关联的给定键的本地化字符串。
Xrm.Utility.invokeProcessAction                      根据指定的参数调⽤操作。
Xrm.Utility.lookupObjects                                打开查控件以选择⼀个或多个项⽬。
freshParentGrid                          刷新包含指定记录的⽗⽹格。
Xrm.Utility.showProgressIndicator                  显⽰带有指定消息的进度对话框。
//2.1、GlobalContext()
var roles2 = GlobalContext().userSettings.securityRoles;//当前⽤户⾓⾊的id数组
var roles3 = GlobalContext().les;//当前⽤户⾓⾊的数组包括⾓⾊名称
//2.2、PageContext()
PageContext().ateFromEntity //获取到是从哪个⽗记录来创建⼦记录的,然后执⾏⼀次查询即可
Xrm.WebApi
ieveRecord
ieveMultipleRecords
ateRecord
Xrm.WebApi.updateRecord
Xrm.WebApi.deleteRecord
ute
uteMultiple
Xrm.WebApi.isAvailableOffline
line
ieveRecord
ieveMultipleRecords
ateRecord
line.updateRecord
line.deleteRecord
ute
uteMultiple
Xrm.WebApi.offline
Xrm.ieveRecord
Xrm.ieveMultipleRecords
Xrm.ateRecord
Xrm.WebApi.offline.updateRecord
Xrm.WebApi.offline.deleteRecord
Xrm.WebApi.offline.isAvailableOffline
Xrm.Navigation
var alertStrings = { confirmButtonLabel: "Yes", text: "操作成功!", title: "提⽰" };
var alertOptions = { height: 120, width: 260 };
Xrm.Navigation.openAlertDialog(alertStrings, alertOptions);
Xrm.Navigation.openErrorDialog({ message: "操作失败!" + ssage })
最佳新能
避免包含不必要的 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 事件中使⽤脚本来显⽰您希望显⽰的窗体元素。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。