金蝶苍穹应用开发中级考试题库汇总

中级-苍穹题目

题库

单选

jvm参数中Xms 1024m的意思是 (D)

A.JVM堆最大内存设置的1024M

B.JVM年轻代内存大小设置的1024M

C.JVM每个线程的堆栈大小是1024M

D.JVM堆初始内存设置的1024M

苍穹的插件中关于控件注册监听的接近于哪种设计模式思想 (A或D)

A.策略模式

B.观察者模式

C.代理模式

D.工厂模式

在列表运行态界面,有需求要设置默认过滤条件,并在界面上进行展示,可在哪个事件中是正确的(B或C

A.afterCreateNewData(EventObject)

B.filterColumnSetFilter(SetFilterEvent)

C.filterContainerlnit(FilterContainerlnitArgs)

D.setFilter(SetFilterEvent)

列表开发典型场景:https://vip.kingdee.com/link/s/ZHkvB

在开发平台新建的页面是以什么形式保存的? (D)

A.以html数据结构保存在数据表中

B.以xml文件保存在web服务器

C.以html文件保存在web服务器

D.以xml数据结构保存在数据表中

关于调度,哪个可以手工执行?调度计划

单据列表展示的数据最大支持多少条? D

A.1万

B.无限制

C.100万

D.10万

单据转换插件哪个事件可以对取数SELECT子句、取数条件,做最后的修改(C)

A.afterCreateTarget

B.afterGetSourceData

C.beforeGetSourceData

D.beforeCreateLink

在单据的表单设计器界面预置一个未设置"字段名"属性的字段类控件,并在列表运行态表界面上进行展示,必须要重写以下哪个事件才能实现前端页面上展示业务数据?(A)

A.loadData(LoadDataEventArgs)

B.beforeCreateListDataProvider(BeforeCreateListDataProviderArgs)

C.afterCreateNewData(EventObject)

D.packageData(PackageDataEvent)

关于基础资料F7选择界面说法错误的是(C)

A.可以通过listShowParameter.setShowApproved(false),在F7选择界面显示未审核的数据

B.移动端可以通过设置iF7列表表单模板来切换打开模式

C.树形基础资料也可以通过bos_listf7打开标准列表显示数据(应该是bos_treelistf7

D.打开基础资料F7页面会校验用户的查看权限

下面哪个是消息发送的微服务接口(D)

A.MessageServiceHelper.sendMessage(Messagelnfo messageInfo)

B.MessageCenterServiceHelper.sendMessage()

C.MessageCenterHelper.sendMessage(MessageInfo messageInfo)

D.MessageCenterServiceHelper sendMessage(Messagelnfo messagelnfo)

多选

SaveServiceHelper.saveOperate("实体对象标识",new DynamicObject[]{new DynamicObject()})会触发那些业务校验(BD)

A.beforeltemClick

B.自定义校验器

C.beforeDoOperation

D.操作校验规则

关于反写插件,以下哪几项说法是错误的?(BD)

A.反写插件在表单设计器页面的业务属性"关联配置"中注册

B.反写插件可以在beforeCreateArticulationRow事件中取消本行的关联与反写,单据反写只触发一次——触发多次

C.反写插件可以实现beforeExeclViteBackRule方法,当反写绑定多个反写规则时,可以在此事件强制禁用系统预置的反写规则

D.反写插件可以实现beforeTrack方法,可以在该方法取消关联、反写,单据反写只触发一次

下面哪个是报表取数插件事件(AD)

A.query

B.afterQuery

C.beforeQuery

D.getColumns

E.packageData

关于F7选择界面说法正确的是(ABC)

A.分组基础资料是bos_templatetreelistf7界面

B.树形基础资料用的是bos_templatetreelistf7界面

C.普通基础资料用的是bos_listf7

D.人员使用的是bos_usertreelistf7页面

针对列表设计器界面中的过滤控件进行二开,以下哪几项说法是正确的?(BD)

A.filterContainerlnit(FilterContainerInitArgs)事件会多次触发

B过滤控件中的过滤条件发生改变时,可在fiterContainerSearchClick(FilterContainerSearchClickArgs)事件获取最终解析后的过滤条件

C.常用过滤视图下的基础资料字段只展示部分可选项时可重写filterColumnSetFilter(SetFilterEvent)事件中处理

D.方案过滤视图下,在增加查询条件时,基础资料字段只能选择部分业务数据,可在filterContainerBeforeF7Select(BeforeFilterF7SelectEvent)事件中处理

标准单据列表插件-插件基类:https://vip.kingdee.com/link/s/ZHkQl

关于值更新事件说法正确的是(AB)

A.在设置值的时候,通过beginInit和endInit不会触发值更新事件

B.在propertyChanged可以获取字段的修改前和修改后值

C.在afterCreatedNewData里面不会触发值更新

D.在关闭页面的时候也会触发setvalue事件,同时也会触发值更新事件——不确定

多关于调度任务类的开发,正确的是?(ABD)

A cedtacProness事件可以反读讲度

B派生自ABstracTask类

C stop()事件不会髓出任务异常

D主罗的浙行业务泼辑在eleote事件中实现

调度任务操作指引:https://vip.kingdee.com/link/s/ZHkQI

后台任务插件-插件基类:https://vip.kingdee.com/link/s/ZHkbv

关于新建一个工作流时,其审批决策项有哪几种?(ABC)

A.驳回

B.同意

C.终止流程

D.不同意并终止流程

审批决策项介绍:https://vip.kingdee.com/link/s/ZHkLA

决策项用于设置审批时“同意”、“驳回”、“终止”、“强制驳回”

动态表单与单据、基础资料等业务单据的区别在于?(ABC)

A单据和基础资料有特定的业务场景与实际含义,而动态表单常用来做弹框等个性化页面

B.动志表单不提供直接的教据库存储操作,需要通过插件自行完成存储和查询

C.数据存储上,单据和基础资料提供数据的存储与查询功能

D.动态表单适用于一切不适用于其他页面类型的场景

关于DBRoute的说法正确的是(BCD

A.DB查询时,DBRoute需要指定具体的物理数据实例名

B.在需要通过SQL访问的场景下建议使用DB来访问数据库

C.在使用DB访问数据库的时候建议统一使用KSQL语法

D.通过DBRoute指定数据库路由即可查询对应的数据库表信息

关于propertyChanged事件说法正确的是(ABCD)

A.界面数据初始时,不触发此事件,即在afterCreateNewData事件中,修改字段值,不会触发此事件

B.修改字段值之后触发

C.此事件在实体服务规则执行之后发生:用户手工录入字段值时,先执行与此字段相关的实体服务规则,然后再触发插件propertChanged事件

D.该事件通知插件字段发生了改变,可以同步调整其他字段值

propertyChanged事件:https://vip.kingdee.com/link/s/ZHE0z

关于数据中心,说法正确的是(ABD)

A.一个租户可以有多个数据中心

B.不同数据中心数据的访问可以通过苍穹orm数据服务接口查询

C.一个租户只能有一个数据中心

D.不同数据中心数据的访问可以OpenApi访问

苍穹系统目前预置了8种卡片表单,其中包含以下全部

快速发起卡片

单据统计卡片

多项单据统计卡片

云之家订阅卡片

消息中心卡片

轻分析卡片

用户中心卡片

自定义卡片

人员的人员状态与用户状态描述正确的是(BCEF)

A.用户禁用的人员可以开展业务,比如工资代发业务:

B.用户状态作为系统使用者的状态,通过用户授权列表的“用户禁用/用户启用"操作刷新;

C.人员状态影响人员登录苍穹系统

D.人员状态作为基础资料的状态,通过人员列表的“禁用/启用"操作刷新;

E.用户状态主要是影响人员登录苍穹系统、许可站点释放、角色分配用户;

F.人员状态主要是影响人员F7,业务单据新增时使用状态=禁用的记录不显示;

人员的人员状态与用户状态分离:https://vip.kingdee.com/link/s/ZHE3X

关于afterBindData事件说法正确的是(BCD)

A.afterBindData事件是页面加载过程中的最后一个事件

B.界面数据包构建完毕,生成指令,刷新前端字段值、控件状态之后,触发此事件

C.不建议在此事件,修改字段值

D.插件可以在此事件,根据各字段值数据,重新设置控件、字段的可用

afterBindData事件:https://vip.kingdee.com/link/s/ZHE2U

关于公有云部署天梯系统说法正确的是(ABCDE)

A.同一开发商开发的不同系统的可以使用同一套开发商标识部署在天梯,而互不影响

B.苍言的入口在系统服务云-部署运维

C.通过天梯可以提交修改二开插件,在相应时间统一部署到公有云

D.通过天梯可以查看系统运行现状和系统日志,从而排查问题

E.通过天梯可以自助化执行sql脚本

关于beforeBindData事件说法正确的是(ACD)

A.界面数据包开始构建时,开始生成指令,刷新前端字段值、控件状态之前,触发此事件

B.向前端动态添加字段控件元数据后,在本事件中,向后台视图模型,添加字段的控件编程模型实例,以确保动态添加的字段值被购出到前端

C.插件可以在此事件中,调整后台视图模型(IFormMView)中的字段、控件属性,间接控制前端界面字段值、控件状态

D.单据界面加载过程中,beforeBindData事件必然触发

beforeBindData事件:https://vip.kingdee.com/link/s/ZHEBU

关于TimerElapsed事件说法正确的是(ABCD)

A.前端定时发送请求,触发此界面事件

B.需要在preOpenForm事件中,设置界面显示参数FormShowParameter的ListentimerElapsed属性为true,开启TmerElapsed事件

C.必须同时重写preOpenForm事件,开启TimerElapsed事件开关,否则,不会触发此事件

D.插件可以在此事件,定时向前端回馈信息

TimerElapsed事件:https://vip.kingdee.com/link/s/ZHEjA

关于布局说法正确的是?(ABCD)

A.单据布局在设计器中操作,可以对界面整体进行重新改造

B.单据列表中,可以设置一个单据布局,让打开的单据详情以这个布局的样式来展示

C.在工作流中可以选择一个布局页面,审核人在审核时,以这个布局来展示

D.单据布局可以对基础资料/单据设置

布局介绍:https://vip.kingdee.com/link/s/ZHE42

PostgreSQL数据库在运行过程中参数大量wal旧志,导致磁盘不足,影响其他服务正常运行,我们该愿么清理它的wal日志?(CD)

A.执行Pg_dump

B.执行pg_restore

C.手动执行checkpoint

D.执行pg_archivecleanup

PostgreSQL数据库清理wal日志:https://vip.kingdee.com/link/s/ZHEXv

关于苍穹的页面缓存pagecache说法正确的是(AD)

A.页面缓存可以存DynamicObject

B.在正式生产环境中,页面缓存的数据是存放在JVM里面的

C.页面缓存只能存String类型的值

D.在正式生产环境中,页面缓存的数据是存放在redis里面的

关于表单beforeDo0peration事件与操作校验器的区别说法正确的是(ABCD)

A.控制颗粒度不同,表单beforeDoOperation事件,只能整体取消操作,不能对批量数据进行区分

B.建议对操作进行数据校验时,尽量配置操作校验器、或使用操作插件,而不是使用表单beforeDoOperation事件

C.适用的操作类型不同,只有实体操作,才允许配置操作的校验规则

D.运行时机不同,数据校验逻辑放在beforeDoOperation事件,有可能漏过校

关于beforePropertyChanged事件说法正确的是(ABD)

A.该事件用于通知插件字段值将要发生了改变,同步调整其他字段值

B.界面数据初始时,不触发此事件,例如在afterCreateNewData事件中,修改字段值,不会触发此事件

C.PropertyChangedArgs.getChangeSet()只能获取发生改变的数据的最新值

D.修改字段值之前触发该事件

beforePropertyChanged事件:https://vip.kingdee.com/link/s/ZHEOD

判断题

苍穹支持在itemClick事件中动态添加文本控件(对)

苍穹最新版本中BOTP支持携带附件和图片到下游单(对)

主实体模型(MainEntityType)的作用是获取对象的实体标识、实体名称、表名、获取所有字段属性等等(对)

简答题

请分别阐述:授权界面找不到应用和找不到业务对象可能的原因

答案一
1、未正确配置应用或业务对象:

(1)未创建应用:如果授权界面找不到应用,可能是因为应用没有被正确创建或配置。在苍穹系统中,应用需要在开发过程中创建,并进行适当的配置。

(2)未发布应用:即使应用已经创建,但如果应用没有被发布,授权界面可能仍然无法找到它。发布应用是将应用从开发状态切换到生产状态的重要步骤。
2、权限配置问题:

(1)未分配权限:在苍穹系统中,用户需要被授予适当的权限才能访问应用或业务对象。如果用户没有被分配到相应的权限,他们将无法看到应用或业务对象。

(2)权限范围问题:授权可能受到权限范围的限制。如果用户的权限范围与应用或业务对象的范围不匹配,他们可能无法看到它们。 配置错误:

3、配置错误:配置问题可能导致应用或业务对象在授权界面上不可见。这可能包括错误的配置参数、选项或条件。

4、数据问题:数据不完整或不一致:有时,应用或业务对象相关的数据可能不完整或不一致,这可能会导致授权界面无法正确显示它们。

5、缓存问题:缓存同步延迟:若在应用或业务对象的创建、修改或删除后,缓存没有及时更新,授权界面可能会显示不一致的信息。这通常需要等待缓存同步或手动刷新缓存。

6、系统问题:系统故障或错误:有时,系统问题可能导致授权界面无法正确显示应用或业务对象。这包括服务器故障、网络问题或其他技术性问题。

答案二
1 应用未启用

2应用下没有业务对象,或者所有的业务对象都没有设置权限管控。(单据,动态表单,

基础资料等统称为业务对象)

3 应用为全员应用,如果是全员应用则不受权 限管控。(查看应用信息中的高级信息中全 员应用是否已勾选,如果是则需要去掉)

4 如果不是administrator 账号的话,可能是 因为administrator 账号没有给使用的管理 员账号授应用权限(授管理员权比创建应 用早的话就不会有应用权限),用administrator 账号授权后即可

5 业务对象关闭了控制功能权限

6 业务对象操作权限控制项为空

7 业务对象为模板,即开启了模板开关。系统 默认模板界面不参与实际使用,不设置权限 管控

8 业务对象不是当前应用的。如果单据a 所属 应用是X, 被挂到其他应用Y 的菜单上,那 Y 中默认也看不到a, 可以在单据a 中权限 发布应用选择Y, 在 Y 应用授权下就有a 单 据 了

如何自定义单据列表模板,请把大致的实现过程描述出来

步骤1:点击“新增”按钮,进入自定义模板界面,并录入名称。

步骤2:在左边的可选列表中,选择需要的步骤,添加到右边的已选列表中。步骤选择和添加,没有先后顺序。“保存”后,模板中的步骤的顺序同左边列表中的顺序一致。

步骤3:保存时,如果没有选择步骤,则无法保存成功。弹出错误提醒:请填写“已选步骤”

不需插件开发,设置日期控件日期格式显示的方式有三种,分别是哪些?

1、选择掩码(YYYY-MM-DD等)

2、设置格式化字符串(yyyy-MM-dd)

3、选择不同类型的控件(日期、时间等等)

针对苍穹平台内的每个对象,请从元模型库层至客户定制模型层面描述KDDM的核心能力复用&个性化并存特点。

1、元模型到定制 kddm会逐层细化和优化客户需求,实现了核心能力复用和个性化并存,加强了业务拓展性,满足客户定制化要求,加强了苍穹平台能力;

2、元模型的通用模型层为模型的复用提供了基础,可拓展的实用性,行业模型层则通过行业特点,利用金蝶深耕多年企业数据沉淀,进一步提升了模型的针对性,和深度复用性,使得相同行业客户可快速通过拖拉拽方式满足基本业务需求;

3、客户定制模型则实现了高度个性化定制,同时保留了模型复用的特点,使得客户可以选择拓展自己的功能属性;

4、金蝶云苍穹复用与个性化并存的特点,让kddm可以满足企业的多样化需求,以及推动客户数字化转型,为客户创造价值;实现了金蝶做最值得托付的企业服务平台的初心;也让客户真切感到了数字化的便利性;满足生产需求;

背景:某客户生产环境中,A单据列表(非基础资料列表)数据库中总存储数据有100行,实际预览时,只显示出10条数据。现在请你排查该问题。

要求:1、请描述出通用的排查方法。(4分);

2、请描述出不少于3种实际可能出现如上背景问题的三种原因。每种类型的原因算一种(6分);

3、描述要求不少于50字。

答:数据查询:首先,检查数据查询的语句是否正确,包括查询条件、排序等,确保查询的是正确的数据。使用数据库客户端工具执行相同的查询语句来验证数据是否正确。

数据量确认:查看数据库中的数据总量是否与预期一致。可以使用SQL查询来获取总行数,并与预期值进行比对。

分页设置:检查页面的分页设置,确保分页参数配置正确。特别注意每页显示的记录数,确保它不会导致只显示了部分数据。

数据权限:检查当前用户的数据权限设置,确保用户有权查看所有的数据行。如果权限受限制,可能会导致只显示部分数据。

可能出现问题的原因:

分页设置错误:如果分页设置的每页显示记录数太小,或者分页查询的逻辑有误,可能导致只显示部分数据。

数据权限限制:用户的数据权限配置可能限制了其只能查看部分数据,这会导致只显示有权访问的数据。

查询条件不当:查询条件可能没有设置正确,导致只返回了符合条件的部分数据。

数据库连接问题:数据库连接问题可能导致数据获取不完整,确保数据库连接稳定。

页面加载逻辑:前端页面的加载逻辑也可能存在问题,例如只加载了部分数据。检查前端代码以确保数据加载逻辑正确。

数据量超出限制:某些数据库系统对返回的数据量有限制,如果数据量超过了限制,可能会导致只显示部分数据。

在某项目中,目前金蝶云苍穹平台提供的单据列表模板不能满足客户的需求,项目经理要求你自定义一个单据列表模板实现该需求,请描述自定义单据列表模板的大概步骤,要包含关键的改动点?

答:①首先创建动态表单,在公共模板中选择空白页面,然后填写编码和名称,完成创建;

②添加控件.三件套(过滤,工具栏,单据列表)再加点别的东西用来看效果,然后修改三件套控件标识,注意单据列表下的两个试图也需要修改标识.

③保存模板,复制标识到单据的列表页,替换原来的bos_list,然后保存,预览.

XX 项目中,领导让小明给某个用户添加某 个指定业务对象的全部功能权限,小明打开了人员 直接授权界面,选择了业务单元。

问题1:小明在授权界面没有找到该业务对象所属的 应用,请说出可能的原因

问题2:小明在授权界面找到了该业务对象的所属应 用,但是没有找到该业务对象,请说出可能的原因

回答:

问题1:  1.应用未发布 2.权限不足 3.搜索或筛选条件错误 4.系统配置问题5.业务对象权限控制问题

问题2:业 务 对 象 权 限 对 象 表 格 问 题 :

1.可 能 与 T_SEC_ObjectTypePermission 业务对象权限对象表格的 FVisible 授权界面可见性属性有关。如果该属性设置不正确, 可能会导致业务对象在授权界面中不可见。

2.功能权限授权异常:当二开的单据发布在云星空后想做权 限控制时,如果新增的权限对象没有正确勾选控制功能权 限,或者发布菜单的权限项不正确,可能导致在业务对象 功能授权里选不到该业务对象。

3.扩展与元数据控制:如果存在扩展并且元数据没有控制, 或者父节点没有控制,那么二开部署后的扩展单据的权限 控制需要重新勾选和保存。

4.系统缓存或界面更新问题:有时系统缓存或界面未及时更 新,可能导致小明在授权界面中看不到最新的业务对象。

5.业务对象未被正确添加:可能存在业务对象没有被正确添 加到系统中,或者添加过程中出现了错误,导致小明无法 在授权界面看到它。

根据苍穹部署架构,请描述 mservice服务在启动过程中,应用仓库、 Zookeeper、mc、mservice 之间的联系。

1 . 应用仓库:提供应用的存储和管理,是mservice服务启动时所需应用和插件的来源。

2.Zookeeper: 作为服务注册中心和服务配置中心, 为 mservice 服务提供服务发现和配置管理服务。

3.MC: 提供对mservice 服务的配置管理和启动控 制的接口或界面,帮助运维人员管理和监控 mservice 服务的运行状态。

4.mservice 服务自身:是金蝶云苍穹的核心服务之 一,负责管理和协调其他服务,在启动过程中加载 配置信息和依赖项,并与其他服务建立连接。这些 组件之间的紧密联系和协作,确保了金蝶云苍穹系 统的稳定运行和高效性能

请简述页面字段不可见的影响因素?

1 设计器中可见性未打开

2 设计器中给字段设置为了隐藏元素

3 将字段放在了系统隐藏字段内

4 用代码控制了可见性this.getView().setVisible()

5 界面规则设置了隐藏

在某项目中,开发人员小蝶发现,某个字段在设计器界面存在,但是预览后该字段不存在,请帮小蝶分析可能的原因,不少于5种

1.缓存问题:有时候,设计器的缓存没有及时更新,导致在设计器界面看到的字段和实际生成的预览界面不同步。尝试清除缓存或重启设计器可能会解决问题。

2.字段绑定错误:如果字段是通过某种绑定机制添加到界面的,可能存在绑定错误或字段引用不正确,导致在预览时无法正确显示。

3.条件渲染:该字段可能被设置为在特定条件下才显示,如果在预览时这些条件没有满足,字段就不会显示出来。

4.权限问题:在某些系统中,界面元素的显示可能受到用户权限的限制。如果小蝶没有足够的权限查看或编辑该字段,它可能在预览时不显示。

5.设计器配置问题:设计器可能有特定的配置要求或依赖,如果配置不正确,可能会导致某些字段在预览时不显示。

6.数据问题:如果字段的显示依赖于后端数据,可能是数据查询或数据传递过程中出现了问题,导致字段在预览时为空或不显示。

                

模拟题

单选

1.IDataModel实例是在什么事件中初始化的C )

A.beforeBindData——界面数据包构建完毕,开始生成指令,刷新前端字段值、控件状态之前,触发此事件

B.afterBindData——界面数据包构建完毕,生成指令,刷新前端字段值、控件状态之后,触发此事件

C.createNewData——界面初始化或刷新,开始新建数据包时触发此事件

D.afterCreateNewData——界面初始化或刷新,新建数据包完毕后,触发此事件

?afterBindData afterCreateNewData区别

IFormView实例是在什么事件中初始化的 B)

A.setPluginName——显示界面,准备构建界面显示配置formConfig前,构建插件时触发此事件,传入脚本名称;

B.setView——表单视图模型初始化,创建插件时,调用此方法,向插件传入表单视图模型IFormView实例;

C.preOpenForm——显示界面前,准备构建界面显示参数时,触发此事件;

D.initialize——表单视图模型初始化,创建插件后,触发此事件;

2.动态表单界面初始化事件执行顺序正确的是 (A)

①)initialize

