金蝶云苍穹插件开发
选择插件基类
页面类型 | 应用场景 | 插件基类 |
---|---|---|
动态表单 | PC端界面 | AbstractFormPlugin |
移动端界面 | AbstractMobFormPlugin | |
单据/基础资料 | 单据界面 | AbstractBillPlugIn |
标准单据列表 | AbstractListPlugin | |
左树右表单据列表 | AbstractTreeListPlugin | |
树型基础资料列表 | StandardTreeListPlugin | |
移动端单据列表 | AbstractMobListPlugin | |
单据操作 | AbstractOperationServicePlugIn | |
单据转换 | AbstractConvertPlugIn | |
报表插件 | 报表界面插件 | AbstractReportFormPlugin |
报表查询插件 | AbstractReportListDataPlugin | |
工作流 | 工作流参与人插件 | IWorkflowPlugin |
工作流服务插件 | IWorkflowPlugin | |
工作流条件插件 | IWorkflowPlugin | |
开放接口 | 自定义开放接口插件 | IBillWebApiPlugin |
打印插件 | 打印数据处理插件 | AbstractPrintServicePlugin |
引入插件 | 引入数据加工 | IImportPlugin |
插件事件
分类 | 序号 | 事件 | 触发时机 |
---|---|---|---|
界面显示前 | 1 | setPluginName | 显示界面前,准备构建界面显示参数之前,创建插件后,触 发此事件 |
2 | preOpenForm | 显示界面前,准备构建界面显示参数之前,触发此事件 | |
3 | loadCustomControlMetas | 显示界面前,构建界面显示参数时,触发此事件 界面初始化 | |
4 | setView | 表单视图模型初始化,创建插件时,调用此方法,向插件传 入表单视图模型IFormView实例; | |
5 | initialize | 表单视图模型初始化,创建插件后,触发此事件 | |
6 | registerListener | 用户与界面上的控件交互时,触发此事件 | |
7 | getEntityType | 表单基于实体模型,创建数据包之前,触发此事件 | |
8 | createNewData | 界面初始化或刷新,开始新建数据包时触发此事件 | |
9 | afterCreateNewData | 界面初始化或刷新,新建数据包完毕后,触发此事件 | |
10 | beforeBindData | 界面数据包构建完毕,开始生成指令,刷新前端字段值、控 件状态之前,触发此事件 | |
11 | afterBindData | 界面数据包构建完毕,生成指令,刷新前端字段值、控件状 态之后,触发此事件 | |
用户交互 | 12 | beforeItemClick | 用户点击界面菜单按钮时,执行绑定的操作前,触发此事件 |
13 | itemClick | 用户点击界面菜单按钮时触发此事件 | |
14 | beforeDoOperation | 用户点击按钮、菜单,执行绑定的操作前,触发此事件 | |
15 | afterDoOperation | 用户点击按钮、菜单,执行完绑定的操作后,不论成功与否, 均会触发此事件 | |
16 | confirmCallBack | 前端交互提示确认后,通知插件进行后续处理 | |
17 | closedCallBack | 子界面关闭时,如果回调函数由父界面处理,则会触发父界 面的此事 | |
18 | beforeClick | 用户点击按钮,标签,执行绑定的操作前,触发此事件 | |
19 | click | 用户点击界面按钮或者标签时触发此事件 | |
18 | flexBeforeClosed | 弹性域维护界面关闭时,触发父界面此事件 | |
19 | onGetControl | 在有代码尝试获取控件的编程模型时,触发此事件 | |
20 | customEvent | 触发自定义控件的定制事件 | |
21 | TimerElapsed | 定时触发此事件 | |
22 | afterDeleteRow | 删除单据体行后触发此事件 | |
23 | afterAddRow | 新增单据体行后触发此事件 | |
24 | propertyChanged | 字段值更新后触发此事件 | |
25 | beforeF7Select | F7字段打开时触发 界面关闭 | |
26 | beforeClosed | 界面关闭之前触发此事件 | |
27 | destory | 界面关闭后,释放资源时,触发此事件 | |
28 | pageRelease | 界面关闭后,释放资源时,触发此事件 |
表单插件及其子类
表单插件-AbstractFormPlugin常用事件
preOpenForm
afterCreateNewData
afterBindData
registerListener
beforeClick
click
beforeItemClick
ItemClick
beforeDoOperation
afterDoOperation
confirmCallBack
closedCallBack
propertyChanged
preOpenForm
触发时机:系统收到showForm指令,显示界面前,准备构建界面显示参数时,触发此事件。 此事件触发时,新界面还没有显示出来,可以在此事件,取消界面的显示,或者修改显示参数。
public class PreOpenForm extends AbstractFormPlugin {
@Override
public void preOpenForm(PreOpenFormEventArgs e) {
super.preOpenForm(e);
// TODO : 可以在此取消界面显示
}
}
afterCreateNewData
触发时机:界面初始化或刷新,新建表单数据包成功,并给字段填写了默认值之后,触发此事件;
插件可以在此事件,重设字段的默认值。部分字段的默认值难以通过设计器配置出来,如需要计算的值、根据系统 参数选项决定的值,必须写插件实现
public class AfterCreateNewData extends AbstractFormPlugin {
@Override
public void afterCreateNewData(EventObject e) {
// TODO 在此添加业务逻辑
}
}
afterBindData
触发时机:界面数据包构建完毕,生成指令,刷新前端字段值、控件状态之后,触发此事件; 插件可以在此事件,根据各字段值数据,重新设置控件、字段的可用、可见性等。 不要在此事件,修改字段值
public class AfterBindData extends AbstractFormPlugin {
@Override
public void afterBindData(EventObject e) {
super.afterBindData(e);
// TODO 在此添加业务逻辑
}
}
registerListener
触发时机:用户与界面上的控件进行交互时,即会触发此事件。建议在此事件,侦听各个控件的插件事件
public class RegisterListener extends AbstractFormPlugin {
@Override
public void registerListener(EventObject e) {
// TODO 侦听控件的插件事件
}
}
beforeClick
触发时机:用户点击按钮或者标签等控件时,触发此事件;插件可以在此事件,取消后续点击处理,不响应按钮绑定的操作;
public class BeforeClick extends AbstractFormPlugin {
@Override
public void beforeClick(BeforeClickEvent evt) {
super.beforeClick(evt);
// TODO Auto-generated method stub
}
}
click
触发时机:用户点击按钮时,触发此事件;插件可以在此响应点击事件, 实现定制的业务功能。 特别说明: 如果在beforeClick事件中,取消了后续操作,则不会触发本事件;
public class Click extends AbstractFormPlugin
{
@Override
public void click(EventObject evt){}
}
beforeItemClick
触发时机:用户点击菜单按钮后,在执行按钮绑定的操作前,触发此事件; 插件可以在此事件,取消菜单绑定的操作;
public class BeforeItemClick extends AbstractFormPlugin
{
private final static String KEY_MAINBAR = "tbar_main";
private final static String KEY_BARITEM_NEW = "baritem_new";
@Override
public void registerListener(EventObject e)
{
super.registerListener(e);
// 侦听主菜单按钮点击事件
this.addItemClickListeners(KEY_MAINBAR);
}
@Override
public void beforeItemClick(BeforeItemClickEvent evt) {
if (StringUtils.equals(KEY_BARITEM_NEW, evt.getItemKey()))
{
// TODO 在此添加业务逻辑
}
}
ItemClick
触发时机:用户点击菜单项时,触发此事件;插件可以在此响应自定义菜单项的点击处理。
public class ItemClick extends AbstractFormPlugin
{
//工具栏的标识
private final static String KEY_MAINBAR = "tbar_main";
//按钮的标识
private final static String KEY_BARITEM_NEW = "baritem_new";
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
// 侦听主菜单按钮点击事件
this.addItemClickListeners(KEY_MAINBAR);
}
@Override
public void itemClick(ItemClickEvent evt) {
super.itemClick(evt);
if (StringUtils.equals(KEY_BARITEM_NEW, evt.getItemKey()))
{
// TODO 在此添加业务逻辑
}
}
}
beforeDoOperation
触发时机:用户点击按钮、菜单,执行绑定的操作逻辑前,触发此事件; 插件可以在此事件:
-
提示确认消息;
-
校验数据,取消操作的执行;
-
传递给自定义操作参数给操作服务、操作插件;
public class BeforeDoOperation extends AbstractFormPlugin
{
final static String KEY_OPKEY = "myoperation";
@Override
public void beforeDoOperation(BeforeDoOperationEventArgs args)
{
super.beforeDoOperation(args);
FormOperate formOperate = (FormOperate) args.getSource();
if(StringUtils.equals(KEY_OPKEY, formOperate.getOperateKey()))
{
// TODO 在此添加业务逻辑
}
}
}
afterDoOperation
触发时机:用户点击按钮、菜单,执行完绑定的操作后,不论成功与否,均会触发此事件;插件可以在此事件,根 据操作结果控制界面
public class AfterDoOperation extends AbstractFormPlugin
{
final static String KEY_OPKEY = "myoperation";
@Override
public void afterDoOperation(AfterDoOperationEventArgs args)
{
super.afterDoOperation(args);
FormOperate formOperate = (FormOperate) args.getSource();
if(StringUtils.equals(KEY_OPKEY, formOperate.getOperateKey()) && args.getOperationResult() != null && args.getOperationResult().isSuccess())
{
// TODO 在此添加业务逻辑
}
}
}
confirmCallBack
触发时机:用户确认了交互提示信息后,触发此事件,通知插件进行后续处理;插件可以在此事件,了解用户的态 度,决定后续业务逻辑。
public class ConfirmCallBack extends AbstractFormPlugin
{
private final static String CALLBACKID_MYMESSAGE = "mymessage";
@Override
public void click(EventObject evt)
{
ConfirmCallBackListener confirmCallBacks = new ConfirmCallBackListener("contentChange", this);
String confirmTip = sConfirmMsg + "";
this.getView().showConfirm(confirmTip, MessageBoxOptions.OKCancel, ConfirmTypes.Default, confirmCallBacks);
}
public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent)
{
super.confirmCallBack(messageBoxClosedEvent);
if(StringUtils.equals(CALLBACKID_MYMESSAGE, messageBoxClosedEvent.getCallBackId()) && messageBoxClosedEvent.getResult() == MessageBoxResult.Yes)
{
// TODO 在此添加业务逻辑
}
}
}
closedCallBack
触发时机:子界面关闭时,触发父界面的closedCallBack事件;父界面的插件,可以在此事件,接收子界面返回的 数据。
public class ClosedCallBack extends AbstractFormPlugin
{
private final static String CALLBACKID_MYCALLBACK = "mycallback";
@Override
public void click(EventObject evt)
{
FormShowParameter showParameter = new FormShowParameter();
showParameter.setFormId(GetValByConditionEdit.FormId_ValByCondition);
showParameter.setCloseCallBack(new CloseCallBack(plugin, CALLBACKID_MYCALLBACK));
showParameter.getOpenStyle().setShowType(ShowType.Modal);
this.getView().showForm(showParameter);
}
@Override
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent)
{
super.closedCallBack(closedCallBackEvent);
if(StringUtils.equals(closedCallBackEvent.getActionId(), CALLBACKID_MYCALLBACK) && closedCallBackEvent.getReturnData() != null)
{
// TODO 在此添加业务逻辑
}
}
}
propertyChanged
触发时机:表单模型某个字段值改变的时候就会触发此事件。 注意:单据头文本字段,日期字段等基础字段需勾选即时触发值更新,基础资料字段,单据体字段不需要。
public class DemoBillPlugin extends AbstractBillPlugIn
{
@Override
public void propertyChanged(PropertyChangedArgs e)
{
//获取到改变的属性名
String pname = e.getProperty().getName();
ChangeData[] changeset = e.getChangeSet();
Object oldvalue = (Date) changeset[0].getOldValue();
Object newvalue = (Date) changeset[0].getNewValue();
//如果是单据体字段还可以获取到行索引
int index = changeset[0].getRowIndex();
super.propertyChanged(e);
}
}
单据插件-AbstractBillPlugIn
继承自表单插件,拥有所有表单插件事件,默认注册了工具栏的”tbmain”的 点击事件,新增加了以下事件:
afterLoadData
事件触发时机:单据界面加载完毕,会根据传入的单据主键值,到数据库加载单据数据包。
本事件在单据数据包加载完毕后触发。
插件可以在此事件,根据单据的数据决定业务逻辑的执行。
afterLoadData事件与afterCreateNewData的差别: 这两个事件的触发时机一样,都是在界面数据包准备完毕之后触发,但数据包来源不同: afterCreateNewData事件的数据包,是全新创建的数据包,适合在此事件调整默认值; afterLoadData事件的数据包,来自于数据库,不建议在此事件修改字段值; 这两个事件,在单据界面加载、刷新过程中,只会触发其中一个(互斥): 单据界面以新增模式打开,不需要到数据库加载单据,触发afterCreateNewData事件; 单据界面以修改、查看模式打开,需到数据库加载单据,触发afterLoadData事件;
@Override
public void afterLoadData(EventObject e)
{
super.afterLoadData(e);
}
列表插件-AbstractListPlugin
继承自表单插件,并新增了IListPlugin、ListRowClickListener等接口
分类 | 事件 | 触发时机 |
---|---|---|
列表初始化 | createTreeListView | 不触发,仅树形列表界面会触发此事件; |
filterContainerInit | 初始化过滤控件时,触发此事件把配置的过滤字段传递给插件 | |
beforeCreateListColumns | 在构建列表列之前触发,传入当前待创建的列分组、列 | |
beforeCreateListDataProvider | 列表初始化,构建列表取数器前触发此事件 | |
setFilter | 列表在生成了过滤条件之后,准备查询数据之前,触发此事件 | |
用户交互 | filterContainerSearchClick | 用户修改了快捷过滤、常用过滤条件,或者点击过滤面板确定按钮,触发此事件 |
beforeItemClick | 用户点击列表主菜单按钮时,触发此事件 | |
itemClick | 用户点击列表主菜单按钮时,触发此事件 | |
billListHyperLinkClick | 点击超链接单元格时,触发此事件 | |
beforeShowBill | 执行新建、修改、查看等操作,打开单据维护界面之前,触发此事件 | |
billClosedCallBack | 列表打开的单据维护界面关闭后返回时,触发此事件 | |
listRowClick | 列表行点击时,触发此事件 | |
listRowDoubleClick | 列表行双击时,触发此事件 |
filterContainerInit
本事件,有两次触发时机: 1. 列表界面,初始化过滤面板时,触发此事件; 2. 用户在过滤面板点击搜索时,也会重新初始化过滤面板,触发此事件; 插件可以在此事件,获取到列表过滤面板中,快捷过滤、常用过滤、方案过滤所包含的过 滤字段信息,并对这些过滤字段进行调整; 特别注意: 本事件会多次触发,如果逻辑只能在界面初始化时执行一次,需要增加标志变量,进行区分;
@Override
public void filterContainerInit(FilterContainerInitArgs e)
{
List < FilterColumn > filters = e.getCommonFilterColumns();
CommonFilterColumn comfilter = (CommonFilterColumn) filters.get(1);
comfilter.setDefaultValue("A");
//super.filterContainerInit(e);
}
beforeCreateListColumns
事件触发时机 刷新单据列表,构建单据列表显示的列时,触发此事件,传入在设计器中已配置的列集合; 插件可以在此事件中,根据页面参数、过滤条件,动态添加、删除单据列表的显示列;
@Override
public void beforeCreateListColumns(BeforeCreateListColumnsArgs e)
{
List < IListColumn > columns = e.getListColumns();
ListColumn colUser = this.createListColumn("creator.name", "创建人");
columns.add(colUser);
super.beforeCreateListColumns(e);
}
beforeCreateListDataProvider
事件触发时机 构建列表取数器之前,触发此事件; 插件可以在此事件,构建自定义的列表取数器,实现自主取数;
@Override
public void beforeCreateListDataProvider(BeforeCreateListDataProviderArgs e)
{
e.setListDataProvider(new ListDataProvider()
{
@Override
public DynamicObjectCollection getData(int arg0, int arg1)
{
return super.getData(arg0, arg1);
}
});
}
setFilter
事件触发时机 单据列表控件,在构建好取数条件,准备重新取数之前,触发此事件; 插件可以调整条件内容、追加条件,从而影响列表取数;
@Override
public void setFilter(SetFilterEvent e)
{
QFilter cfilter = new QFilter("billstatus", QCP.equals, "B");
e.addCustomQFilter(cfilter);
super.setFilter(e);
}
filterContainerSearchClick
用户在过滤条件面版上改变过滤条件,触发此事件: 插件可以在此事件,调整用户在过滤面板上的条件配置,后续系统会根据调整后的条件配 置,生成取数条件;
@Override
public void filterContainerSearchClick(FilterContainerSearchClickArgs e)
{
//获取全部过滤条件,按快捷过滤、常用过滤,方案过滤分开
Map<String, List<Map<String, List<Object>>>> filterValues = e.getFilterValues();
System.out.println(filterValues);
}
billListHyperLinkClick
事件触发时机 单据列表上显示为超链接的单元格,用户点击时,系统默认会打开单据维护界面。 在打开单据界面之前,触发此事件; 插件可以在此事件,判断点击的列,取消单据界面打开,自行显示其它界面
@Override
public void billListHyperLinkClick(HyperLinkClickArgs args)
{
String fieldName = args.getFieldName();
if("createtime".equals(fieldName))
{
args.setCancel(true);
this.getView().showMessage("您点击了创建时间");
}
super.billListHyperLinkClick(args);
}
beforeShowBill
事件触发时机 在执行操作时,打开子界面之前,触发此事件; 插件可以修改子界面显示参数,或取消显示;
@Override
public void beforeShowBill(BeforeShowBillFormEvent e)
{
//传值到打开的单据界面
e.getParameter().setCustomParam("test", "test");
//动态添加插件
e.getParameter().addCustPlugin("kd.bos.demo.formplugin.DemoBillPlugin");
//终止打开
e.setCancel(true);
super.beforeShowBill(e);
}
listRowClick
用户点击单据列表行时,触发此事件。 在移动端的单据列表上,用户点击行时,系统会自动打开单据的详情界面。插件可以在此 事件,取消上述系统内置的逻辑;
@Override
public void listRowClick(ListRowClickEvent evt)
{
this.getView().showMessage("点击列表");
super.listRowClick(evt);
}
@Override
public void registerListener(EventObject e)
{
BillList list = this.getControl(this.BILLLISTID);
list.addListRowClickListener(this);
super.registerListener(e);
}
操作插件-AbstractOperationServicePlugIn
单据操作插件接口为IOperationServicePlugIn、IOperationService;
系统预置了一个操作插件基类 AbstractOperationServicePlugIn,实现了上述操作插件接口;
自定义的操作插件,扩展预置的操作插件基类 AbstractOperationServicePlugIn 即可。
插件基类 AbstractOperationServicePlugIn 内置了如下属性方法和本地变量,供插件访问,用以获取操 作执行上下文
方法 属性 | 说明 |
---|---|
billEntityType | 单据主实体 |
operateMeta | 操作配置,据此获知当前执行的操作信息 |
operationResult | 操作结果,可以向其中添加操作提示信息 |
getOption() | 自定义操作参数选项,可以包含各种自定义操作参数 |
onPreparePropertys | 在单据列表上执行单据操作,系统需要先根据传入的单据内码,加载单据 数据包;在加载单据数据包之前,触发此事件;插件需要在此事件,添加 需要用到的字段; |
onAddValidators | 系统预置的操作校验器加载完毕,执行校验之前,触发此事件; |
beforeExecuteOperationTransaction | 操作校验通过之后,开启事务之前,触发此事件; |
beginOperationTransaction | 操作校验通过,开启了事务,准备把数据提交到数据库之前触发此事件; |
endOperationTransaction | 数据已经提交到数据库之后,事务未提交之前,触发此事件; |
rollbackOperation | 操作事务提交失败,事务回滚之后触发此事件; |
afterExecuteOperationTransaction | 操作执行完毕,事务提交之后,触发此事件; |
onPreparePropertys
操作执行,加载单据数据包之前,触发此事件;
在单据列表上执行单据操作,传入的是单据内码; 操作引擎需要先根据传入的单据内码,加载单据数据包,其中只包含操作要用到的字段, 然后再执行操作;在加载单据数据包之前,触发此事件;
在单据维护界面,执行单据操作时,传入的是单据数据包,不需要操作引擎自行加载单据, 不会触发此事件;
插件需要在此事件,添加需要用到的字段;否则,操作引擎加载出的单据数据包,可能没 有插件要用到的字段值,从而引发中断
@Override
public void onPreparePropertys(PreparePropertysEventArgs e)
{
// 要求备注字段
e.getFieldKeys().add(“note”);
}
onAddValidators
构建好操作校验器之后,执行操作校验之前,触发此事件;
插件可以在此事件,增加自定义操作校验器,或者去掉内置的校验器。
@Override
public void onAddValidators(AddValidatorsEventArgs e)
{
e.addValidator(new AbstractValidator()
{
@Override
public void validate(){
for(ExtendedDataEntity obj: this.getDataEntities())
{
//this.addErrorMessage(obj, "校验数据不通过");
}
}
});
super.onAddValidators(e);
}
如何开发插件-运用插件上下文
插件事件参数中,封装了事件源,数 据包等对象,可直接使用。例如: propertyChanged事件的event中 包含有更新前的值和更新后的值。
表单插件实例中,可以获取数据模型和界面模型
IFormView提供的常用接口
方法 | 说明 |
---|---|
getPageId * | 获取界面实例的唯一标识pageId |
getView * | 获取其他界面的视图模型 |
getEntityId | 获取表单的主实体编码,如bd_material |
getModel | 获取表单数据模型 |
getParentView * | 获取父表单视图模型 |
getMainView | 获取主界面视图模型 |
updateView * | 把数据模型中的数据,发送到前端界面 |
getControl * | 获取控件编程模型 |
getRootControl * | 获取表单编程模型 |
getService * | 获取服务实例 |
invokeOperation | 执行操作 |
activate | 激活表单 |
close | 关闭表单 |
setEnable | 设置控件可用性 |
setVisible | 设置控件可见性 |
showForm * | 传入表单显示参数,打开一个新的表单,作为本表单的子表单 |
getFormShowParameter | 获取表单显示参数 |
cacheFormShowParameter | 修改表单显示参数对象属性值之后,调用本方法把参数更新到缓存 |
returnDataToParent | 设置返回到父表单的返回值 |
openUrl | 打开一个新窗口链接到指定的URL |
showUpload | 显示一个文件上传界面;文件上传完毕,触发插件afterUpload事件; |
showMessage | 单据内悬浮消息框,默认没有按钮,自动消失 |
showErrMessage | 显示错误消息 |
showOperationResult | 显示操作结果 |
showConfirm | 显示确认消息;用户确认完毕,会触发confirmCallBack事件; |
showSuccessNotification | 单据内成功悬浮消息框,默认2秒自动消失;消息内容,不能超过50字 |
showErrorNotification | 单据内失败悬浮消息框,需要手动关闭 |
showTipNotification | 单据内提示类别悬浮消息框,提示类会显示按钮,需要手动关闭 |
showRobotMessage | 发送消息给机器人助手 |
closeRobotMessage | 关闭消息给机器人助手 |
showFieldTip | 字段上显示提示信息 |
showOperationResult | 显示操作结果 |
showConfirm | 显示确认消息;用户确认完毕,会触发confirmCallBack事件; |
showSuccessNotification | 单据内成功悬浮消息框,默认2秒自动消失;消息内容,不能超过50字 |
showErrorNotification | 单据内失败悬浮消息框,需要手动关闭 |
showTipNotification | 单据内提示类别悬浮消息框,提示类会显示按钮,需要手动关闭 |
showRobotMessage | 发送消息给机器人助手 |
closeRobotMessage | 关闭消息给机器人助手 |
showFieldTip | 字段上显示提示信息 |
IDataModel提供的常用方法
方法 | 说明 |
---|---|
getDataEntityType * | 获取运行时表单实体元数据对象,又称为主实体模型 |
getProperty * | 获取运行时字段元数据对象,又称为实体的属性对象 |
createNewData | 根据表单主实体模型,创建表单新的数据包,字段填写好默认值 |
getDataEntity * | 获取表单数据包 |
updateCache * | 提交当前表单数据包到缓存 |
getValue * | 获取字段值 |
setValue * | 设置字段值 |
setItemValueByNumber | 根据基础资料的编码,设置基础资料字段值 |
setItemValueByID | 根据基础资料的内码,设置基础资料字段值 |
getContextVariable * | 获取上下文变量 |
putContextVariable | 添加上下文变量 |
removeContextVariable | 删除上下文变量 |
addDataModelListener | 订阅模型相关事件 |
addDataModelChangeListener | 订阅模型改变事件 |
createNewEntryRow | 创建分录行 |
batchCreateNewEntryRow | 批量创建分录行 |
如何开发插件-合理运用工具类
bos-servicehelper工程含大量工具类
服务类 | 说明 |
---|---|
SaveServiceHelper | 保存服务 |
DeleteServiceHelper | 删除服务 |
BusinessDataServiceHelper | 单据、基础资料读取 |
QueryServiceHelper | 查询服务 |
DBServiceHelper | 生成全局唯一的数据内码(字符型、长整型) |
TimeServiceHelper | 获取系统时间 |
BaseDataServiceHelper | 基础资料服务 |
ConvertServiceHelper | 单据转换服务 |
CodeRuleServiceHelper | 单据编号服务 |
OperationServiceHelper | 单据各种操作服务(保存、提交、审核、反审核、禁用、作废等) |
以上就是我关于 金蝶云苍穹插件开发 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。
分割线