本文是关于金蝶云星空BOS中级课程-Web插件开发的资料汇总,提供了课程回看地址、PPT课件链接、案例代码下载,以及直播答疑汇总。答疑涉及权限控制、报表查询、字段动态创建、表单嵌套、客户端显示网页问题、代码注释、API交互、插件调试等多个方面,解答了用户在使用金蝶云星空BOS平台进行Web插件开发时遇到的具体问题。同时,也提及了使用Python插件开发的支持以及与C#开发的差异。
一、课程主题:
金蝶云星空BOS中级课-Web插件开发
二、回看地址:
https://vip.kingdee.com/school/liveCourse/65393251527768320
三、PPT课件:
https://vip.kingdee.com/school/66817719307146240
四、案例代码(可在文末附件压缩包进行下载)
五、直播答疑汇总(部分问题已在直播答疑环节进行解答,文字简答版可参考以下答复)
1、我在供应链里加了一个子系统,为什么子系统和单据发布之后前台还是显示不了呢?
答复:检查业务对象是否受权限控制,发布时绑定的权限项,确认登录用户是否有查看权限。
2、想做一个汇总查询所有核算组织的存货收发存汇总表,请教大致步骤?
答复:找到存货收发汇总表的报表,查看报表的取数逻辑,按照实际业务筛选核算组织下的数据,
关于账表二开实现可以查看上一次的课程视频回放:
https://vip.kingdee.com/school/liveCourse/60413621381337344
3、动态创建的字段,代码绑定了值更新,或者实体服务规则,前台触发会报错,这是什么原因,是不是标准的工厂类不支持?
答复:建议提供堆栈信息分析问题,不了解对应的实现逻辑。
4、客户端以动态表单为载体,显示网页,这个会使网页有些内容不显示,有方法解决么?
答复:调整网页样式,使之能兼容客户端中所使用的对应的网页控件。
5、关于大家提到的代码注释文档问题?
答复:建议尽量通过协同开发平台来搭建二开环境,通过协同平台下载下来的组件包是带全部公共方法的注释的,而通过安装包创建的WebSite\Bin目录下的组件是没有注释的。
6、我在供应链里加了一个子系统,为什么子系统和单据发布之后前台还是显示不了呢?
答复:检查业务对象是否受权限控制,发布时绑定的权限项,确认登录用户是否有查看权限。
7、客户需要在一个界面直观看到汇总表和明细表,并且这两个表列数不一样!用什么实现比较好?
答复:表单嵌套,动态表单左右分别放置两个容器,分别显示汇总表和明细表,刚才的直播内容中有讲到指定控件容器打开表单的逻辑。
8、就比如基础资料客户,我在上面扩展了一个单据体折扣信息,A客户可以享受7,8,9折,B客户可以享受6,7,8,录单据的时候,选择B客户,折扣那一个字段就出现一个下拉列表6,7,8,然后业务员在里面选?
答复:下拉列表不支持每行分录的值不一样,但是F8界面能实现这个功能,具体思路,加入文本或相类似的字段,通过显示编辑按钮,实现相关代码打开F8界面和打开的表单的数据显示以及界面返回数据。
9、选择单据列表 返回选择单据数据后怎么设置当前单据与选择单据的关联?
答复:重写动态表单插件的AfterF7Select事件,在此事件中,可以拿到从单据列表返回的单据数据,然后和当前单据进行关联。
10、在调用webApi以后,需不需要在代码执行完成以后,关闭调用进程?
答复:不需要。
11、有没有可能直接从VIEW去直接访问数据库?
答复:不要直接访问,可用调用BusinessDataServiceHelper或QueryServiceHelper等来获取数据。
12、架构是MVC吗?
答复:金蝶云星空是基于MVC架构设计。
13、调试时,选择进程显示的是 WebDB 这个进程是怎么来的,我每次选都是 w3wp.exe?
答复:演示采用的是快速启动工具,附加的进程是WebDev.WebServer40.exe;如果是IIS启动的进程,就需要附加w3wp.exe,快速启动工具参考如下帖子:
https://vip.kingdee.com/article/3904
14、插件远程调试一般用什么方式?
答复:最好是本地调试通过后,再部署到正式环境;正式环境可以通过再插件代码中加入相关日志(如上机操作日志)便于分析问题。
15、动态表单插件和列表插件都有TREEVIEW的功能,用法是常规用法吗?还是有封装?
答复:都有,用法是通用的,具体使用可以参考:
https://vip.kingdee.com/article/13948
16、需要和外部系统交互数据,有内置api写法吗?
答复:外部系统可以通过WebApi来进行交互数据。
17、基础资料列表过滤,和基础资料选择过滤怎么能区分开?
答复:可以通过OpenParameter.ListType来判断是(1普通列表、2F8列表、3选单列表、4上下查列表);也可以通过方法直接判断IsCommonList,IsBaseList,IsSelBillList,IsTrackBillList。
18、在开发插件的过程中用到哪些技术?
答复:只需要基本的.net开发经验,熟悉插件的相关接口和方法即可上手开发。
19、怎么判断哪些可以配置实现?哪些需求通过插件开发实现?
答复:如果不需要复杂逻辑的判断处理,比如简单的字段赋值、公式赋值到指定列、锁定字段等,都可以通过系统内置的表单服务来进行配置。
20、操作列表增加空操作按钮同时写服务插件和表单插件,为什么服务插件不生效?
答复:空操作是支持写表单插件和服务插件的,如果不生效建议参考排查插件不生效的方法。
21、用python可以开发吗?
答复:支持用Python插件开发。
22、写了个反审核自动删除下游单据插件,当弹出是否继续对话框,点否,也把后续单据删除了,这个怎么判断??
答复:
由于这个操作是异步的,点否的时候实际上,操作就已经做完了;
以下以保存做个实例,仅供参考:
public override void BeforeDoOperation(BeforeDoOperationEventArgs e)
{
base.BeforeDoOperation(e);
if (this.View.OpenParameter.GetCustomParameter("SaveIgonre") == null &&
Convert.ToBoolean(this.View.OpenParameter.GetCustomParameter("SaveIgonre")) == false)
{
this.View.ShowMessage("确定要进行保存吗", MessageBoxOptions.YesNo, result =>
{
if (result == MessageBoxResult.Yes)
{
this.View.OpenParameter.SetCustomParameter("SaveIgonre", "true");
this.View.InvokeFormOperation("Save");
}
});
e.Cancel = true;
}
this.View.OpenParameter.SetCustomParameter("SaveIgonre", "false");
}
23、系统缓存操作有常用的场景吗?能举几个常见事例吗?
答复:比如有个参数(我们的系统参数就是用的缓存)需要全局来用的,我们可以在设置这个参数的时候缓存下来,然后其他地方调用都从缓存来进行获取。
24、能讲讲python开发和c#开发的差异么?
答复:Python可以调用c#已有的接口方法,除了部分python标准语法不一样,其它差异不是很大。
案例代码.rar(235.73KB)
推荐阅读