②beforeBindData

③afterBindData

createNewData

⑤afterCreateNewData

A.14523

B.45123

C.12345

D.23145

3.关于多布局开发下面说法不正确的是 A)

A.布局不能发布菜单

B.开发布局选择类型为继承时,新建的布局跟业务实体界面一模一样

C.一个业务实体可以开发多个布局

D.布局除了不能增加字段,可以增加通用控件,并且可以控制原有字段的可见性和锁定性

表单配置多个布局,分别对应不同的菜单,如何实现不同角色看不同菜单:https://vip.kingdee.com/link/s/leH0x

4.关于单据体类控件,以下说法哪项说法是不正确的 D)

A.树形单据体的控件编程模型为TreeEntryGrid ——https://vip.kingdee.com/link/s/leHq0

B.单据体的数据类型是DynamicObiectCollection

C.单据体每行数据的类型为DynamicObject

D.单据体每行数据模型中包含了单据体各字段值但不包含子单据体数据包

5.以下哪一类参数支持集团管控 C)

A.单据参数

B.单据类型参数

C.公共平台参数

D.应用参数

集团管控整体介绍及使用

https://vip.kingdee.com/link/s/leHFA

6.当单据工具栏的按钮没有绑定操作代码时,操作该按钮仍需对单据做校验,应该选择哪个事件实现校验逻辑 D) 

