Microsoft Dynamics CRM 4.0 JScript 通用公共方法
1.基本参数
var CRM_FORM_TYPE_CREATE = 1;
var CRM_FORM_TYPE_UPDATE = 2;
var CRM_FORM_TYPE_READ_ONLY = 3;
var CRM_FORM_TYPE_DISABLED = 4;
var CRM_FORM_TYPE_QUICK_CREATE = 5;
var CRM_FORM_TYPE_BULK_EDIT = 6;
2.基本方法
function FormSubmit(method, action) {
var frm = $("#form1")[0];
frm.method = method;
frm.action = action;
frm.submit();
}
3.CRM实体检索
RetrieveSingleEntity = function (entityName, entityId, columnSet) {
var soapNS = "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"";
var xsiNS = "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"";
var xsdNS = "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"";
var defaultNS = "xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\"";
var queryNS = "xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\"";
var async = false;
var sMessage = BuildStart() + BuildBody(entityName, entityId, columnSet) + BuildEnd();
var oHttp = new ActiveXObject("Msxml2.XMLHTTP");
SendMessage(oHttp);
return BuildResult(oHttp);
function SendMessage(oHttp) {
var url = "/mscrmservices/2007/crmservice.asmx";
oHttp.open("POST", url, async);
oHttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Execute");
oHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
oHttp.setRequestHeader("Content-Length", sMessage.length);
oHttp.Send(sMessage);
}
function BuildResult(oHttp) {
var response = oHttp.responseText;
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
xmlDoc.async = async;
xmlDoc.loadXML(response);
if (xmlDoc.parseError.errorCode != 0) {
var xmlErr = xmlDoc.parseError;
alert("Error retrieving Recipient: " + xmlErr.reason);
}
else {
var arrResult = new Array();
var returnNode = xmlDoc.documentElement.selectSingleNode("/soap:Envelope/soap:Body/ExecuteResponse/Response/BusinessEntity/Properties");
for (var i = 0; i < returnNode.childNodes.length; i++) {
arrResult[i] = new Array();
arrResult[i][0] = returnNode.childNodes[i].attributes[1].value;
arrResult[i][1] = returnNode.childNodes[i].text;
if (returnNode.childNodes[i].attributes[0].value == "PicklistProperty") {
if (returnNode.childNodes[i].childNodes[0].attributes[0] != undefined) {
arrResult[i][2] = returnNode.childNodes[i].childNodes[0].attributes[0].value;
}
}
if (returnNode.childNodes[i].attributes[0].value == "LookupProperty" || returnNode.childNodes[i].attributes[0].value == "OwnerProperty" || returnNode.childNodes[i].attributes[0].value == "CustomerProperty") {
if (returnNode.childNodes[i].childNodes[0].attributes[0] != undefined) {
if (returnNode.childNodes[i].childNodes[0].attributes[0].name == "name") {
arrResult[i][2] = returnNode.childNodes[i].childNodes[0].attributes[0].value;
}else {
arrResult[i][2] = null;
}
if (returnNode.childNodes[i].childNodes[0].attributes[0].name == "type") {
arrResult[i][3] = returnNode.childNodes[i].childNodes[0].attributes[0].value;
}
if (returnNode.childNodes[i].childNodes[0].attributes[1] != undefined) {
if (returnNode.childNodes[i].childNodes[0].attributes[1].name == "type") {
arrResult[i][3] = returnNode.childNodes[i].childNodes[0].attributes[1].value;
}
}
}
}
}
}
return arrResult;
}
function BuildStart() {
var sMessage = "";
sMessage += "<soap:Envelope ";
sMessage += soapNS + " ";
sMessage += xsiNS + " ";
sMessage += xsdNS + ">";
sMessage += GenerateAuthenticationHeader();
return sMessage;
}
function BuildBody(entityName, entityId, columnSet) {
var sMessage = "";
sMessage += "<soap:Body>";
sMessage += "<Execute " + defaultNS + ">";
sMessage += "<Request xsi:type=\"RetrieveRequest\" ReturnDynamicEntities=\"true\">";
sMessage += "<OptionalParameters>";
sMessage += "<OptionalParameter xsi:nil=\"true\" />";
sMessage += "</OptionalParameters>";
sMessage += "<Target xsi:type=\"TargetRetrieveDynamic\">";
sMessage += "<EntityName>" + entityName + "</EntityName>";
sMessage += "<EntityId>" + entityId + "</EntityId>";
sMessage += "</Target>";
if (columnSet == null || columnSet.length == 0) {
sMessage += "<ColumnSet " + queryNS + " xsi:type=\"q1:AllColumns\" />";
}
else {
sMessage += "<ColumnSet " + queryNS + " xsi:type=\"q1:ColumnSet\">";
sMessage += "<q1:Attributes>";
for (var i = 0; i < columnSet.length; i++) {
sMessage += "<q1:Attribute>";
sMessage += columnSet[i];
sMessage += "</q1:Attribute>";
}
sMessage += "</q1:Attributes>";
sMessage += "</ColumnSet>";
}
sMessage += "</Request>";
sMessage += "</Execute>";
sMessage += "</soap:Body>";
return sMessage;
}
function BuildEnd() {
return "</soap:Envelope>";
}
}
4.获取lookup类型的值
GetLookupFieldValue = function (oResult, fieldScheduleName) {
for (var i = 0; i < oResult.length; i++) {
if (oResult[i] == undefined) {
continue;
}
if (oResult[i][0] == undefined) {
continue;
}
if (oResult[i][0] == fieldScheduleName) {
var item = new Object();
item.id = oResult[i][1];
item.name = oResult[i][2];
item.typename = oResult[i][3];
var data = new Array();
data[0] = item;
break;
}
}
return data;
}
5.获取picklist类型的值
GetPicklistFieldValue = function (oResult, fieldScheduleName) {
for (var i = 0; i < oResult.length; i++) {
if (oResult[i] == undefined) {
continue;
}
if (oResult[i][0] == undefined) {
continue;
}
if (oResult[i][0] == fieldScheduleName) {
var item = new Object();
item.value = oResult[i][1];
item.selectedtext = oResult[i][2];
var data = new Array();
data[0] = item;
break;
}
}
return data;
}
6.获取字段的值
GetFieldValue = function (oResult, fieldScheduleName) {
var fieldValue;
for (var i = 0; i < oResult.length; i++) {
if (oResult[i] == undefined) {
continue;
}
if (oResult[i][0] == undefined) {
continue;
}
if (oResult[i][0] == fieldScheduleName) {
fieldValue = oResult[i][1];
break;
}
}
return fieldValue;
}
7.获取当前的用户
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();
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>";
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;
}
//注意:这个获取的值是小写,一般可以通过下面的方式处理下。
var currentUserId = ("{" + GetCurrentUserId() + "}").toUpperCase();//获取当前用户的GUID
8.CRM实体筛选
RetrieveQueryRecords = function (fetchXmlStr) {
var returnResults = null;
var xml = "<?xml version='1.0' encoding='utf-8'?>" +
"<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'>" +
GenerateAuthenticationHeader() +
"<soap:Body>" +
"<Fetch xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
"<fetchXml>" +
fetchXmlStr +
"</fetchXml>" +
"</Fetch>" +
"</soap:Body>" +
"</soap:Envelope>";
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xHReq.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Fetch");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
var resultXml = xHReq.responseXML;
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0) {
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
else {
var resultSet = new String();
resultSet = resultXml.text;
resultSet.replace('<', '<');
resultSet.replace('>', '>');
var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
oXmlDoc.async = false;
oXmlDoc.loadXML(resultSet);
returnResults = oXmlDoc.getElementsByTagName('result');
}
return returnResults;
}
9.设置IFrame控件(IFrame控件名称,关联关系名称)
SetIFameSrc = function (oIFrame, relationName) {
areaIframe_OnReadyStateChange = function () {
if (oIFrame.readyState == "complete") {
var tableList = oIFrame.contentWindow.document.getElementsByTagName("table");
if (tableList != null) {
for (var i = 0; i < tableList.length; i++) {
if (tableList[i].className == "ms-crm-Form-Area") {
tableList[i].style.paddingBottom = 0;
tableList[i].style.paddingLeft = 0;
tableList[i].style.paddingRight = 0;
break;
}
}
}
}
}
oIFrame.attachEvent("onreadystatechange", areaIframe_OnReadyStateChange);
var sArea = relationName;
var sBaseUrl = "areas.aspx?";
var html = sBaseUrl;
html += "oId=" + crmForm.ObjectId;
html += "&oType=" + crmForm.ObjectTypeCode;
html += "&security=" + crmFormSubmit.crmFormSubmitSecurity.value;
html += "&roleOrd=1";
html += "&tabSet=" + sArea;
oIFrame.src = html;
}
10.判断当前登录用户是否存在安全角色权限(输入角色名)
ChectUserRoles = function (roleName) {
var checkValue = false;
var xmlRoleCount = "<fetch mapping=\'logical\' count=\'50\' aggregate=\'true\'>" +
"<entity name=\'systemuserroles\'>" +
"<attribute name=\'systemuserroleid\' aggregate=\'count\' alias=\'count\' />" +
"<filter>" +
"<condition attribute=\'systemuserid\' operator=\'eq\' value=\'" + guidCurrentUserId + "\' />" +
"</filter>" +
"<link-entity name=\'role\' from=\'roleid\' to=\'roleid\' link-type=\'inner\'>" +
"<filter>" +
"<condition attribute=\'name\' operator=\'eq\' value=\'" + roleName + "\' />" +
"</filter>" +
"</link-entity>" +
"</entity>" +
"</fetch>";
resultRoleCount = RetrieveQueryRecords(xmlRoleCount);
if (resultRoleCount[0] != null) {
if (resultRoleCount[0].selectSingleNode('./count').nodeTypedValue > 0) {
checkValue = true;
}
}
return checkValue;
}
11.隐藏"文件菜单(F)"、"保存"、"保存并关闭"、"保存并新建"三个按钮
HideSaveButtonGroup = function () {
var file = document.getElementById("file"); //文件菜单(F)
var _MBcrmFormSave = document.getElementById("_MBcrmFormSave"); //保存
var _MBcrmFormSaveAndClose = document.getElementById("_MBcrmFormSaveAndClose"); //保存并关闭
var _MBcrmFormSubmitCrmForm59truetruefalse = document.getElementById("_MBcrmFormSubmitCrmForm59truetruefalse"); //保存并新建
file.style.display = "none";
_MBcrmFormSave.style.display = "none";
_MBcrmFormSaveAndClose.style.display = "none";
_MBcrmFormSubmitCrmForm59truetruefalse.style.display = "none";
}
12.添加保存并新建
AddSaveandCreate = function () {
var _MBcrmFormSubmitCrmForm59truetruefalse = window.document.getElementById("_MBcrmFormSubmitCrmForm59truetruefalse");
var a = _MBcrmFormSubmitCrmForm59truetruefalse.getElementsByTagName("a");
if (a.length > 0) {
a[0].innerHTML = "<img tabIndex='0' class='ms-crm-Menu-ButtonFirst' alt='保存并新建' src='/_imgs/ico/16_L_saveOpen.gif'/>"
a[0].innerHTML += "<span tabIndex='0' class='ms-crm-MenuItem-TextRTL'>保存并新建</span>";
}
}
13.禁用lookUp查看事件
DisableLookup = function (item) {
var item = window.document.getElementById(item);
var spanlist = item.getElementsByTagName("span");
for (var i = 0; i < spanlist.length; i++) {
if (spanlist[i].onclick = "openlui()") {
spanlist[i].onclick = "";
}
}
}
14.隐藏字段
HideField = function (fieldName) {
var crmform_field_c = document.getElementById(fieldName + "_c");
var crmform_field_d = document.getElementById(fieldName + "_d");
crmform_field_c.style.display = "none";
crmform_field_d.style.display = "none";
}
15.隐藏IFrame中工具栏上的部分按钮
function HideFrameGridBarItems() {
var frame = event.srcElement;
if (frame.readyState != "complete")
return;
var window = frame.contentWindow;
var mnuBar1 = window.document.getElementById("mnuBar1");
var mnuBar1_UL = mnuBar1.getElementsByTagName("ul");
var mnuBar1_LIs = mnuBar1.getElementsByTagName("li");
if (mnuBar1_LIs != null && mnuBar1_LIs.length > 0) {
for (var i = 0; i < mnuBar1_LIs.length; i++) {
if (mnuBar1_LIs[i].id != "_MBcrmGridPrint" && mnuBar1_LIs[i].id != "_MBcrmGridPrint" && mnuBar1_LIs[i].id != "_MBcrmGridExportToExcel") {
mnuBar1_LIs[i].style.display = "none";
}
}
}
}
16.禁用所有控件,并隐藏部分控件
DisabledAllControls = function () {
var allFormControls = crmForm.all;
for (var i = 0; i < allFormControls.length; i++) {
var singleControl = allFormControls[i];
if (singleControl.id != null && singleControl.id != "") {
singleControl.Disabled = true;
}
}
}
17.读取脚本文件
function load_script(url) {
var xmlHTTPRequest;
if (window.ActiveXObject) {
xmlHTTPRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHTTPRequest = new XMLHttpRequest();
}
else {
xmlHTTPRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
xmlHTTPRequest.open('GET', url, false);
xmlHTTPRequest.send('');
eval(xmlHTTPRequest.responseText);
var s = xmlHTTPRequest.responseText.split(/\n/);
var r = /^(?:function|var)\s*([a-zA-Z_]+)/i;
for (var i = 0; i < s.length; i++) {
var m = r.exec(s[i]);
if (m != null) {
window[m[1]] = eval(m[1]);
}
}
}
18.获取当前时间
//获取当前时间 格式为2013/8/30
getCurrenTime = function () {
var d, currentTime = "";
d = new Date();
currentTime += d.getYear() + "/";
currentTime += (d.getMonth() + 1) + "/";
currentTime += d.getDate();
return currentTime;
} //获取当前详细时间 格式为2013/8/30 14:55:30
getCurrentTime = function () {
var d, currentTime = "";
d = new Date();
currentTime += d.getYear() + "/";
currentTime += (d.getMonth() + 1) + "/";
currentTime += d.getDate() + " ";
currentTime += d.getHours() + ":";
currentTime += d.getMinutes() + ":";
currentTime += d.getSeconds();
return currentTime;
}
19.获取服务器时间
crmForm.all.new_timespan.DataValue = new Date("2013/01/01");
crmForm.all.字段名.DataValue = new Date("2013-01-01");//会报错
//需要replace(/-/g, "/");替换下
function getServerDate() {
var xmlHTTPRequest;
if (window.ActiveXObject) {
xmlHTTPRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHTTPRequest = new XMLHttpRequest();
}
else {
xmlHTTPRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
xmlHTTPRequest.open('HEAD', '/?_=' + (-new Date), false);
xmlHTTPRequest.send(null);
var serverDate = new Date(xmlHTTPRequest.getResponseHeader('Date'));
return serverDate;
}
GetServerDateTime = function() {
var returnValue = null;
var xml = "<?xml version='1.0' encoding='utf-8'?>" +
"<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'>" +
GenerateAuthenticationHeader() +
"<soap:Body>" +
"<GetServerTime xmlns='http://Www.Frensworkz.Com.Crm40.WebService/' />" +
"</soap:Body>" +
"</soap:Envelope>";
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("POST", "/ISV/ExtensionWebService/GetServerTimeService.asmx", false);
xHReq.setRequestHeader("SOAPAction", "http://Www.Frensworkz.Com.Crm40.WebService/GetServerTime");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
var resultXml = xHReq.responseXML;
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0) {
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
else {
returnValue = new Date(Date.parse(resultXml.text.replace(/-/g, "/")));
}
return returnValue;
}
getAddDate = function (dateValue, dateType, addValue) {
var year = dateValue.getYear();
var month = dateValue.getMonth();
var day = dateValue.getDate();
if (dateType == "year") {
year = parseInt(year) + parseInt(addValue);
}
if (dateType == "month") {
month = parseInt(month) + parseInt(addValue);
}
if (dateType == "day") {
day = parseInt(day) + parseInt(addValue);
}
var newDate = Date.parse(year + "-" + month + "-" + day);
return newDate;
}
20.其他
var new_returnrepairbutton_d = document.getElementById("new_returnrepairbutton_d");//返修按钮
new_returnrepairbutton_d.style.display='none';
//显示返修按钮
new_returnrepairbutton_d.innerHTML = "<button class='ms-crm-Button' id='returnRepairBtn' type='button' onclick='SubmitOperate();'>返修</button>";
//隐藏明细工具栏
var frame = document.getElementById("IFRAME_Details");
frame.attachEvent("onreadystatechange", HideFrameGridBarItems);
//about: blank
var CRM_FORM_TYPE_UPDATE = 2;
//添加IFRAME销售合同明细
if (crmForm.FormType == CRM_FORM_TYPE_UPDATE) {
var IFrameSalesContractDetails = crmForm.all.IFRAME_SalesContractDetails;
SetIFameSrc(IFrameSalesContractDetails, "new_sales_contract_new_sales_contract_detail");
}
//过滤只能选择状态new_status为已审批的(30)和已接受(40)的信息
var new_procurement_planid = crmForm.all.new_procurement_planid;//信息编号
fetchProcurementPlan = function () {
var xmlProcurementPlan = "search=<fetch version=\"1.0\" output-format=\"xml-platform\" mapping=\"logical\" distinct=\"false\">" +
"<entity name=\"new_procurement_plan\">" +
"<filter>" +
"<condition attribute=\"statecode\" operator=\"eq\" value=\"0\" />" +
"<condition attribute=\"new_name\" operator=\"like\" value=\"%%\"/>" +
"<condition attribute=\"new_status\" operator=\"in\">" +
"<value>30</value>" +
"<value>40</value>" +
"</condition>" +
"</filter>" +
"</entity>" +
"</fetch>";
new_procurement_planid.additionalparams = xmlProcurementPlan;
//new_procurement_planid.lookupbrowse = 1;//禁用搜索框
}
var xmlVehicle = "search=<fetch version=\"1.0\" output-format=\"xml-platform\" mapping=\"logical\" distinct=\"false\">" +
"<entity name=\"new_vehicle\">" +
"<filter>" +
"<condition attribute=\"statecode\" operator=\"eq\" value=\"0\" />" +
"<condition attribute=\"new_status\" operator=\"eq\" value=\"10\" />" +
"<condition attribute=\"new_ship_apply\" operator=\"eq\" value=\"null\" />" +
"</filter>" +
"<link-entity name=\"new_procurement_plan\" to=\"new_procurement_planid\" from=\"new_procurement_planid\" alias=\"b\" link-type=\"inner\">" +
"<filter>" +
"<condition attribute=\"statecode\" operator=\"eq\" value=\"0\" />" +
"<condition attribute=\"new_billtype\" operator=\"eq\" value=\"1\" />" +
"</filter>" +
"</link-entity>" +
"</entity>" +
"</fetch>";
var new_da_reason = crmForm.all.new_da_reason;
if (new_da_reason.DataValue == 0) {
if (new_fail_reason.DataValue == null || new_fail_reason.DataValue == "") {
alert('请填写未通过原因!');
event.returnValue = false;
return false;
}
}
// "<condition attribute=\"new_order_status\" operator=\"null\" />" +
//"<condition attribute=\"new_product_fourthid\" operator=\"eq\" value=\"\" />";
if (new_order.DataValue != null) {
xmlSwivelmxzx += "<condition attribute=\"new_order\" operator=\"eq\" value='" + new_order.DataValue[0].id + "'/>";
} else {
xmlSwivelmxzx += "<condition attribute=\"new_order\" operator=\"eq\" value=\"\" />";
}
if (new_order.DataValue != null) {
xmlSwivelmxzx += "<condition attribute=\"new_order\" operator=\"eq\" value='" + new_order.DataValue[0].id + "'/>" ;
} else {
xmlSwivelmxzx += "<condition attribute=\"new_order\" operator=\"null\"/>";
}
/*币种赋初始值*/
var transactioncurrencyid = crmForm.all.transactioncurrencyid; //币种
var transactioncurrencylookup = new Array();
var lookupItem = new Object();
lookupItem.name = "US Dollar";
lookupItem.id = "A4419C79-BB1B-E111-88C2-001CC497CFFC";
lookupItem.typename = "transactioncurrency";
transactioncurrencylookup[0] = lookupItem;
transactioncurrencyid.DataValue = transactioncurrencylookup;
/*币种赋初始值*/
//查询是否重复提交单据
function HaveSameRecord() {
var returnValue = 0;
var FetchXmlStr = "<fetch mapping='logical' aggregate='true'>" +
"<entity name='new_delivery_arrival'>" +
" <attribute name='new_delivery_arrivalid' aggregate='count' alias='HaveRows' />" +
" <filter>" +
" <condition attribute='statecode' operator='eq' value='0' />" +
" <condition attribute='new_vin' operator='eq' value='" + new_vin.DataValue[0].id + "' />" +
" <condition attribute='new_status' operator='ne' value='10' />" +
" </filter>" +
"</entity>" +
"</fetch>";
var results = RetrieveQueryRecords(FetchXmlStr);
returnValue = results[0].selectSingleNode('./HaveRows').nodeTypedValue;
return returnValue;
}
var new_accpect_date = crmForm.all.new_accpect_date; //验收日期
if (new_accpect_date.DataValue > new Date()) {
alert('验收日期不得晚于当天的日期!');
new_accpect_date.DataValue = null;
}
//金额大写转换
function Chinese(num) {
if (!/^\d*(\.\d*)?$/.test(num)) throw (new Error(-1, "Number is wrong!"));
var AA = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
var BB = new Array("", "拾", "佰", "仟", "萬", "億", "圆", "");
var CC = new Array("角", "分", "厘");
var a = ("" + num).replace(/(^0*)/g, "").split("."), k = 0, re = "";
for (var i = a[0].length - 1; i >= 0; i--) {
switch (k) {
case 0: re = BB[7] + re; break;
case 4: if (!new RegExp("0{4}\\d{" + (a[0].length - i - 1) + "}$").test(a[0]))
re = BB[4] + re; break;
case 8: re = BB[5] + re; BB[7] = BB[5]; k = 0; break;
}
if (k % 4 == 2 && a[0].charAt(i) == "0" && a[0].charAt(i + 2) != "0") re = AA[0] + re;
if (a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k % 4] + re; k++;
}
if (a.length > 1) {
re += BB[6];
for (var i = 0; i < a[1].length; i++) {
re += AA[a[1].charAt(i)] + CC[i];
if (i == 2) break;
}
if (a[1].charAt(0) == "0" && a[1].charAt(1) == "0") {
re += "元整";
}
} else {
re += "元整";
}
if (re == "元整") re = "零元整";
return re;
}
//显示字段
DisplayField = function (fieldName) {
var crmform_field_c = document.getElementById(fieldName + "_c");
var crmform_field_d = document.getElementById(fieldName + "_d");
crmform_field_c.style.display = "block";
crmform_field_d.style.display = "block";
}
//隐藏字段 HideField("new_cost_price");
HideField = function (fieldName) {
var crmform_field_c = document.getElementById(fieldName + "_c");
var crmform_field_d = document.getElementById(fieldName + "_d");
crmform_field_c.style.display = "none";
crmform_field_d.style.display = "none";
}
//验证是否有相关字段级控制角色的权限
function HaveControlFieldRole(RoleName) {
var returnValue = 0;
var FetchXmlStr = "<fetch mapping='logical' aggregate='true'>" +
"<entity name='new_controlfield_user'>" +
" <attribute name='new_controlfield_userid' aggregate='count' alias='HaveRows' />" +
" <filter>" +
" <condition attribute='statecode' operator='eq' value='0' />" +
" <condition attribute='new_systemuserid' operator='eq-userid' />" +
" </filter>" +
" <link-entity name='new_controlfield_role' from='new_controlfield_roleid' to='new_controlfield_roleid' link-type='inner' >" +
" <filter>" +
" <condition attribute='new_name' operator='eq' value='" + RoleName + "' />" +
" </filter>" +
" </link-entity>" +
"</entity>" +
"</fetch>";
var results = RetrieveQueryRecords(FetchXmlStr);
returnValue = results[0].selectSingleNode('./HaveRows').nodeTypedValue;
return returnValue;
}
var XGCostPrice = HaveControlFieldRole("物料-标准价格-修改");
if (ZDCostPrice <= 0) {
HideField("new_cost_price");
}
//隐藏销售模块
HideSalesModel = function () {
var section = $(".ms-crm-Form-Section");
if (section != null && section.length > 0) {
for (var i = 0; i < section.length; i++) {
if (section[i].innerText == "销售模块") {
section[i].style.display = 'none';
if (section[i] != null
&& section[i].parentNode != null
&& section[i].parentNode.parentNode != null
&& section[i].parentNode.parentNode.parentNode != null) {
section[i].parentNode.parentNode.parentNode.style.display = 'none';
}
}
}
}
}
21.另外:
查询IFORM的方法
var totalMon = 0;
try {
var pageInfo = new PageInfo(1, 10000); //分页参数
var orderArray = new Array(new OrderExpression("new_exp_undertakerid", ORDER_DIRECTION.Ascending)); //根据参数1排序
var attributesArray = new Array("new_pe_undertaker", "statecode"); //查询条件
var valuesArray = new Array(crmForm.ObjectId, "Active");//条件的值
var columnSetArray = new Array("new_money_undertaker");//要查询的列
var queryByAttribute = new QueryByAttribute("new_exp_undertaker", attributesArray, valuesArray, columnSetArray, pageInfo, orderArray);//参数一为实体名
var crmService = new CrmServiceAccelerator();
var entityCollection = crmService.RetrieveMultipleQueryByAttribute(queryByAttribute);
for (var i = 0; i < entityCollection.Entities.length; i++) {
var entity = entityCollection.Entities[i];
var amountProperty = entity.GetProperty("new_money_undertaker"); //获得值
if (amountProperty != null) {
totalMon += parseFloat(amountProperty.Value);
}
}
}
catch (error) {
}
return totalMon; 设置Iframe
function SetIFameSrc() {
var sArea = "new_move_library_single_new_move_library_";
var sBaseUrl = "areas.aspx?";
var html = sBaseUrl;
html += "oId=" + crmForm.ObjectId;
html += "&oType=" + crmForm.ObjectTypeCode;
html += "&security=" + crmFormSubmit.crmFormSubmitSecurity.value;
html += "&roleOrd=1";
html += "&tabSet=" + sArea;
IFRAME_movestoreroom.src = html;
}
筛选lookup字段
var fetchXmlStr = "search=<fetch version='1.0' output-format='xml-platform' mapping='logical'><entity name='new_purchase_storage'>" +
"<filter><condition attribute='new_status' operator='eq' value='2' /><condition attribute='new_name' operator='like' value='%%'/>" +
"</filter></entity></fetch>"
new_purchase_storage.additionalparams = fetchXmlStr; 根据ID查询单条记录
var crmService=new CrmServiceAccelerator();
var columns=new Array("new_name");
var retEntity=crmService.Retrieve("new_unitofmeasurecode", itemUnit.Value, columns);
var unitProperty=retEntity.GetProperty("new_name");
if (unitProperty!=null)
{
var salesorderLookup=new Array();
var LookupItem=new Object();
LookupItem.name=unitProperty.Value;
LookupItem.id=itemUnit.Value;
LookupItem.typename="new_unitofmeasurecode";
salesorderLookup[0]=LookupItem;
crmForm.all.new_unitofmeasurecodeid.DataValue=salesorderLookup;
} 插入按钮
var td_buttons = document.getElementById("new_button_submit_d"); OnClickSubmit = function() {
var ok = window.confirm("你确定该移库单进行过账?");
if (ok) {
new_status.DataValue = 2;
new_status.ForceSubmit = true;
crmForm.Save();
}
}
//点击"过帐按钮"时触发
OnClickPost = function() {
new_status.DataValue = 3;
new_status.ForceSubmit = true;
crmForm.Save();
}
td_buttons.innerHTML = "<button class='ms-crm-Button' id='btnSubmit' type='button' disabled='disabled'>提交</button> <button class='ms-crm-Button' id='btnPost' type='button' disabled='disabled'>过账</button>";
22.按条件查询多行,自定义实体
按条件查询多行,自定义实体
function getCurrentUserName(){
var xml = "" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<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\">" +
authenticationHeader +
" <soap:Body>" +
" <Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <Request xsi:type=\"RetrieveMultipleRequest\" ReturnDynamicEntities=\"true\">" +
" <Query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
" <q1:EntityName>systemuser</q1:EntityName>" +
" <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
" <q1:Attributes>" +
" <q1:Attribute>fullname</q1:Attribute>" +
" </q1:Attributes>" +
" </q1:ColumnSet>" +
" <q1:Distinct>false</q1:Distinct>" +
" <q1:Criteria>" +
" <q1:FilterOperator>And</q1:FilterOperator>" +
" <q1:Conditions>" +
" <q1:Condition>" +
" <q1:AttributeName>systemuserid</q1:AttributeName>" +
" <q1:Operator>EqualUserId</q1:Operator>" +
" </q1:Condition>" +
" </q1:Conditions>" +
" </q1:Criteria>" +
" </Query>" +
" </Request>" +
" </Execute>" +
" </soap:Body>" +
"</soap:Envelope>" +
""; var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP"); xmlHttpRequest.Open("POST", SERVICE_PATH, false);
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Execute");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml); var resultXml = xmlHttpRequest.responseXML; var doc = xmlHttpRequest.responseXML; return resultXml.selectSingleNode("//Property[@Name='fullname']/Value").nodeTypedValue; } function retrieve(entityName,entityId,attributeName){
var xml = "" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<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\">" +
authenticationHeader+
" <soap:Body>" +
" <Retrieve xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <entityName>"+entityName+"</entityName>" +
" <id>"+entityId+"</id>" +
" <columnSet xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:ColumnSet\">" +
" <q1:Attributes>" +
" <q1:Attribute>"+attributeName+"</q1:Attribute>" +
" </q1:Attributes>" +
" </columnSet>" +
" </Retrieve>" +
" </soap:Body>" +
"</soap:Envelope>" +
""; var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP"); xmlHttpRequest.Open("POST", SERVICE_PATH, false);
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
var resultXml = xmlHttpRequest.responseXML;
return resultXml;
} function getAttribute(entityName,entityId,attribute){
var resultXml= retrieve(entityName,entityId,attribute); //Check for errors.
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0)
{
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
//Display the retrieved value.
else
{
return resultXml.selectSingleNode("//q1:"+attribute).nodeTypedValue;
}
} function retrieveByCondition(entityName,attribute_get,attributeName_con1,attributeValue_con1,attributeName_con2,attributeValue_con2){
var xml = "" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<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\">" +
authenticationHeader +
" <soap:Body>" +
" <Execute xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <Request xsi:type=\"RetrieveMultipleRequest\" ReturnDynamicEntities=\"true\">" +
" <Query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
" <q1:EntityName>"+entityName+"</q1:EntityName>" +
" <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
" <q1:Attributes>" +
" <q1:Attribute>"+attribute_get+"</q1:Attribute>" +
" </q1:Attributes>" +
" </q1:ColumnSet>" +
" <q1:Distinct>false</q1:Distinct>" +
" <q1:Criteria>" +
" <q1:FilterOperator>And</q1:FilterOperator>" +
" <q1:Conditions>" +
" <q1:Condition>" +
" <q1:AttributeName>"+attributeName_con1+"</q1:AttributeName>" +
" <q1:Operator>Equal</q1:Operator>" +
" <q1:Values>" +
" <q1:Value xsi:type=\"xsd:string\">"+attributeValue_con1+"</q1:Value>" +
" </q1:Values>" +
" </q1:Condition>" +
" <q1:Condition>" +
" <q1:AttributeName>"+attributeName_con2+"</q1:AttributeName>" +
" <q1:Operator>Equal</q1:Operator>" +
" <q1:Values>" +
" <q1:Value xsi:type=\"xsd:string\">"+attributeValue_con2+"</q1:Value>" +
" </q1:Values>" +
" </q1:Condition>" +
" </q1:Conditions>" +
" </q1:Criteria>" +
" </Query>" +
" </Request>" +
" </Execute>" +
" </soap:Body>" +
"</soap:Envelope>" +
""; var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP"); xmlHttpRequest.Open("POST", SERVICE_PATH, false);
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Execute");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml); var resultXml = xmlHttpRequest.responseXML;
return resultXml;
}
function getAttributeByCondition(entityName,attribute_get,attributeName_con1,attributeValue_con1,attributeName_con2,attributeValue_con2){
var resultXml= retrieveByCondition(entityName,attribute_get,attributeName_con1,attributeValue_con1,attributeName_con2,attributeValue_con2); //Check for errors.
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0)
{
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
//Display the retrieved value.
else
{
//return resultXml;
return resultXml.selectSingleNode("//Property[@Name='"+attribute_get+"']/Value").nodeTypedValue;
}
} //工作周报
var lookupItem= crmForm.all.new_projectweekreportid.DataValue;
if (lookupItem[0] != null)
{
//alert(lookupItem[0].name);
var currentUserName=getCurrentUserName();
var weekReportId=lookupItem[0].id;
var projectId= getAttribute("new_projectweekreport",weekReportId,"new_project2id");
var memberId=getAttributeByCondition("new_prejectmember","new_prejectmemberid","new_project2id",projectId,"new_name",currentUserName);
if(memberId != null){
//Create an array to set as the DataValue for the lookup control.
var lookupData = new Array();
//Create an Object add to the array.
var lookupItem= new Object();
//Set the id, typename, and name properties to the object.
lookupItem.id = memberId;
lookupItem.name=currentUserName;
lookupItem.typename = 'new_prejectmember'; // Add the object to the array.
lookupData[0] = lookupItem;
// Set the value of the lookup field to the value of the array.
crmForm.all.new_prejectmemberid.DataValue= lookupData; }
}
23.IFAME
放出IFAME
if(crmForm.FormType != 1 && crmForm.FormType != 5)
{
var sArea ="new_new_kaohe_threeshow_new_threeshow_detail";
var Url = "areas.aspx?";
var html =Url;
html += "oId=" + crmForm.ObjectId;
html += "&oType=" + crmForm.ObjectTypeCode;
html += "&security=" + crmFormSubmit.crmFormSubmitSecurity.value;
html += "&tabSet=" + sArea;
crmForm.all.IFRAME_threeshow_detail.src=html;
} 隐藏IFAME工具条上按钮
var frame_m = crmForm.all.IFRAME_threeshow_detail;
frame_m.attachEvent("onload", HideFrameGridBarItems); //隐藏IFARM工具栏按钮
function HideFrameGridBarItems() {
var frame = event.srcElement;
if (frame.readyState != "complete")
return;
var window = frame.contentWindow;
DoHideFrameGridBarItem(window, "_MBlocAddRelatedToNonForm");
DoHideFrameGridBarItem(window, "ISV_New");
DoHideFrameGridBarItem(window, "_MBlocAddRelatedToNonForm");
DoHideFrameGridBarItem(window, "_MBtoplocAssocOneToMany");
DoHideFrameGridBarItem(window, "MoreActions");
DoHideFrameGridBarItem(window, "assign");
DoHideFrameGridBarItem(window, "delete");
}
function DoHideFrameGridBarItem(window, itemName) {
var itemList = window.document.getElementsByTagName("LI");
for (var i = 0; i < itemList.length; i++) {
if (itemList[i].id == null)
continue;
if (itemList[i].id.indexOf(itemName) != -1) {
itemList[i].style.visibility = "hidden";
itemList[i].style.display = "none";
}
}
}
Microsoft Dynamics CRM 4.0 JScript 通用公共方法的更多相关文章
- 一、Microsoft Dynamics CRM 4.0 SDK概述
Chapter 1. Microsoft Dynamics CRM 4.0 SDK Overview(SDK概述) You are probably reading this book because ...
- Microsoft Dynamics CRM 4.0导入组织(Import Organization)时间过长的原因总结
952934 How to move the Microsoft Dynamics CRM 4.0 deployment http://support.microsoft.com/default ...
- 从 Microsoft Dynamics CRM 4.0 server迁移到 Microsoft Dynamics CRM 2013 Server
不能就地升级早于 Microsoft Dynamics CRM Server 2011 的版本号,比方 Microsoft Dynamics CRM 4.0 server.可是,能够在升级过程中使用 ...
- Microsoft Dynamics CRM 9.0 OP 版本 安装 的那些 雷
天天讲安装过程好无聊了,还是搞点有营养的东西来,那么后面来说说刚出来的MSCRM OP 9.0 版本安装的那些雷: 雷1:操作系统要求Windows 2016 Server 这点还好,因为之前安装MS ...
- 打开安装 好的Microsoft Dynamics CRM 4.0 报错误为 Caller does not have enough privilege to set CallerOriginToken to the specified value 的解决办法
If you installed CRM 4.0 on box where you also have SQL and used a domain account as service account ...
- Microsoft Dynamics CRM 4.0 如何添加自定义按钮
一.通过导入导出ISV.Config(ISV配置),具体如下图: 先设置—>打开导出自定义项—>选择ISV配置—>选择导出所选自定义项 点击确定 保存到桌面,解压,用VS打开cust ...
- Dynamics CRM2016 升级老版本报“JavaScript Web 资源包含对 Microsoft Dynamics CRM 4.0 (2007) Web 服务终结点的引用”问题的解决办法
今天在新的服务器上部署了CRM2016 on-premises,并将CRM2015的数据库拷贝过来准备附加后升级,但在升级过程中遇到了如下错误,向导检测到了我的JavaScript Web 资源中包含 ...
- Dynamics CRM2016 升级老版本号报“JavaScript Web 资源包括对 Microsoft Dynamics CRM 4.0 (2007) Web 服务终结点的引用”问题的解决的方法
今天在新的server上部署了CRM2016 on-premises,并将CRM2015的数据库拷贝过来准备附加后升级,但在升级过程中遇到了例如以下错误.向导检測到了我的JavaScript Web ...
- Microsoft Dynamics CRM 9.0 OP 版本 移动端
本次OP 版本做了架调整,新的移动端基本可以满足客户需求,其内容自己可配置选择,满足了一般企业的应用处理. 具体操作如下: 1.登录APP选择应用(我使用手机浏览器) 2.打开默认应用,现在就一个木得 ...
随机推荐
- 未能加载文件或程序集“LinqToExcel”或它的某一个依赖项。试图加载格式不正确的程序。
未能加载文件或程序集“*”或它的某一个依赖项.试图加载格式不正确的程序. 原因:操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题解决方案一:如果是64位机器,IIS—— ...
- es-hadoop saveToEsWithMeta
@Test def testEsRDDWriteWithDynamicMapping() { val doc1 = Map("one" -> null, "two& ...
- IIS6.0发布后对路径“D:\xxx\xxxx\web.config”的访问被拒绝问题的解决方法
原来我本机发布后还是可以直接通过浏览器访问,这几天不知道怎么就不行,终于在网上找到解决方法 IIS发布后访问xxx/xxx/web.config路径被拒绝的问题截图如下: 解决方法: 1.在本地或服务 ...
- C#winform窗体如何通过windowApi的FindWindow函数获取窗体句柄
在同一个程序里,传统方式是通过this来设置当前窗体的最大化.最小化等操作, 那么怎样通过窗体句柄来设置窗体的最大化.最小化呢? 1.界面布局 通过this设置窗体最大化: name:btnWindo ...
- display: table 实现menu等高居中排列
display: table 属性,顾名思义,就是就像表格一样陈列元素,设置这个属性之后,就具有了表格所特有的某些特性,比如居中对齐之类的. 本篇文章要实现的需求也是非常常见的——左侧栏menu菜单居 ...
- learning docker steps(2) ----- docker contailner 初次体验
参考:https://docs.docker-cn.com/get-started/part2/ Dockerfile的内容如下所示: # 将官方 Python 运行时用作父镜像 FROM pytho ...
- c#重写和重载的区别?重写和重载的意义?
重写: 要求方法名.参数合返回值相同: 意义:重写是为了增强类的重用性和复用性,扩展性:重写是对类中方法的扩充,因为继承用的是父类的东西,重写则不仅得到父类的东西,同时也加入了自己的东西. 方法重写的 ...
- constexpr和常量表达式的注意事项
1.常量表达式,是指其值不可改变,且在编译阶段就已经得出计算结果的表达式,例如字面值就是常量表达式. 2.判断是否是常量表达式,要关注数据类型是否是const类型,初始值是否是在编译阶段就得到的. 3 ...
- Thinkphp5 微信公众号token验证不成功的原因
最近要启动微信项目,上个月就开始了解微信的开发,这个月要启动项目,配置微信公众号信息一直失败.为此,我甚至手工写了微信提交过来的记录,如: ×tamp=1510210523& ...
- python查看文件的编码格式
pip install chardet 执行 import chardet f = open('a.doc',r) data = f.read() print chardet.detect(data) ...