文章目录
前言
学习情况总结
学习任务
一、常用框架
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网络请求的数据。
遇到问题及其解决方案
- 一个出站接口添加字段示例
先在代码中找调用的服务,然后去BS中搜服务,看arg参数,找到入参/出参的IO名称,在IO中搜此参数,添加或者修改IO中的变量 - 本地调试MDM接口示例