A.表单插件的beforeDoOperation事件 ——用户点击按钮、菜单,执行绑定的操作逻辑前,触发此事件;

beforeDoOperation事件:https://vip.kingdee.com/link/s/leHj7

B.表单插件的beforeClick事件

C.操作插件白定义校验器的 validate方法

D.表单插件的beforeltemClick事件

业务校验主要用于确认按钮是否绑定了操作代码,是否是界面操作,还是后台操作

对于以上不同情况,有不同的实现方案。

1)如果没有绑定操作代码,只能通过beforeClick或beforeItemClick监听按钮的点击前事件进行校验;

2)如果按钮绑定了操作代码,但只在用户点击按钮的时候触发校验,那么可以通过以下四种方法实现校验:

1、通过beforeClick、beforeItemclick按钮点击前事件;

2、通过beforeDoOperation操作前事件;

3、操作类型为save、submit等个别操作还可以通过校验规则配置实现校验;

4、服务插件校验:继承操作服务类AbstractOperationServicePlugIn,添加自定义校验器onAddValidators。

3)如果按钮绑定了操作代码,但该操作通过后台代码触发而非界面操作触发,则只能通过以下方式实现业务校验:

1、操作类型为save、submit等个别操作,可以通过校验规则配置实现校验;

2、利用服务校验插件进行业务校验,即继承操作服务类AbstractOperationServicePlugIn,添加自定义校验器onAddValidators。

