CRM常用功能代码


前言

学习情况总结


学习任务

一、常用框架

BS入口

function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
	if(MethodName == "GetActivity")
	{
		//同步产品评估到资产
		GetActivity(Inputs,Outputs);
		return (CancelOperation);  //InvokeMethod没有这句,客制化方法返回CancelOperation,标准方法返回ContinueOperation
	}
	
	return (ContinueOperation);//InvokeMethod没有这句
}

方法体

/*
 * Function: 同步评估数据
 * @Para : 
 * @Return: 
 * Author:DINGWJ
 * Created: 11/1/2022
 * Last Updated By:
 * Last Updated: 
 * Version: 1.0
 */
function SyncAssess(Inputs,Outputs)
{
	try
	{
		var boAsset = TheApplication().GetBusObject("Asset Management");//资产bo
		var bcAsset = boAsset.GetBusComp("Asset Mgmt - Asset");//资产子bc
		var sAssetId = Inputs.GetProperty("sAssetId");//资产id
		var ProId = "" ;//产品id Product Id
		//写入活动
		with(bcCheckItem)
		{	
			InvokeMethod("SetAdminMode", "TRUE");//开始管理员模式
			ActivateField("Activity Id");//激活父ID
			ActivateField("NGC Case Type");
			ActivateField("NGC Check Requirement");
			ActivateField("NGC Check Result");
			//写数据
			NewRecord(NewAfter);
			var bcPickList = GetPicklistBusComp("NGC Check Requirement");
			with (bcPickList)
			{	ActivateField("Value");
				SetViewMode (AllView);
				ClearToQuery();
				SetSearchExpr("[X Jcyq] = '" +sJcyq+ "' AND [X Anjlx] = '"+sAjlx+ "'");
				ExecuteQuery(ForwardOnly);
				if (FirstRecord())
				{
					Pick();
				}
			}
			SetFieldValue("Activity Id",actId);
			SetFieldValue("NGC Check Result",sCheckAns);
			WriteRecord();					
			
			InvokeMethod("SetAdminMode", "FALSE");//结束管理员模式
		}
}
		
	}
	catch(e)
	{
		throw e.message;
	}
	finally
	{
		bcPickList=null;
		boAsset = null;
	
	}
}
		var psIn = TheApplication().NewPropertySet();
		var psOut = TheApplication().NewPropertySet();
		var bsAttach = TheApplication().GetService("NGC FD Attachment Service");
		var bsPublicJBS = TheApplication().GetService("NGC Public JBS");
		psIn.SetProperty("FileId",FileId);
		bsAttach.InvokeMethod("GetAttachPath",psIn,psOut);

二、常用功能

1.动态Pick

代码如下(示例):

					//写数据
var bcPickList = GetPicklistBusComp("NGC Check Requirement");//字段名称
with (bcPickList)
{	ActivateField("Value");
	SetViewMode (AllView);
	ClearToQuery();
	SetSearchExpr("[X Jcyq] = '" +sJcyq+ "' AND [X Anjlx] = '"+sAjlx+ "'");
	ExecuteQuery(ForwardOnly);
	if (FirstRecord())
	{
		Pick();
	}
}
SetFieldValue("Activity Id",actId);
SetFieldValue("NGC Check Result",sCheckAns);
WriteRecord();	//写数据最后一定要记得保存

2.简单查询

代码如下(示例):

//获取活动ID,以找到对应的活动记录
with(bcAct)
{
	ActivateField("Parent Activity Id");//激活父ID
	ActivateField("Id");//激活ID
	SetViewMode(AllView);
	ClearToQuery();
	SetSearchExpr("[Parent Activity Id] = '" + sId + "'");
	ExecuteQuery(ForwardOnly);
	var sRecord = FirstRecord();
	while(sRecord)
	{
		var actId = GetFieldValue("Id");
		SetFieldValue("Instruction Type",sInsType);
		WriteRecord();
		sRecord = NextRecord();
	}
}
		

3.通过值列表Code获取值;获取系统参数、模板;内置参数

参数解释:LookupValue固定值,STATE_ABBREV是LOV_TYPE值列表名,Code是传入的Code

