【答疑汇总&资料】金蝶云·星空BOS第3期直播—Web插件开发原创
金蝶云社区-云社区用户6XE29259
云社区用户6XE29259
46人赞赏了该文章 6,119次浏览 未经作者许可,禁止转载编辑于2020年07月03日 15:12:07
summary-icon摘要由AI智能服务提供

本文是关于金蝶云星空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标准语法不一样,其它差异不是很大。


图标赞 46
46人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!