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