sProvince = TheApplication().InvokeMethod("LookupValue","STATE_ABBREV",Code);
var sTemplate = TheApplication().GetService("NGC System Service").GettxtTmpl("NGCFDTSTNKJTM"); //取文件模板
var sSystem=TheApplication().GetService("NGC System Service").GetParameters("OPERATING_SYSTEM");//取系统参数 	
var sLogin = TheApplication().GetProfileAttr("Login Name");					//用户编号
var sLastName = TheApplication().GetProfileAttr("Last Name");				//用户名称
			

4.开关管理员模式

InvokeMethod("SetAdminMode", "TRUE");//开始管理员模式
InvokeMethod("SetAdminMode", "FALSE");//结束管理员模式

applet增加搜索条件

function QuoteItemQuery()
{
	try
	{
		//var sQuoteId = this.BusObject().GetBusComp("Order Entry - Orders").GetFieldValue("NGC Active Flag");
		var preSearchExpr = this.BusComp().GetSearchExpr();
		var searchExpr = "";
		if(preSearchExpr != "")
			searchExpr = preSearchExpr + " AND (([NGC Active Flag] IS NOT NULL AND [NGC Active Flag] = 'Y') OR [NGC Active Flag] IS NULL)";
		else
			searchExpr = "([NGC Active Flag] IS NOT NULL AND [NGC Active Flag] = 'Y') OR [NGC Active Flag] IS NULL";
		this.BusComp().SetNamedSearch("searchExpr",searchExpr);
	}
	catch(e)
	{
		throw e.message;
	}
	finally
	{
	}
}

发送post请求

