nc65 树单据类型教程

实现效果:

实现思路

1. 可以完全手写,也可以先利用向导生成一个 主子VO的单据,然后在调整界面样式:去掉列表模板,替换左侧树

1. 实现方式二

可以先想到生成一个 标准的主子类型单据,

再使用附件中的XML替换, 并将xml文件中zl备注的地方,根据需要修改成自己的

2.后续代码实现

1. TreeManagerMediator.java 持有 左侧树面板的 model 和 右侧 单据的 model

2.TreeManagerMediator中对两个model新添加了监听,根据监听到的事件进行 业务处理

1. 主要是, 节点打开的时候,预加载左侧树的数据出

2.  左侧树切换的时候,根据切换事件,进行右侧数据的加载和初始化

<!--************************************************************************************************************************************-->

一:xml文件源代码

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans> <!-- 环境变量 -->  <bean id="context" class="nc.vo.uif2.LoginContext"/>  <!-- 模型部分配置*********************************************************** -->  <!-- 对象转换器工厂,由此获取操作对象的特征信息 -->  <bean id="BOAdapterFactory" class="nc.vo.bd.meta.GeneralBDObjectAdapterFactory"> <property name="mode" value="MD"/> </bean>  <!-- 对象转换器工厂,由此获取操作对象的特征信息 -->  <bean id="boadatorfactory" class="nc.ui.pubapp.uif2app.view.value.AggVOMetaBDObjectAdapterFactory"/>  <!-- 管理应用模型 -->  <bean id="manageAppModel" class="nc.ui.pubapp.uif2app.model.BillManageModel"> <property name="businessObjectAdapterFactory" ref="boadatorfactory"/>  <property name="context" ref="context"/> </bean>  <!-- 应用服务类,负责进行模型操作的处理 -->  <!-- zl 需要修改成自己的代理类 -->  <bean id="bmModelModelService" class="nc.ui.fdc_crmbd.h3h001.ace.serviceproxy.AceH3H001MaintainProxy"/>  <!-- liyf树1 :增加 树视图元素 -->  <bean id="treePanel" class="nc.ui.uif2.components.TreePanel" init-method="initUI"> <property name="model" ref="HAppModel"/> </bean>  <!-- zl 树2:增加树应用模型 -->  <bean id="HAppModel" class="nc.ui.uif2.model.HierachicalDataAppModel"> <property name="service" ref="HModelService"/>  <property name="treeCreateStrategy" ref="treeCreateStrategy"/>  <property name="businessObjectAdapterFactory" ref="bdboadatorfactory"/>  <property name="context" ref="context"/> </bean>  <!-- zl 树2.1:树model查询服务类 nc.ui.uif2.model.IAppModelService -->  <bean id="HModelService" class="nc.ui.fdc_crmbd.h3h001.ace.tree.QueryService"/>  <!-- zl 树2.2:层次结构构造策略 -->  <bean id="treeCreateStrategy" class="nc.vo.bd.meta.BDObjectTreeCreateStrategy"> <property name="factory" ref="bdboadatorfactory"/>  <property name="rootName" value="指标分类"/> <span style="white-space:pre">  </span><property name="hierarchicalData" ref="defaultHierachicalData" />
<span style="white-space:pre"> </span></bean>
<span style="white-space:pre"> </span> <!-- zl 树2.21:指定树构造的策略是否按照编码 -->
<span style="white-space:pre"> </span><bean id="defaultHierachicalData" class="nc.vo.bd.meta.DefaultHierachicalData">
<span style="white-space:pre">     </span><property name="codeTree" value="true" />
<span style="white-space:pre">     </span><property name="codeRule" value="2/2/2" />
<span style="white-space:pre"> </span></bean>
<!-- zl 树2.3:单表VO数据转换工厂 -->  <bean id="bdboadatorfactory" class="nc.vo.bd.meta.BDObjectAdpaterFactory"/>  <!-- liyf 树3:增加树应用模型管理器 nc.ui.uif2.model.IAppModelDataManager -->  <bean id="treeModelDataManager" class="nc.ui.fdc_crmbd.h3h001.ace.tree.TreeMoeldataManager"> <property name="model" ref="HAppModel"/> </bean>  <!-- zl 树4:增加xxxMediator,对左树和右应用模型管理器管理 (a.增加的监听,抓取事件 b.负责事件的中转) -->  <bean id="treeManagerMediator" class="nc.ui.fdc_crmbd.h3h001.ace.tree.TreeManagerMediator"> <property name="treeModel" ref="HAppModel"/>  <property name="manageModel" ref="bmModel"/>  <property name="manageModelMng" ref="bmModelModelDataManager"/> </bean>  <!-- 层次结构构造策略 -->  <!-- 模型元素 -->  <!--========= 模型元素:[PUBAPP平面模型(BillManageModel)实例对象] ==========-->  <bean id="bmModel" class="nc.ui.pubapp.uif2app.model.BillManageModel"> <property name="context"><ref bean="context"/></property>  <property name="businessObjectAdapterFactory"><ref bean="BOAdapterFactory"/></property> </bean>  <!-- 数据模型管理器,主要负责各种方式的模型初始化 -->  <bean id="bmModelModelDataManager" class="nc.ui.pubapp.uif2app.query2.model.ModelDataManager"> <property name="model"><ref bean="bmModel"/></property>  <property name="service"><ref bean="bmModelModelService"/></property> </bean>  <!-- 模板容器,负责对模板的统一装载 -->  <bean id="templateContainer" class="nc.ui.pubapp.uif2app.view.TemplateContainer" init-method="load"> <property name="context" ref="context"/>  <property name="nodeKeies"> <list> <value>bt</value> </list> </property> </bean>  <!--====== 视图元素:[PUBAPP表单控件(ShowUpableBillForm)实例对象] ==============-->  <bean id="billForm" class="nc.ui.pubapp.uif2app.view.ShowUpableBillForm" init-method="initUI"> <property name="model"><ref bean="bmModel"/></property>  <property name="nodekey" value="bt"/>  <!-- 表体行操作按钮注册,这只是一组默认设置,开发人员需要自己在此添加其他需要的表体行操作按钮 -->  <property name="bodyLineActions"> <list> <bean class="nc.ui.pubapp.uif2app.actions.BodyAddLineAction"/>  <bean class="nc.ui.pubapp.uif2app.actions.BodyInsertLineAction"/>  <bean class="nc.ui.pubapp.uif2app.actions.BodyDelLineAction"/> </list> </property> </bean>  <!-- 界面布局总装*********************************************************** -->  <bean id="container" class="nc.ui.uif2.TangramContainer" init-method="initUI"> <property name="tangramLayoutRoot"> <bean class="nc.ui.uif2.tangramlayout.node.TBNode"> <property name="tabs"> <list> <bean class="nc.ui.uif2.tangramlayout.node.HSNode"> <property name="left"> <bean class="nc.ui.uif2.tangramlayout.node.CNode"> <property name="component"> <!-- zl  将原来的容器替换成树panel --><ref bean="treePanel"/> </property> </bean> </property>  <property name="right"> <bean class="nc.ui.uif2.tangramlayout.node.CNode"> <property name="component"> <ref bean="billForm"/> </property> </bean> </property>  <property name="name" value="卡片"/> </bean> </list> </property>  <property name="name" value="cardLayout"/>  <property name="showMode" value="CardLayout"/> </bean> </property>  <property name="actions"> <list> <ref bean="addAction"/>  <ref bean="editAction"/>  <ref bean="deleteScriptAction"/>  <ref bean="defaultQueryAction"/>  <ref bean="copyAction"/>  <ref bean="separatorAction"/>  <ref bean="defaultRefreshAction"/>  <ref bean="separatorAction"/>  <ref bean="commitScriptAction"/>  <ref bean="unCommitScriptAction"/>  <ref bean="approveScriptAction"/>  <ref bean="uNApproveScriptAction"/>  <ref bean="separatorAction"/>  <ref bean="linkQueryAction"/>  <ref bean="separatorAction"/>  <ref bean="metaDataBasedPrintAction"/>  <ref bean="metaDataBasedPrintActiona"/>  <ref bean="outputAction"/>  <ref bean="separatorAction"/>  <ref bean="pFApproveStatusInfoAction"/> </list> </property>  <property name="editActions"> <list> <ref bean="saveScriptAction"/>  <ref bean="cancelAction"/> </list> </property>  <property name="model"> <ref bean="bmModel"/> </property> </bean>  <!-- 打开节点监听 newadd-->  <bean id="InitDataListener" class="nc.ui.pubapp.uif2app.model.DefaultFuncNodeInitDataListener"> <property name="model" ref="bmModel"/>  <property name="context" ref="context"/>  <property name="voClassName" value="nc.vo.fdc_crmbd.h3h001.AggFdcxmda"/> </bean>  <!-- ClosingListener 编辑态关闭节点时提示是否保存//newadd***************************************************-->  <!-- 节点关闭前校验 -->  <bean id="ClosingListener" class="nc.ui.pubapp.common.validateservice.ClosingCheck"> <property name="model" ref="bmModel"/>  <property name="saveAction" ref="saveScriptAction"/> </bean>  <!--懒加载信息配置*******************************************************-->  <!--懒加载,加载表体数据-->  <bean id="billLazilyLoader" class="nc.ui.pubapp.uif2app.lazilyload.DefaultBillLazilyLoader"/>  <bean id="bmModelLasilyLodadMediator" class="nc.ui.pubapp.uif2app.lazilyload.LazilyLoadManager"> <property name="model" ref="bmModel"/>  <property name="loader" ref="billLazilyLoader"/>  <property name="lazilyLoadSupporter"> <list> <bean class="nc.ui.pubapp.uif2app.lazilyload.CardPanelLazilyLoad"> <property name="billform" ref="billForm"/> </bean> </list> </property> </bean>  <!-- 事件监听newadd -->  <bean id="bmModelEventMediator" class="nc.ui.pubapp.uif2app.model.AppEventHandlerMediator"> <property name="model" ref="bmModel"/>  <property name="handlerGroup"> <list> <!-- nc.ui.pubapp.uif2app.event.OrgChangedEvent -->  <bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup"> <property name="event" value="nc.ui.pubapp.uif2app.event.OrgChangedEvent"/>  <property name="handler"> <bean class="nc.ui.fdc_crmbd.h3h001.ace.handler.AceOrgChangeHandler"> <property name="billForm" ref="billForm"/> </bean> </property> </bean>  <!-- nc.ui.pubapp.uif2app.event.billform.AddEvent -->  <bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup"> <property name="event" value="nc.ui.pubapp.uif2app.event.billform.AddEvent"/>  <property name="handler"> <bean class="nc.ui.fdc_crmbd.h3h001.ace.handler.AceAddHandler"/> </property> </bean> </list> </property> </bean>  <!-- 行号自动处理 -->  <bean id="rowNoMediator" class="nc.ui.pubapp.uif2app.view.RowNoMediator"> <property name="model" ref="bmModel"/>  <property name="editor" ref="billForm"/> </bean>  <!-- 单据号 -->  <bean id="billCodeMediator" class="nc.ui.pubapp.bill.BillCodeMediator" init-method="initUI"> <property name="billForm" ref="billForm"/>  <property name="billCodeKey" value="vbillcode"/>  <property name="billType" value="H001"/> </bean>  <!-- Action部分 ***********************************************************-->  <!--======= 动作:[newActions] [新增] ===========-->  <bean id="addAction" class="nc.ui.pubapp.uif2app.actions.AddAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="interceptor"> <bean class="nc.ui.pubapp.uif2app.actions.interceptor.CompositeActionInterceptor"> <property name="interceptors"> <list> <bean class="nc.ui.pubapp.uif2app.actions.interceptor.ShowUpComponentInterceptor"> <property name="showUpComponent" ref="billForm"/> </bean>  <!--此处可以扩展添加自己的拦截器--> </list> </property> </bean> </property>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--======= 动作:[newActions] [修改] ===========-->  <bean id="editAction" class="nc.ui.pubapp.uif2app.actions.EditAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--======= 动作:[newActions] [删除] ===========-->  <bean id="deleteScriptAction" class="nc.ui.pubapp.uif2app.actions.pflow.DeleteScriptAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="billType" value="H001"/>  <property name="filledUpInFlow" value="true"/>  <property name="actionName" value="DELETE"/>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <bean id="defaultQueryActionQueryTemplateContainer" class="nc.ui.uif2.editor.QueryTemplateContainer"> <property name="nodeKey" value="qt"/>  <property name="context"><ref bean="context"/></property> </bean>  <!--======= 动作:[newActions] [查询] ===========-->  <bean id="defaultQueryAction" class="nc.ui.pubapp.uif2app.query2.action.DefaultQueryAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="templateContainer"><ref bean="defaultQueryActionQueryTemplateContainer"/></property>  <property name="nodeKey" value="qt"/>  <property name="dataManager"><ref bean="bmModelModelDataManager"/></property>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property>  <property name="btnName" value="查询"/> </bean>  <!--======= 动作:[newActions] [复制] ===========-->  <bean id="copyAction" class="nc.ui.pubapp.uif2app.actions.CopyAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="editor"><ref bean="billForm"/></property>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--======= 动作:[newActions] [刷新] ===========-->  <bean id="defaultRefreshAction" class="nc.ui.pubapp.uif2app.query2.action.DefaultRefreshAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="dataManager"><ref bean="bmModelModelDataManager"/></property>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--======= 动作:[newActions] [提交] ===========-->  <bean id="commitScriptAction" class="nc.ui.pubapp.uif2app.actions.pflow.CommitScriptAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="editor"><ref bean="billForm"/></property>  <property name="billType" value="H001"/>  <property name="filledUpInFlow" value="true"/>  <property name="actionName" value="SAVE"/>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--======= 动作:[newActions] [收回] ===========-->  <bean id="unCommitScriptAction" class="nc.ui.pubapp.uif2app.actions.pflow.UnCommitScriptAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="editor"><ref bean="billForm"/></property>  <property name="billType" value="H001"/>  <property name="filledUpInFlow" value="true"/>  <property name="actionName" value="UNSAVEBILL"/>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--======= 动作:[newActions] [审批] ===========-->  <bean id="approveScriptAction" class="nc.ui.pubapp.uif2app.actions.pflow.ApproveScriptAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="editor"><ref bean="billForm"/></property>  <property name="billType" value="H001"/>  <property name="filledUpInFlow" value="true"/>  <property name="actionName" value="APPROVE"/>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--======= 动作:[newActions] [取消审批] ===========-->  <bean id="uNApproveScriptAction" class="nc.ui.pubapp.uif2app.actions.pflow.UNApproveScriptAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="editor"><ref bean="billForm"/></property>  <property name="billType" value="H001"/>  <property name="filledUpInFlow" value="true"/>  <property name="actionName" value="UNAPPROVE"/>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--======= 动作:[newActions] [联查单据] ===========-->  <bean id="linkQueryAction" class="nc.ui.pubapp.uif2app.actions.LinkQueryAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--======= 动作:[newActions] [预览] ===========-->  <bean id="metaDataBasedPrintAction" class="nc.ui.pubapp.uif2app.actions.MetaDataBasedPrintAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="actioncode" value="Preview"/>  <property name="actionname" value="预览"/>  <property name="preview" value="true"/>  <property name="nodeKey" value="ot"/>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property>  <property name="btnName" value="预览"/> </bean>  <!--======= 动作:[newActions] [打印] ===========-->  <bean id="metaDataBasedPrintActiona" class="nc.ui.pubapp.uif2app.actions.MetaDataBasedPrintAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="actioncode" value="Print"/>  <property name="actionname" value="打印"/>  <property name="preview" value="false"/>  <property name="nodeKey" value="ot"/>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property>  <property name="btnName" value="打印"/> </bean>  <!--======= 动作:[newActions] [输出...] ===========-->  <bean id="outputAction" class="nc.ui.pubapp.uif2app.actions.OutputAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="editor"><ref bean="billForm"/></property>  <property name="nodeKey" value="ot"/>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--======= 动作:[newActions] [查看审批意见] ===========-->  <bean id="pFApproveStatusInfoAction" class="nc.ui.pubapp.uif2app.actions.pflow.PFApproveStatusInfoAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--======= 动作:[newActions] [保存] ===========-->  <bean id="saveScriptAction" class="nc.ui.pubapp.uif2app.actions.pflow.SaveScriptAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="editor"><ref bean="billForm"/></property>  <property name="billType" value="H001"/>  <property name="filledUpInFlow" value="true"/>  <property name="actionName" value="SAVEBASE"/>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--======= 动作:[newActions] [取消] ===========-->  <bean id="cancelAction" class="nc.ui.pubapp.uif2app.actions.CancelAction"> <property name="model"><ref bean="bmModel"/></property>  <property name="editor"><ref bean="billForm"/></property>  <property name="exceptionHandler"><ref bean="exceptionHandler"/></property> </bean>  <!--分隔按钮-->  <bean id="separatorAction" class="nc.funcnode.ui.action.SeparatorAction"/>  <bean id="exceptionHandler" class="nc.ui.uif2.DefaultExceptionHanler"> <constructor-arg><ref bean="container"/></constructor-arg>  <property name="context"><ref bean="context"/></property> </bean>  <!-- 批量保存校验服务类 -->
</beans>