原文链接:https://club.kdcloud.com/article/317032487002262784?productLineId=29&isKnowledge=2〈=zh-CN

必须要掌握的四种业务校验方案:https://vip.kingdee.com/link/s/leHWg

7.关于缓存的使用下列说法错误的是 (D)

A.使用缓存时要注意key值不能冲突

B.页面缓存可以使用IPageCache

C.缓存是会过期的

D.缓存一定可以提升运行效率

8.自定义控件方案,index.Js中不包含哪个生命周期函数? A)

A.customEvent

B.update

C.destoryed

D.init

https://vip.kingdee.com/link/s/leHr6

9.自定义控件请求其他网站时,遇到跨域问题该如何解决?  (B)

A.申请成为目标网站的开发者,配置黑名单

B.申请成为目标网站的开发者,配置白名单或者信任域名

C.苍穹自动处理跨域问题,不需要开发者做其他处理

D.不会遇到跨域问题

10.在引入数据时不会触发哪些事件 C)

A.保存操作的操作插件的beginOperationTransaction事件

B.业务规则

C.界面插件的propertyChanged事件

D.保存操作的操作插件的endOperationTransaction事件

11.以下伪代码中符合苍穹定制开发规范的是 A)

A.for(DynamicProperty property :treeEntryProperties){

property.setValueFast(newObj,objProps.get(property.getName()).getValueFast(obj));

}
this.getView().updateView(entryKey);