//*==========================================================
//*创建时间:20181105
//*创 建 人:LIULD
//*入参说明:
//*方法简介:APP拜访消息推送接口
//*逻辑说明:
//*===========================================================
function Fn_PushVisitMessage(Inputs, Outputs) {
    try {
        var bsApp = TheApplication().GetService("NGC App Outbound Service");
        var boWorkLog = TheApplication().GetBusObject("NGC Work Log BO");
        var bcWorkLog = boWorkLog.GetBusComp("NGC Work Log");
        var dNowDate = new Date();
        var dNextDate = new Date();
        dNextDate.setDate(dNextDate.getDate() + 5); //5天后 
        var sNow = dNowDate.getMonth() + 1 + "/" + dNowDate.getDate() + "/" + dNowDate.getFullYear(); //当前日期
        var sNext = dNextDate.getMonth() + 1 + "/" + dNextDate.getDate() + "/" + dNowDate.getFullYear(); //5天后的日期
		var sLogId="";
        with (bcWorkLog) {
            ActivateField("Account");
            ActivateField("Plan Begin Date");
            ActivateField("Creator Login Name");
            ClearToQuery();
            SetViewMode(AllView);
            SetSearchExpr("[Plan Begin Date]>='" + sNow + "' AND [Plan Begin Date]<='" + sNext + "'");
            ExecuteQuery(ForwardOnly);
            var iRecord = FirstRecord();
            if(!iRecord){
            	Outputs.SetProperty("Messgae_Code","OK");
           		Outputs.SetProperty("Message","最近5天无拜访计划");
            }
            while (iRecord) {
                var sAccount = GetFieldValue("Account");
                var sPlanBeginDate=GetFieldValue("Plan Begin Date");
                var sLogin = GetFieldValue("Creator Login Name");
				var dPlanBeginDate=new Date(sPlanBeginDate);
				var dToday=new Date(sNow);
                var sTime=dPlanBeginDate.getTime()-dToday.getTime();
				var sHmDay=Math.floor(sTime/(24*3600*1000))
				var splid = GetFieldValue("Id");

                var psIn = TheApplication().NewPropertySet();
                var psOut = TheApplication().NewPropertySet();
                var url = TheApplication().GetService("NGC System Service").GetParameters("APP_CLIENT_URL") + "i/api/userMessage/sendPushMsg?access_token=" + GetAppToken();
                var requestMethod = "POST";
                var contentType = "application/json";
                var conversionMode = "StringToEncoding";
                var target = "UTF-8";
                var sRequest = "{\r\n" +
                    "		\"templateCode\":\"visit\",\r\n" +
                    "		\"accountNumber\":\""+sLogin+"\",\r\n" +
                    "		\"params\":{\r\n" +
                    "				\"HmDay\":\""+sHmDay+"\",\r\n" +
                    "				\"customName\":\""+sAccount+"\"\r\n" +
                    "				},\r\n" +
                    "		\"extras\":{\r\n" +
                    "				}\r\n" +
                    "}";
                
                psIn.SetProperty("url", url);
                psIn.SetProperty("requestMethod", requestMethod);
                psIn.SetProperty("contentType", contentType);
                psIn.SetProperty("conversionMode", conversionMode);
                psIn.SetProperty("target", target);
                psIn.SetProperty("request", sRequest);
				sLogId = TheApplication().GetService("NGC System Service").Log("APP拜访消息推送接口", "", "Running", "", "", "");
                bsApp.InvokeMethod("Fn_AppOutBound", psIn, psOut);
                if (psOut.GetProperty("Status") == "S") {
                    TheApplication().GetService("NGC System Service").Log("APP拜访消息推送接口", sLogId, "Success", sRequest, psOut.GetProperty("Response"), "");
                    Outputs.SetProperty("Message", "");
                    Outputs.SetProperty("Message_code", "OK");
                } else {
                    throw "拜访消息推送失败,请查看日志;";
                }

				var psIn = TheApplication().NewPropertySet();
				var psOut = TheApplication().NewPropertySet();

				psIn.SetProperty("code",TheApplication().GetService("NGC System Service").GetParameters("OA_SEND_MESSAGE_CODE"));

				var srcode ="",srid = "",srordercode="";
				GetSrMsg(sId,srcode,srid,srordercode);
				var linkurl = TheApplication().GetService("NGC System Service").GetParameters("OA_PA_FS_SMURL");
				var context =sNow+"\r\n 您"+sHmDay+"后,对"+sAccount+"有拜访计划,请跟进。";
				linkurl=linkurl+"&billid="+splid+"";
				psIn.SetProperty("linkUrl",linkurl);
				psIn.SetProperty("linkMobileUrl",linkurl);
				psIn.SetProperty("context",context);
				psIn.SetProperty("loginIdList",sLogin);
				psIn.SetProperty("creater","");
				psIn.SetProperty("title","拜访提醒");
				psIn.SetProperty("msgtype",TheApplication().GetService("NGC System Service").GetParameters("OA_SEND_MESSAGE_MSG"));

				bsOASendMsg.InvokeMethod("SendMessageToOA",psIn,psOut);
				

                iRecord = NextRecord();
            }
        }

    } catch (e) {
        TheApplication().GetService("NGC System Service").Log("APP拜访消息推送接口", sLogId, "Error", sRequest, psOut.GetProperty("Response"), "");
        Outputs.SetProperty("Message", e.message);
        Outputs.SetProperty("Message_Code", "Error");
    } finally {
        sLogId = null;
        psOut = null;
        psIn = null;
        bsApp = null;
    }
}

获取值列表Code

function LookupName(sType , sValue , sLang)
{
	var sName = "";
	
	try
	{
		var boLov = TheApplication().GetBusObject("List Of Values");
		var bcLov = boLov.GetBusComp("List Of Values");

		with(bcLov)
		{
			ActivateField("Name");
			ClearToQuery();
			SetViewMode(AllView);
			SetSearchExpr("[Type] = '" + sType + "' AND [Language] = '" + sLang + "' AND [Value] = '" + sValue + "'");
			ExecuteQuery(ForwardOnly);
			if(FirstRecord())
			{
				sName = GetFieldValue("Name");
			}
		}

	}
	catch(e)
	{
		sName = "";
	}
	finally
	{
		
	}

	return sName;

}

邮件发送

