会计科目使用说明

栏目:云星瀚知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

会计科目使用说明

# 1、目的 会计科目是财务基础资料,因为做了版本化的功能,有一些自己实现的业务逻辑,所以在其他业务系统或者二开单据使用上有一些需要注意的点,在此进行说明。如果要了解会计科目基本业务请参考【[会计科目](https://vip.kingdee.com/article/73447498840506880?productLineId=2&isKnowledge=2 "会计科目")】 # 2、基本介绍 会计科目版本化操作会产生不同的数据记录,每条科目记录存在开始日期和失效日期两个字段,不同科目使用版本主要就是根据这两个日期进行过滤。一般基础资料会记录最新版本的记录,而业务单据上会根据业务日期选择对应版本的科目。 # 3、使用场景 针对会计科目使用中可能遇到的问题和需要注意的点进行说明。 ## 3.1、使用基础资料控件 添加基础资料控件,基础资料类型绑定【会计科目】,如果是在单据上使用,需要根据单据上某个业务日期去过滤对应版本的科目的话,则需要在代码中beforeF7时增加对应期间可用版本科目和科目表的过滤,怎么查找对应版本科目在【3.3】小节说明。科目是按科目表隔离,在系统可能存在多个科目表的情况下必须要加科目表过滤,不然在打开科目F7时会出现如下图问题,左树科目类型重复。注意科目表过滤条件需要单独加,不要跟其他过滤条件and一起。 ```java BasedataEdit basedata = this.getView().getControl("account"); basedata.addBeforeF7SelectListener({evt->{ //设置科目表过滤 long tableId = 10000L; ListShowParameter param = (ListShowParameter) evt.getFormShowParameter(); List<QFilter> filters = param.getListFilterParameter().getQFilters(); filters.add(new QFilter("accounttable", "=", tableId)); }); ``` ![8.webp](/download/010020c767a4f87940e5aadf2994a5e47c2b.webp) 在使用基础资料或者多选基础资料绑定会计科目时,默认查询都是最新版本的科目,也就是结束日期等于2999-12-31的这条记录,如果想自定义过滤条件,不按2999-12-31过滤,那么需要在打开会计科目列表时传递自定义参数【**acct_filter**】,使用示例如下 ```java BasedataEdit basedata = this.getView().getControl("account"); basedata.addBeforeF7SelectListener({evt->{ //设置自定义科目日期过滤 long tableId = 10000L; ListShowParameter param = (ListShowParameter) evt.getFormShowParameter(); List<QFilter> filters = param.getListFilterParameter().getQFilters(); param.getCustomParams().put("acct_filter", "true"); filters.add(new QFilter("startdate", "<=", "2022-01-31")); filters.add(new QFilter("enddate", ">=", "2022-01-31")); }); ``` ## 3.2、使用科目控件 基于财务比较常用,已经对会计科目封装成了一个业务字段可以直接使用。在设计器业务字段直接拉出来就可以使用。在单据中科目单选场景下推荐使用科目控件。下面对科目控件关键控件属性进行说明。 ![9.webp](/download/01008df2e87cacf64401816e1438480d9dca.webp) |属性|说明|备注| |-|-|-| | 显示长名称 | 打开开关,在显示属性配置有名称的情况下,则会把名称显示成长名称 | | | 多版本 | 打开开关情况下,则会在科目进行版本化的时候自动进行替换,将该基础资料上的科目替换成最新版本的数据 |一般单据不打开这个参数,需要保持最新版本的基础资料可以打开| | 科目使用期间 | 配置科目对应可以使用的期间字段,则可以自动根据该字段找到可用版本的科目 | 需配置期间字段,不配置则查询最新版本科目 | |科目表| 配置科目表基础资料,会根据配置的科目表过滤,否则需要自己代码处理| 代码处理参考3.1部分| ## 3.3、代码查找对应版本科目 在很多开发场景中需要根据科目编码找到对应日期可用版本的科目,则需要按照特定的几个查询条件进行查询,示例如下 ```java //假设查询科目1001对应的id 期间period:2021年5期 long orgId = 100000L; long acctTableId = 1L; // 财务用期间定义,也可以直接取单据对应记账日期或者业务日期进行过滤 Date enddate = period.getDate("enddate"); //当前组织可用的科目 QFilter forgId = BaseDataServiceHelper.getBaseDataFilter("bd_accountview", orgId); //科目表过滤 QFilter faccttableId = new QFilter("accounttable", QCP.equals, acctTableId); //科目编码 QFilter facct = new QFilter("number", QCP.equals, "1001"); //科目生效日期过滤 QFilter fdate = new QFilter("startdate", QCP.less_equals, enddate) .and(new QFilter("enddate", QCP.large_equals, enddate)); //查询对应日期可用科目版本id QueryServiceHelper.queryDataSet("", "bd_accountview", "id", new QFilter[]{forgId, faccttableId, facct, fdate}, null); ``` 如果知道当前科目数据masterid,也可以使用masterid进行查找,示例如下 ```java //假设查询科目1001对应的id 期间period:2021年5期 long orgId = 100000L; long masterid = 1L; // 财务用期间定义,也可以直接取单据对应记账日期或者业务日期进行过滤 Date enddate = period.getDate("enddate"); //当前组织可用的科目 QFilter forgId = BaseDataServiceHelper.getBaseDataFilter("bd_accountview", orgId); //科目masterid QFilter fmasterid = new QFilter("masterid", QCP.equals, masterid); //科目生效日期过滤 QFilter fdate = new QFilter("startdate", QCP.less_equals, enddate) .and(new QFilter("enddate", QCP.large_equals, enddate)); //查询对应日期可用科目版本id QueryServiceHelper.queryDataSet("", "bd_accountview", "id", new QFilter[]{forgId, faccttableId, facct, fdate}, null); ```

会计科目使用说明

# 1、目的会计科目是财务基础资料,因为做了版本化的功能,有一些自己实现的业务逻辑,所以在其他业务系统或者二开单据使用上有一些需要注...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息