B.for(DynamicObject object :rows){
DispatchServiceHelper.invokeService(prefix,appld,serviceName,methodName,params);}

C.for (DynamicObject object :rows){ DB.quey(dbRoute,sql, rh);

}

D.for(DynamicObject object :rows){
BusinessDataServiceHelper,loadSingle(object.get("id"), "zsjt originalbill") }

金蝶云·苍穹定制化开发规范:https://vip.kingdee.com/link/s/leH9q

12.关于工作流审批页面的说法正确的是 D)

A.驳回只能驳回上一个节点 ——驳回可选择驳回到上一个节点和驳回至提交节点

B.审批同意时,只能调用表单上的操作把单据状态变成审核通过

C.驳回只能驳回到提交节点

D.已进入流程的单据,可以修改后面的节点信息,并即时生效——好像不能即时生效,对新流程生效,已进入流程的会按旧流程节点走完

13.以下哪项关于日志输入或异常处理的做法是不正确C)

A.如果需要分析生产环境上才能出现的异常,可在catch里调用e.printStackTrace()进行日志输出

B.为了方便查找功能调用过程,打印关键信息时可使用kd.bos.logging.Log.info(String)接口输出日志

C.catch异常后,再往上抛出异常,通常不需要记录日志,如未往上抛出异常,务必记录日志

D.因为采用了微服务架构,所以日志的输出需要尽量使用平台自带的接口

金蝶云·苍穹定制化开发规范:https://vip.kingdee.com/link/s/leH9q

14.关于权限描述哪一项不正确的 B)

A.基础资料F7弹窗页面不需要配置权限也能査看

B.单据可以把权限发布到其他应用上

C.全员应用不需要验权 正确)

D.工作流审批中的操作需要单据授权

15.苍穹的二维码控件,扫码之后获取的值是什么类型? A)

A.URL —— https://vip.kingdee.com/link/s/leHuG

B.DynamicObject

C.Json

D.String

16.在循环中更改某一字段的值后,需要刷新显示最新值,以下哪个选项符合苍穹定制化开发规范 D)

A.在循环结束后针对修改的数据进行局部刷新,即在循环体外部调用view.refreshView()

B.在循环中调用view.updateView()

C.使用view.invalidate()方法在循环中调用

D.在循环结束后针对修改的数据进行局部刷新,即在循环体外部调用view.updateView()

金蝶云·苍穹定制化开发规范:https://vip.kingdee.com/link/s/leH9q

17.二开微服务调用API接口方法为?D)

 A.getBOSService ——获取平台提供的微服务

B.invokeBOSService——平台微服务调用

C.invokeBizService —— 业务微服务调用

D.invokeService——二开业务调用

微服务开发与调用:https://vip.kingdee.com/link/s/leJc0

18.用Qfilter封装的sql查询条件“a and b or c and d”的执行顺序是什么 D)

A.按顺序执行

B.倒序执行

C.先执行or再执行and

D.先执行and再执行or

19.以下项目命名符合苍穹定制化开发规范的是?  (B)

A.gl-formplugin-ext

B.isv-fi-gl-formplugin-ext(其中isv为开发商标识)

C.fi-gl-formplugin-ext

D.isv-fi-gl-formplugin其中isv为开发商标识)

金蝶云·苍穹定制化开发规范:https://vip.kingdee.com/link/s/leH9q

20.门户首页方案中哪个方案不需要配置“系统云/系统管理/首页定制/修改”权限或者管理员权限,也可以配置对应方案 A)

A.全局方案和共亨方案

B.共享方案

C.个性方案

D.全局方案

在插件中构造SQL的时候,where的条件内容,使用占位符比直接拼接条件性能要好,原因是 B)

A.传参的方式阅读性较好

B.不需要再次语法解析

C.代码量较少

D.拼接的方式SQL会比较长

协同开发环境,在远程环境(开发环境)操作出现调度到本地环境(本地启动的微服务)的异常如何解决? C)

A.检查本地环境配置dubbo.registry.register=false

