• Microsoft Dynamics CRM4.0 和 Microsoft Dynamics CRM 2011 JScript 方法对比


    CRM 2011 如果需要再IE里面调试,可以按F12在前面加上contentIFrame,比如

    contentIFrame.document.getElementById("字段")或contentIFrame.Xrm.Page.context.getUserId()(获取当前登录用户的GUID)。

    方法名 Microsoft Dynamics CRM 4.0 Microsoft Dynamics CRM 2011
    保存  crmForm.Save() Xrm.Page.data.entity.save()
    保存并关闭   crmForm.SaveAndClose() Xrm.Page.data.entity.save("saveandclose")
    保存并新建 crmForm.SaveAndNew() Xrm.Page.data.entity.save("saveandnew")
    获取实体名 crmForm.ObjectTypeName Xrm.Page.data.entity.getEntityName()
    获取当前表单记录的GUID crmForm.ObjectId  Xrm.Page.data.entity.getId()
    实体类型代码  crmForm.ObjectTypeCode  没有
    表单类型  crmForm.FormType Xrm.Page.ui.getFormType()
    未定义(0) FORM_TYPE_UNDEFINED  FORM_TYPE_UNDEFINED 
    创建(1) FORM_TYPE_CREATE FORM_TYPE_CREATE
    更新(2)  FORM_TYPE_UPDATE FORM_TYPE_UPDATE
    只读模式(3) FORM_TYPE_READ_ONLY FORM_TYPE_READ_ONLY
    已禁用(4)  FORM_TYPE_DISABLED FORM_TYPE_DISABLED
    快速创建(5) FORM_TYPE_QUICK_CREATE FORM_TYPE_QUICK_CREATE(已弃用)
    批量编辑(6) FORM_TYPE_BULK_EDIT FORM_TYPE_BULK_EDIT
    读优化(11)  没有 FORM_TYPE_READ_OPTIMIZED
    阻止保存 event.returnValue = false; return; event.getEventArgs().preventDefault()
    (event为表单保存事件方法的参数)
    当前组织名称   Xrm.Page.context.getOrgUniqueName()
    设为焦点 crmForm.all.字段.SetFocus() Xrm.Page.getControl("字段").setFocus()或
    Xrm.Page.data.entity.attributes.get("字段").controls.get(0).setFocus();
    获取字段的值 crmForm.all.字段.DataValue Xrm.Page.getAttribute("字段").getValue()
    获取字段是否禁用 crmForm.all.字段.Disabled= true

    Xrm.Page.getControl("字段").setDisabled(true) 

    contentIFrame.window.Xrm.Page.getAttribute("字段").controls.get(0).setDisabled(false)

    获取语言编码 常量USER_LANGUAGE_CODE Xrm.Page.context.getOrgLcid()
    是否修改 crmForm.all.字段.IsDirty Xrm.Page.data.entity.getIsDirty()
    强制执行OnChange crmForm.all.字段.FireOnChange() 说明该字段必须为可编辑的才可以执行。 Xrm.Page.getAttribute("字段").fireOnChange()
    只读的字段强制提交 crmForm.all.字段.ForceSubmit = true; Xrm.Page.getAttribute("字段").setSubmitMode("always")
    字段需求级别 crmForm.all.字段.RequiredLevel Xrm.Page.getAttribute("字段").getRequiredLevel()
    没有约束(正常)(0) No constraint (normal)
    业务推荐的(1) Business recommended 所需Xrm.Page.getAttribute("字段").setRequiredLevel("required")
    该字段为业务必填的
    业务必需的(2) Business required 建议
    时间类型字段赋值 crmForm.all.字段.DataValue = new Date("2013/01/01")
    时间的格式必须为yyy/mm/dd,如果为yyy-mm-dd,就会报错,
    需要replace(/-/g, "/")进行替换。
    Xrm.Page.getAttribute("字段").setValue(new Date
    ("Tue Jun 18 00:00:00 UTC+0800 2013"));//改为2013/6/18
    弹出框 可以用js的windows.showdialog openStdDlg(url, lookupViewArgs, 800, 500); 
    加载JS文件 没有,不过可以另外写js方法: loadScriptAdv("脚本URL","任意ID",false);
    禁用表单上所有的字段 for (var i = 0; i < crmForm.all.length; i++) {
                var field = crmForm.all[i];
                if (field.id != null && field.id != "") {
                    field.Disabled = true;
                }
            }
    var controls = Xrm.Page.ui.controls.get();
        for (var i in controls) {
            var control = controls[i];
            if (control.getDisabled() == false) {
                control.setDisabled(true);
            }
        }或
    Xrm.Page.data.entity.attributes.forEach(function (item, index) {
                   item.controls.get(0).setDisabled(true);
                });
    禁用节下面所有的字段

    能一个一个字段禁用,循环目前还没有找到方法,哪位大侠知道可以告诉我

     //调用:sectionDisable("section_1_1",true);//section_1_1为名称
    //禁用节点下所有字段的信息 for CRM 2011 
    function sectionDisable (sectionname, disablestatus){
    var ctrlName = Xrm.Page.ui.controls.get();
    for(var i in ctrlName) {
    var ctrl = ctrlName[i];
    var ctrlSection = ctrl.getParent().getName();
    if (ctrlSection == sectionname) {
          ctrl.setDisabled(disablestatus);
       }
      }
    }
    禁用节下面所有的字段2

    只能一个一个字段禁用,循环目前还没有找到方法,哪位大侠知道可以告诉我

    //调用:sectionDisable("网点基本信息",true);//网点基本信息为标签
    //禁用节点下所有字段的信息 for CRM 2011
    function sectionDisable (sectionname, disablestatus){
    var ctrlName = Xrm.Page.ui.controls.get();
    for(var i in ctrlName) {
    var ctrl = ctrlName[i];
    var ctrlSection = ctrl.getParent().getLabel();
    if (ctrlSection == sectionname) {
    ctrl.setDisabled(disablestatus);
    }
    }
    }

    禁用选项卡下所有的字段1

    没有

    //调用:tabsDisable("基本信息",true);//基本信息为标签
    //禁用选项卡下所有字段的信息 for CRM 2011
    function tabsDisable (tabsname, disablestatus){
    var ctrlName = Xrm.Page.ui.controls.get();
    for(var i in ctrlName) {
    var ctrl = ctrlName[i];
    var ctrlSection = ctrl.getParent().getParent().getLabel();
    if (ctrlSection == tabsname) {
    ctrl.setDisabled(disablestatus);
    }
    }
    }

    禁用选项卡下所有的字段2

    没有

    //调用:tabsDisable("tab_1",true);//tab_1为名称
    //禁用选项卡下所有字段的信息 for CRM 2011
    function tabsDisable (tabsname, disablestatus){
    var ctrlName = Xrm.Page.ui.controls.get();
    for(var i in ctrlName) {
    var ctrl = ctrlName[i];
    var ctrlSection = ctrl.getParent().getParent().getName();
    if (ctrlSection == tabsname) {
    ctrl.setDisabled(disablestatus);
    }
    }
    }

    获取当前登录用户的GUID function GetCurrentUserId() {
    var soapBody = "<soap:Body>"+
    "<Execute xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+
    "<Request xsi:type='WhoAmIRequest' />"+
    "</Execute></soap:Body>";

    var soapXml = "<soap:Envelope " +
    "xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' "+
    "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "+
    "xmlns:xsd='http://www.w3.org/2001/XMLSchema'>";
    soapXml += GenerateAuthenticationHeader();
    soapXml += soapBody;
    soapXml += "</soap:Envelope>";

    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    xmlhttp.open("POST", "/mscrmservices/2007/crmservice.asmx", false);
    xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Execute");
    xmlhttp.send(soapXml);

    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async = false;
    xmlDoc.loadXML(xmlhttp.responseXML.xml);
    CRMUserGuid = xmlDoc.getElementsByTagName("UserId")[0].childNodes[0].nodeValue;
    }
    //注意:这个获取的值是小写,一般可以通过下面的方式处理下。
    var currentUserId = ("{" + GetCurrentUserId() + "}").toUpperCase();//获取当前用户的GUID

    Xrm.Page.context.getUserId();把crm4.0 的方法封装好了,用crm4.0的方法也可以。

     

    //获取当前的用户
    GetCurrentUserId = function () {
    var soapBody = "<soap:Body><Execute xmlns='http://schemas.microsoft.com/crm/2007/WebServices'><Request xsi:type='WhoAmIRequest' /></Execute></soap:Body>";

    var soapXml = "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>";
    var header1 = GenerateAuthenticationHeader();//支持IFD和内部部署和OutLook
    var header1 = "<soap:Header><CrmAuthenticationToken xmlns="http://schemas.microsoft.com/crm/2007/WebServices">" +
    "<AuthenticationType xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">0</AuthenticationType>" +
    "<CrmTicket xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes"></CrmTicket>" +
    "<OrganizationName xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">LOVOL</OrganizationName>" +
    "<CallerId xmlns="http://schemas.microsoft.com/crm/2007/CoreTypes">00000000-0000-0000-0000-000000000000</CallerId>" +
    "</CrmAuthenticationToken></soap:Header>"; //只支持内部部署不支持IFD部署和OutLook
    soapXml += header1;
    soapXml += soapBody;
    soapXml += "</soap:Envelope>";

    var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    xmlhttp.open("POST", "/mscrmservices/2007/crmservice.asmx", false);
    xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Execute");
    xmlhttp.send(soapXml);

    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async = false;
    xmlDoc.loadXML(xmlhttp.responseXML.xml);
    CRMUserGuid = xmlDoc.getElementsByTagName("UserId")[0].childNodes[0].nodeValue;
    return CRMUserGuid;
    }

  • 相关阅读:
    JDE函数--获取当前登录人的描述
    JDE报表开发笔记(R5537011 收货校验统计表)
    JDE函数--GetUDC(B函数)
    JDE隐藏Constant等(Hide Object)
    Oracle “dba_tables”介绍
    word2013设置页面边框
    makefile--#的不正确使用
    CICS定时
    程序的命名
    UE上传到FTP,会多出些字符
  • 原文地址:https://www.cnblogs.com/allenhua/p/3342763.html
Copyright © 2020-2023  润新知