二:xml中需要添加的源代码:

QueryService

package nc.ui.orgpm.indicatorcl2.tree;import nc.bs.framework.common.NCLocator;
import nc.itf.org.ICorpQryService;
import nc.ui.uif2.model.IAppModelService;
import nc.vo.uif2.LoginContext;public class QueryService implements IAppModelService {@Overridepublic Object insert(Object object) throws Exception {return null;}@Overridepublic Object update(Object object) throws Exception {return null;}@Overridepublic void delete(Object object) throws Exception {}@Overridepublic Object[] queryByDataVisibilitySetting(LoginContext context)throws Exception {// TODO 自动生成的方法存根
//      nc.vo.vorg.CorpVersionVOICorpQryService bs = NCLocator.getInstance().lookup(ICorpQryService.class);return bs.queryAllCorpVOs();}}

TreeManagerMediator

package nc.ui.orgpm.indicatorcl2.tree;import nc.bs.logging.Logger;
import nc.ui.pubapp.uif2app.model.pagination.PaginationModelDataManager;
import nc.ui.uif2.AppEvent;
import nc.ui.uif2.AppEventListener;
import nc.ui.uif2.UIState;
import nc.ui.uif2.model.AppEventConst;
import nc.ui.uif2.model.BillManageModel;
import nc.ui.uif2.model.HierachicalDataAppModel;public class TreeManagerMediator {private HierachicalDataAppModel treeModel;private BillManageModel manageModel;private PaginationModelDataManager manageModelMng;private TreeEventListener listener;public static String TREE_STATUS_CHANGED = "TREE_STATUS_CHANGED";public static int TREE_DISABLE = 1;public static int TREE_ENABLE = 0;public TreeEventListener getListener() {return listener;}public void setListener(TreeEventListener listener) {this.listener = listener;}public TreeManagerMediator() {listener = new TreeEventListener();}class TreeEventListener implements AppEventListener {@Overridepublic void handleEvent(AppEvent event) {// TODO 自动生成的方法存根try {if (event.getSource() == getManageModel()) {if (AppEventConst.MODEL_INITIALIZED == event.getType()) {Object[] treedatas = getTreeModel().getAllDatas();if ((null == treedatas || treedatas.length <= 0)) {Object[] data;data = getTreeModel().getService().queryByDataVisibilitySetting(getManageModel().getContext());getTreeModel().initModel(data);}}}if (event.getSource() == getTreeModel()) {// 左侧树模型监听if (AppEventConst.SELECTION_CHANGED == event.getType()) {Object o  = getTreeModel().getSelectedData();if(o == null)//选择跟节点,得到数据为nullreturn ;//                     //1.查询数据
//                      IXpm_billMaintain maitain = NCLocator.getInstance()
//                              .lookup(IXpm_billMaintain.class);
//                      AggBillTestHeadVO[] data = maitain.queryBillByPK(new String[]{"1001ZZ10000000002M5A"});
//                      //2.设置模型
//                      getManageModel().initModel(data);} } else {if (AppEventConst.UISTATE_CHANGED.equals(event.getType())) {if (getManageModel().getUiState() == UIState.ADD) {getTreeModel().fireEvent(new AppEvent(TREE_STATUS_CHANGED, getTreeModel(),TREE_DISABLE));} else {getTreeModel().fireEvent(new AppEvent(TREE_STATUS_CHANGED, getTreeModel(),TREE_ENABLE));}}}} catch (Exception e) {// TODO 自动生成的 catch 块e.printStackTrace();Logger.debug(e.getMessage());}}}public HierachicalDataAppModel getTreeModel() {return treeModel;}public void setTreeModel(HierachicalDataAppModel treeModel) {this.treeModel = treeModel;treeModel.addAppEventListener(getListener());}public BillManageModel getManageModel() {return manageModel;}public void setManageModel(BillManageModel manageModel) {this.manageModel = manageModel;manageModel.addAppEventListener(getListener());}public PaginationModelDataManager getManageModelMng() {return manageModelMng;}public void setManageModelMng(PaginationModelDataManager manageModelMng) {this.manageModelMng = manageModelMng;}}

TreeMoeldataManager

package nc.ui.orgpm.indicatorcl2.tree;import nc.bs.logging.Logger;
import nc.ui.uif2.model.HierachicalDataAppModel;
import nc.ui.uif2.model.IAppModelDataManager;public class TreeMoeldataManager implements IAppModelDataManager {private HierachicalDataAppModel model;public TreeMoeldataManager(){super();}@Overridepublic void initModel() {Object [] obj =null;try {obj = this.getModel().getService().queryByDataVisibilitySetting(this.getModel().getContext());} catch (Exception e) {e.printStackTrace();}this.getModel().initModel(obj);}public HierachicalDataAppModel getModel() {return model;}public void setModel(HierachicalDataAppModel model) {this.model = model;}}

nc65 树单据类型教程相关推荐

  1. NC65【单据转换规则】新增下游单据类型,下游单据生成仅支持后台(以【到货单 23】to【其他入库单 4A】为例)

    1.新增到货单下游单据类型 UPDATE BD_BILLTYPE SET FORWARDBILLTYPE = FORWARDBILLTYPE || ',4A' WHERE PK_BILLTYPECOD ...

  2. 用友uap nc65开发-单据联查相关开发

    用友uap nc65开发-单据联查相关开发 1.单据联查:针对有上下游数据单据,通过单据联查使用图形化界面显示该单据上下游.本教程分两部分,上游和下游. 2.前期配置:xml配置对应的按钮,这里指定当 ...

  3. AST语法结构树初学者完整教程

    AST语法结构树初学者完整教程 编写你的第一个 Babel 插件 不太喜欢上来就讲大道理,先来个小栗子,做个简单而又实用的功能,做完后,理论你就理解一大半了. 我们需要antd里面的一个组件Butto ...

  4. NC65开发单据用户自定义项问题处理

    NC65开发单据用户自定义项不显示 插入相应SQL脚本 单据根据用户自定义项显示模板 增加用户自定属性是否引用校验 插入相应SQL脚本 INSERT INTO BD_USERDEFRULE (CODE ...

  5. NC65树表结构参照左边树节点的定位属性

    NC65树表结构参照左边树节点的定位属性: nc.ui.bd.ref.AbstractRefGridTreeModel中的classLocatePK 在 nc.ui.bd.ref.UFRefGridT ...

  6. SAP RETAIL 如何确定自动补货触发的单据类型 III

    SAP RETAIL 如何确定自动补货触发的单据类型 III 本文目的是展示通过修改后台配置的另外一个参数,试图让自动补货事务代码WRP1R触发采购申请单据出来.不过,还是未能如愿以偿,此文记录下测试 ...

  7. SAP RETAIL 如何确定自动补货触发的单据类型 II

    SAP RETAIL 如何确定自动补货触发的单据类型 II 本文目的是展示通过修改后台配置,实现让自动补货事务代码WRP1R触发采购申请单据出来. 1, 这里新建一个零售商品号637用于本文. 无库存 ...

  8. SAP RETAIL 如何确定自动补货触发的单据类型

    SAP RETAIL 如何确定自动补货触发的单据类型 在SAP系统里执行事务代码WRP1R, 执行, SAP系统触发了一个采购订单,单据号是4500000696.如下图: 我们发现该补货程序自动创建出 ...

  9. SAP MM PR单据类型的配置里‘Control’和’Doc.Type’字段的作用?

    SAP MM PR单据类型的配置里'Control'和'Doc.Type'字段的作用? Control:如果选成了T,是使用于STO(公司间转储或者公司内转储),需要将Plant当作VENDOR. C ...

  10. unity怎么导入系统的树_Unity5.0_树_软件教程_资源库

    摘要:Unity5.0_树_软件教程_资源库 树 Unity 的地形引擎 (Terrain Engine) 为树 (Trees) 提供 特殊支持.您可以在地形 (Terrain) 上放置上千棵树,然后 ...

最新文章

  1. 卷积神经网络鼻祖LeNet网络分析
  2. vscode MPE puppeteer导出pdf的数学公式显示问题
  3. 如何做到全年配送 0 故障?盒马揭秘 12个关键技术
  4. Nagios显示器mysql定从库: libmysqlclient.so.18: cannot open shared object file: No such
  5. CCF NOI1153 素数环
  6. python海龟作图好看图案_python海龟绘图,其实python也很强大,这些技能你知道吗?...
  7. OsharpNS轻量级.net core快速开发框架简明入门教程-多上下文配置(多个数据库的使用)...
  8. 计算机图形学学习记录(一) —— DDA画线算法
  9. 为什么在计算机里打开U盘会闪退,U盘闪退怎么办?
  10. 手机文字识别工具,帮你快速复制图片上的文字
  11. Linux shell下的颜色含义
  12. 单目深度估计--深度学习篇
  13. 后摩尔时代新星之自旋电子器件
  14. vue3项目中如何使用iconfont图标?体积太大?看这篇文章就够了!
  15. 使用ProcMon 输出调试信息
  16. php mssql 字符串截断,SQLServer 自动截断字符串
  17. 大数据 Linux 搭建(一)
  18. wmware网络模式
  19. Java之详解坦克大战游戏(六)
  20. 数据清洗(二):python数据清洗

热门文章

  1. 深度卷积神经网络是什么,卷积神经网络结构设计
  2. sublime 快捷键
  3. pixel 更新系统
  4. 说一说协议生成器 - Ricequant米筐量化
  5. 新浪微博批量删除微博方法
  6. html5 文本转语音,JS实现文字转语音播放之SpeechSynthesisUtterance
  7. 车辆模型-动力学模型(Dynamics Model)
  8. windows 启动 cmd快捷键,类似于 linux “Ctrl+Alt+T“ 启动终端
  9. 人工智能智能制作PPT构想---论文与PPT介绍
  10. A-PDF Watermark