B.检查本地环境配置lightweightdeploy=false

C.检查本地环境配置mq.consumer.register=true

D.检查本地webmserviceinone=true

可参考如下配置:

//连接服务器zk  

set("Schedule.zk.server","10.122.101.92:2181");  

//本地mq开启

set("mq.consumer.register", "true");

//本地mq加入自己的唯一标识

set("mq.debug.queue.tag","zijidemingzi");

原文链接:https://club.kdcloud.com/article/510453667473075456?productLineId=2〈=zh-CN

以下关于定制化开发团队引用第三方jar包(该第三方jar包苍穹平台已存在,但是版本存在差异)的规范,描述正确的是(B)

A.引用第三方jar包的决定可以由定制化开发业务团队独立做出,无需与苍穹平台开发团队协商

B.定制化开发团队只需要将引用的]jar与平台存在的jar进行冲突依赖解决,形成一个新的jar引入即可

C.为避免版本出现冲突,禁止引用该第三方jar包,保留平台已有jar包

D.允许在特殊业务需要的情况下引用第三方jar包,即使与平台jar包存在版本冲突

金蝶云·苍穹定制化开发规范:https://vip.kingdee.com/link/s/leH9q

关于跨应用转换规则、反写规则和插件工程描述符合苍穹定制化开发规范的是A)

A.转换规则、转换插件应部署在源单所在应用的服务中

B.反写规则、反写插件应部署在源单所在应用的服务中

C.转换规则、反写规则和插件部署在源单和目标单所在应用的服务中均可

D.转换规则、转换插件应部署在目标单所在应用的服务中

以下关于单据的主业务组织属性描述正确的是 D)

A.主业务组织所绑定的组织字段,其行政职能不能设置为行政组织

B.主业务组织没有具体含义

C.主业务组织属性必须设置

D.单据数据按主业务组织隔离——单据上面的其他基础资料字段默认会根据单据上面的主业务组织来进行数据过滤

在对单据新增的时候,对继承的编码字段进行隐藏,以下哪项做法是正确的D) 

A.通过开启隐藏属性进行隐藏

B.在单据插件事件afterLoadData()中用代码隐藏

C.在表单插件事件afterCreateNewData()中用代码隐藏

D.通过设置可见性进行隐藏

金蝶云·苍穹定制化开发规范:https://vip.kingdee.com/link/s/leH9q

在操作单据A的业务数据时同步更新单据A、B的业务数据(A&B属同一个分库),为保证数据一致性,应该在以下哪个事件中进行处理? A)

A.beforeExecuteOperationTransaction(BeforeOperationArgs) ——事务外

B.endOperationTransaction(EndOperationTransactionArgs)

C.beginOperationTransaction(BeginOperationTransactionArgs)

DbeforeDoOperation(BeforeDoOperationEventArgs)——事务外

关于苍穹中MQ用法错误的是 D)

A.在团队开发环境中,不同开发人员使用同一个tag,你的MQ消息会被其他人消费掉

B.消费端插件需要继承MessageConsumer并实现里面的onMessage方法

快速上手苍穹消息队列开发:https://vip.kingdee.com/link/s/leJL5

C.通过acker.deny方法来确认消息已被正确消费

D.在MC下的公共参数/root/config/mservice/prop配置mq的XML路径

关于单据匿名访问的说法正确的是 C)

A.单据匿名访问只有管理员账号有权限访问 ——guest身份

B.单据匿名访问就是当前登录人登录名称被隐藏真实姓名

C.单据匿名访问只有在全员应用开启的情况下才能使用

D.单据匿名访问可以在不用登录认证苍弯平台的情况下访问苍穹页面

17.分应用分库部署的情况下,当需要跨库修改数据的话,以下哪种做法是不可行的 C)

A.通过MQ来实现跨库操作及保证事务最终一致性

B.事务外修改跨库的数据,需要在失败或异常时做补偿处理

C.在beginOperationTransaction事件实现跨库修改数据

D.使用分布式事务TCC处理

beginOperationTransaction事件:https://vip.kingdee.com/link/s/leJP3

19.关于表单绑定的插件说法错误的是 (C)

A.一个表单可以绑定多个插件,可以通过设计器调整插件的执行顺序

B.一个插件可以绑定到多个表单上

C.通过继承生成的单据,也会继承父单据的表单插件,但是这些插件可以禁用——不能禁用 

D.一个表单绑定多个插件,这些插件可以重写同一个方法,被重写的方法,按插件注册顺序执行。

如需在PC端的运行态界面展示自定义的单据列表页面,可配置以下哪项业务属性? (A不确定)

A.列表选项

B.列表表单模板

C.F7列表表单模板

D.使用表单布局

单据中新增哪个控件后在保存元数据的时候不会在相应的数据表中新增字段 (B)

A.基础资料

B.基础资料属性

C.计量单位

D.物料

关于元数据配置不正确的 (A)

A.单据字段如果要修改增加数据库字段长度,直接在元数据上即可

B.扩展后原单的字段,如果不想要,也不建议隐藏元素。

C.如果业务规则的规则条件上用到了文本字段,需要打开文本字段的值更新才会触发规则

D.根据条件调整字段必须,界面规则/业务规则无法配置实现,必须要通过插件来实现

关于消息渠道和消息类型的关系说法正确的是 D

A.多对一关系

B.一对一关系

C.一对多关系

D.多对多关系

在处理大数据量的查询、写入和计算等操作时,为提升性能和保证系统稳定性下列哪个选项是符合苍穹定制化开发规范的做法?

A.将操作放在一个大批次中一次性处理

B.分批处理只适用于读取等操作,对于写入和计算等操作,可以一次性处理所有数据

C.不进行分批处理,直接处理所有数据

D.将操作拆分为多个小批次进行处理

第三方系统在调用苍穹开放API接口时,以下哪项是正确的操作步骤?

① 获取AppToken

② 根据上一步得到的token调用相关的服务接口

③ 退出登录

④ 根据上一步得到的token和人员信息获取AccessToken

⑤如无第三方应用信息先新增一条应用信息

A.1 4 5 2 3

B.1 2 4 5 3

C.5 1 2 4 3

D.5 1 4 2 3

多选

21.以下哪些是非标准支持的第三方系统集成苍穹工作流需要做的 ABCDE)