function ToMail(Inputs,&Outputs)
{
		//生产计划邮件推送
	try
	{
		var sEmBO = TheApplication().GetBusObject("Employee");
		var sEmBC = sEmBO.GetBusComp("Employee");//员工BC
		var boNGCSRBO = TheApplication().GetBusObject("NGC Product Plan BO"); //生产计划
		var bcNGCSRBC = boNGCSRBO.GetBusComp("NGC Product Plans");																			
		var sEmailAddr="";						//收件人邮箱	
		var sLogin="";							//登录名称
		var sLoginLastName=TheApplication().GetProfileAttr("Last Name");	//当前登录人姓名
		var dDate=new Date();
		var sTime= Clib.rsprintf("%04d/%02d/%02d %02d:%02d:%02d",dDate.getFullYear(),dDate.getMonth()+1,dDate.getDate() ,dDate.getHours(),dDate.getMinutes(), dDate.getSeconds());
		var arry1 = new Array();
		var arr = "";

		
		//var content = TheApplication().GetService("NGC System Service").GetEmailTmpl("NGC_PRODUCTPLANS_EMAIL"); //获取短信模板
		var content = "邮件测试";
		var subject="生产经营计划提醒";	  //主题
	//	var sendTo=sEmailAddr;				//收件人
	//	var copyTo="xu.ning@NGCtransmission.com;ji.zhigang@NGCtransmission.com;duanmu.yuerong@NGCtransmission.com;xian.jinshan@NGCtransmission.com;xu.yue@NGCtransmission.com;wang.yishan@NGCtransmission.com;xu.daolong@NGCtransmission.com";//抄送
	    var sendTo = "ding.weijie@NGCtransmission.com";
		var copyTo = "";
		var name="NGCCRM";					//发件人昵称
		var psIn=TheApplication().NewPropertySet();
		var psOut=TheApplication().NewPropertySet();
		psIn.SetProperty("subject",subject);
		psIn.SetProperty("content",content);
		psIn.SetProperty("sendTo",sendTo);
		psIn.SetProperty("copyTo",copyTo);
		psIn.SetProperty("name",name);
		var bsEmail=TheApplication().GetService("NGC Send Email Service");
		bsEmail.InvokeMethod("sendEmail",psIn,psOut);
		if(psOut.GetProperty("code")!="ok")
		{
			throw psOut.GetProperty("message");
		}
		else
		{
			Outputs.SetProperty("Result",TheApplication().LookupMessage("NGC Message","Successful Mail Delivery"));
		}
	}
	catch(e)
	{
		throw e.message;
	}
	finally
	{
		bsEmail=null;
		psIn=null;
		psOut=null;
		bcNGCSRBC=null;
		boNGCSRBO=null;
		sEmBC=null;
		sEmBO=null;
	}
}

获取mvg多值字段

function GetMvgFieldValue(sId)
{
	try
	{
		var boAccount = TheApplication().GetBusObject("Account");
		var bcAccount = boAccount.GetBusComp("Account");
		var sName = "";
		with(bcAccount)
		{
			SetViewMode(AllView);
			ClearToQuery();
			SetSearchExpr("[Id] = '"+sId+"'");
			ExecuteQuery(ForwardOnly);
			if(FirstRecord())
			{
				var bcMvg = GetMVGBusComp("Last Name");
				with(bcMvg)
				{
					ActivateField("Active Full Name"); 
					SetViewMode(AllView);
					ClearToQuery();
					SetSearchExpr("[Id] is not null AND [SSA Primary Field] = 'Y'");
					ExecuteQuery(ForwardOnly);	
					var sRecord = FirstRecord();
					while(sRecord)
					{	
						sName += GetFieldValue("Active Last Name")+ ",";
						sRecord = NextRecord();
					}
				}
				bcMvg = null;
			}
		}
		sName = sName.substring(0,sName.length -1);
	}
	catch(e)
	{
		throw e.message;
	}
	finally
	{
		bcAccount = null;
		boAccount = null;
	}
	return sName;
}

该处使用的url网络请求的数据。

遇到问题及其解决方案

  1. 一个出站接口添加字段示例
    先在代码中找调用的服务,然后去BS中搜服务,看arg参数,找到入参/出参的IO名称,在IO中搜此参数,添加或者修改IO中的变量
  2. 本地调试MDM接口示例

心得总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值