A.重写dealtodo方法 ——工作流中将待办变成已办的时候,会调用此接口进行待办变已办的处理

B.单点登录集成

C.重写createtodo方法——工作流中的待办任务创建之后,会调用此接口,将待办任务传递给响应的渠道做处理。

D.扩展第三方渠道

E.组织人员同步

苍穹工作流那些事 之 待办任务与第三方系统集成:https://vip.kingdee.com/link/s/leJTM

22.以下那几项可以过滤单据列表数据范围 ACD)

A.在设计编辑器上单据列表上设置过滤条件

B.通过权限的功能权限

C.通过权限的数据规则来限定

D.通过配置特殊数据权限

23.如何将引出数据的excel表格设置背景颜色? ABD不确定)

A.单据列表插件的afterQueryOfExport事件中修改 ——待导出的数据取数后,即将格式化前触发此事件

B.使用POI框架自定义样式,再构造出文件流上传至文件服务,这样用户就能从文件服务上获取导出数据了

C.配置引出模板

D.单据列表插件的afterExportFil事件中修改——文件流写入完成,待上传时触发

导入导出插件总览:https://vip.kingdee.com/link/s/leJ32

24.苍穹的orm框架的作用是什么 ABCD)

A.跨库访问处理、不用关注实体对象对应的数据库

B.自动处理表单开发过程中涉及的关联查询,例如主表和单据体表的关联

C.基于业务元数据编程,可以触发保存操作校验规则,工作流等。

D.集成了algo等数据计算接口

25.小明是一位苍穹定制化开发人员,在扩展开发星瀚标准产品某一应用的过程中,发现某一定制化业务场景现有标准产品内部业务插件不满足,小明应该采取以下哪种符合规范的做法 AC)

A.与标准产品相关领域架构师沟通确认该业务逻辑和实现方式

B.直接禁用标准产品插件,完全重写标准产品业务逻辑

C.使用苍穹平台提供的业务场景插件扩展方案,实现扩展接口,完成插件开发

D.直接删除标准产品插件,完全重写业务逻辑

26.关于动态表单的视图模型说法正确的是 (ADE)

A.动态表单的视图模型实现类为FormView,实现了接口IFormView

B.获取动态表单界面视图模型实例:IFormView view=this.getView().getmodel(); ——

IFormView view=this.getView();

C.表单被加载时,会随机生成一个界面Pageld,一个表单被两个用户同时打开时,生成的界面Pageld相同

D.动态表单的视图模型接口为IFormView,定义了各种界面控制方法

E.动态表单界面插件,可以通过系统封装的表单视图模型,访问界面信息,对界面进行控制

27.以下哪些是调度任务架构特性 ABD)

A.负载均衡,根据负载情况执行作业

B.调度与执行分离-基于MQ实现调度与执行分离,可以灵活配置多个执行端

C.调度任务是基于事务的,出现调度异常时,调度任务类可以自动回滚

D.高可用-一台Executor Server容机,可以将Job调度到可用的Executor Server上执行

28.会审模式支持并签,其业务模式支持以下哪些业务式? (ABCD)

A.按投票比例 B.全部投票 C.按通过比例 D.一票否决

会审模式-并签介绍:https://vip.kingdee.com/link/s/le6yg

29.关于操作,以下哪几项说法是错误的? (BD)

 A.继承自EntityOperate的操作既会触发表单操作,也会触发实体操作——不确定 

B.调用实体操作可触发表单插件

C.操作包含表单操作&实体操作

D.调用表单操作可触发操作插件

30.关于表单的视图模型、控件编程模型说法正确的是 ABCDE)

A.插件可以通过系统封装的视图模型接口IFormView,间接的访问、控制前端界面,通过系统封装的各种控件代理对象,间接的访问控制前端界面上的控件

B.运行在服务端的控件代理对象,称为控件编程模型,或简称为控件、编程模型等

C.插件可以通过this.getView()方法,获取表单的视图模型接口实例;也可以通过this.geView(0).getControl(Stingkey)方法,获取到控件编程模型实例

D.用户看到的交互界面,是运行在客户端的,而业务逻辑和业务插件,则运行在服务端

E.业务插件运行在服务端,没办法直接获取到客户端界面上控件句柄,不能直接控制前端控件

21.苍穹团队开发环境,报错提示:实体类型xx中不存在名为yy的属性,原因有哪些 ACD)

A.列表添加实体字段,但是实体上把该字段删除了

B.列表添加实体字段,但是又在列表上把该字段删除了

C.数据查询接口查询的selectFieds参数字段没有添加yy字段,但是需要根据査询的结果集去get(yy)取值

D.操作插件中使用的字段,没有在方法onPreparePropertys中添加进来

22.关于afterLoadData事件与afterCreateNewData的区别说法正确的是 ABCD)

A.afterCreateNewData事件的数据包,是全新创建的数据包,适合在此事件调整默认值

B.单据界面以修改、查看模式打开,需到数据库加载单据,触发afterLoadData事件

C.单据界面以新增模式打开,不需要到数据库加载单据,触发afterCreateNewData事件区

D.afterLoadData事件的数据包,来自于数据库,不建议在此事件修改字段值区

E,这两个事件,在单据界面加载、刷新过程中,可以同时触发——这两个事件(互斥),在单据界面加载、刷新过程中,只会触发其中一个

afterCreateNewData是新建数据包完毕后,触发此事件;

afterBindData是界面数据包构建之后,触发此事件;

原文链接:https://club.kdcloud.com/article/223135159619307264?productLineId=29&isKnowledge=2〈=zh-CN

下游单据保存时没有触发反写规则,可能的原因是 ABCD)

A.下游单据没有设置关联主实体

B.反写条件不成立

C.反写规则没启用

D.反写规则执行的操作,不是保存

反写规则已经配好了,但是下游单据保存时,没有反写,怎么回事?:https://vip.kingdee.com/link/s/le6AO

25.使用苍穹平台封装方式创建线程池的好处是? ABCD)

A.统一管理和监控,比如监控总共创建了多少个线程,当前活动线程数;

B.可传递requestcontext上下文到线程池线程中;

C.避免线程变量干扰,使用完线程返回线程池时,统一会线程变量清理和资源回收等工作

D.相对jdk线程池做了更多优化,当线程池任务满时,不丢任务,更符合erp业务场

线程池:https://vip.kingdee.com/link/s/le6qd

26.关于公有云部署天梯系统说法正确的是 ACDE)

A.同一开发商开发的不同系统的可以使用同一套开发商标识部罢在天梯,而互不影响

B.苍穹的入口在系统服务云-部要运维 ——没查到入口

C.通过天梯可以提交修改二开插件,在相应时间统一部署到公有云

D.通过天梯可以自助化执行sql脚本

E.通过天梯可以查看系统运行现状和系统日志,从而排查问题

关于网络互斥说法正确的 ABCD)

A.网络互斥默认的存在时间时8小时

B.通过模板创建新的单据实体默认开通了提交操作的网络互斥功能

C.公共参数可以切换网络互斥或者意向锁功能

D.如果有异常状况导致页面一直被锁,可以在网络互斥删除锁

网络互斥:https://vip.kingdee.com/link/s/ZHE1A

基础资料控件的模糊查询说法正确的是 ABCD)

A.模糊查询的下拉列表宽度可以自定义

B.可以关闭支持模糊查询

C.默认显示编码和名称

D.默认支持编码和名称模糊查询

以下哪些逻辑不会触发propertChanged事件(ABCD)

A.上游单据下推生成下游单据时,更新的下游单据字段

B.操作插件修改的字段值

C.下游单据通过选单操作,触发的下游单据字段的更新

D.afterCreateNewData中赋值的字段值

propertyChanged事件:https://vip.kingdee.com/link/s/ls9Xj

自定义控件如何与苍穹页面插件进行交互?  

A.自定义控件的js文件中,使用KDApi的view.invoke将数据传递给苍穹插件

B.苍穹页面插件在afterBindData事件中,接收自定义控件的传参

C.自定义控件的js文件中,使用KDApi的model.invoke将数据传递给苍插件

D.苍弯页面插件在customEvent事件中,接收自定义控件的传参

关于布局,以下哪几项说法是正确的? (ACD)

A.可通过布局实现不同角色用户操作同一单据的不同字段

B.布局页面本质是一个单据——有可能是基础资料

C.布局页面不能发布到菜单

D.工作流的审批节点支持配置布局页面

关于基础资料的设计,说法正确的是AB)

A.基础资料可以用多布局实现样式的多样性

B.某个云下所有应用使用的基础资料,应该独立用一个应用专门创建基础资料

C.某个应用下所有表单使用的基础资料,应该另外独立创建应用专门创建基础资料——不知道

D.所有云使用的基础资料应该放到系统服务云下的基础资料应用中

苍穹使用的日志收集中间件包含以下哪几个? (BCD)

A.Kibana

B.Logstash

C.ElasticSearch

D.Kafka

判断

工作流中的流程可以通过二开补丁包的方式一起导出 (错)

使用苍穹kd.bos.dlock.DLock#create创建的锁为不可重入锁,当前线程不可重入  (对)

看完这份攻略,“苍穹分布式锁”拿捏得稳稳的

:https://vip.kingdee.com/link/s/le69U

表单被加载时,会随机生成一个界面Pageld,同一个表单被两个用户同时打开时,生成的界面Pageld相同 (错)

禁止在实体元数据缓存中获取到实体元数据后在内存中直接修改  (对)

调度作业执行顺序支持并行或者串行 (对)

在执行保存操作时,校验规则比自定义校验器的插件执行晚  (对)

有单据ABC,通过botp实现了A生成B,B生成C;则可以配置反写规则C反写A (对)

mq.consumer.register设置为false,表示本节点不消费MQ消息 (对)

树形基础资料的名称、编码、需要手动填写,长名称和长编码自动生成 (对)

关于操作插件,在列表上触发时,拿到的单据数据包含所有单据头字段 (错)

金蝶云星空是一款企业级的云服务平台,广泛应用于财务管理、供应链管理、生产制造、人力资源等多个领域。其应用开发中级考试主要考察考生在平台上的开发能力、系统集成、模块定制及实际问题解决能力。 考试内容通常包括以下几个方面: - **平台基础与开发环境配置**:包括对金蝶云星空平台的整体架构理解、开发工具的使用(如K3 Cloud Studio)、调试工具的使用等。 - **业务服务与接口开发**:掌握平台提供的各类服务接口,如BOS(Business Operation Service)、动态服务、插件开发等,能够根据业务需求进行扩展开发。 - **表单与流程开发**:熟悉表单设计工具、流程引擎的使用,能够开发自定义审批流程、业务流程。 - **数据模型与数据库操作**:理解金蝶云星空中数据模型的设计原则,掌握SQL脚本的编写、数据查询优化等。 - **集成与部署**:了解与其他系统(如ERP、CRM)的集成方式,掌握应用的打包、部署和版本管理。 备考资料建议如下: 1. **官方文档与培训课程**:金蝶官网提供了详细的开发者文档、API参考手册及培训视频,是备考的核心资料[^1]。 2. **认证考试指南**:金蝶云星空官方发布的中级考试大纲和模拟题库是备考的重要依据,有助于掌握考试重点。 3. **社区与论坛资源**:参与金蝶社区、CSDN、知乎等平台的技术讨论,获取他人分享的备考经验与真题解析。 4. **实践项目**:通过搭建实验环境,进行插件开发、接口调试、流程设计等实操练习,提升实际开发能力。 ### 示例代码:调用金蝶云星空动态服务 以下是一个调用金蝶云星空动态服务的简单示例代码,使用 C# 编写: ```csharp using System; using Kingdee.BOS.WebApi.ServicesStub; using Kingdee.BOS.WebApi.Client; namespace K3CloudApiDemo { class Program { static void Main(string[] args) { string serviceUrl = "http://your-k3cloud-server/KDServiceFx/KDServiceReference.svc"; string userName = "admin"; string password = "123456"; string formId = "SAL_SaleOrder"; // 示例单据类型 // 初始化服务代理 KDServiceLoginService loginService = new KDServiceLoginService(); string sessionId = loginService.Login(serviceUrl, userName, password, "zh-CN"); if (!string.IsNullOrEmpty(sessionId)) { Console.WriteLine("登录成功"); // 获取动态服务代理 DynamicFormService dynamicFormService = new DynamicFormService(); string result = dynamicFormService.GetDynamicFormInfo(formId, sessionId); Console.WriteLine("单据信息:" + result); } else { Console.WriteLine("登录失败"); } } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值