【第21期】金蝶云·星空-协同开发 | 产品应用典型/热门问答精选 2024年6月发布原创
金蝶云社区-OUT_MAN
OUT_MAN
9人赞赏了该文章 308次浏览 未经作者许可,禁止转载编辑于2024年07月03日 10:46:01

各位社区的小伙伴们,大家好,我是  版主 OUT_MAN


在金蝶云·星空-协同开发产品应用中,你需要了解的典型/热门问答都在这里!  

本帖每月持续更新,欢迎小伙伴们点赞,收藏本帖,CTRL+F关键词搜索,以便随时查看、扩充知识哟


玩转金蝶云社区


【第21期】

  更新日期:2024-6


1、 怎么用WebAPI查询自定义单据(类型是普通基础资料)记录总数

问题描述:

WebAPI查询记录总数 (kingdee.com)

按照这个方法只能查系统中现有的单据
如果是查询在bos中新增的单据,则报错
image.png

解决方案:

参考:可以查询,FilterString 加个过滤条件(比如日期小于具体值)
"FilterString": [{"FieldName":"F_PYBU_Date","Compare":"32","Value":"2024-06-14 00:00:00","Left":"","Right":"","Logic":"0"}],

image.png

问题来源:https://vip.kingdee.com/link/s/lRGDL       


2、 同步数据怎么操作

问题描述:

同步数据怎么操作。

比如我在本机登录BOS,连接局域网另一台电脑的账套,也可能连接本机账套。然后在单据头、单据体加了控件。

现在想把这个单据原样复制到另一台电脑的账套,另一台电脑可能需要向日葵连接,在那边登录。

总之,在BOS这块可能直连,如果不能直连就向日葵连接之后在远程电脑登录BOS。双方都有可能这样。现在想要同步过去,怎么操作。

是用下面这些菜单项吗?操作顺序是什么?

image.png

解决方案:

参考1:B获取A:当前登录数据中心B,需要打开A的应用,点击同步应用到数据中心,操作后再打开B的应用,点击更新数据中心到应用,保持数据中心与应用同步更新;
参考2:A获取B:当前登录数据中心A,需要打开B的应用,点击同步应用到数据中心,操作后再打开A的应用,点击更新数据中心到应用,保持数据中心与应用同步更新;

之前有回答了一个贴,希望能给与参考:

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

问题来源:https://vip.kingdee.com/link/s/lRG9i       


3、 那几个ID字段是啥意思,我只用过FID

问题描述:

FMasterId、FID、FPKID、 FENTRYID,另外FENTRYID、FSEQ是不是有点重复?

解决方案:

FMasterId: 组织隔离字段,同一个物料分配后该字段相同; FID:单据头表主键; FPKID:多语言表主键; FENTRYID:单据体表主键, FSEQ是行号 ; FDetailID:子单据体表主键;

问题来源:https://vip.kingdee.com/link/s/lRYzJ       


4、 简单账表显示隐藏列的问题

问题描述:

问题一:简单账表中显示隐藏列的这些字段在数据源我sql部分是不是得全部取?
问题二:显示隐藏列有些字段应该是属于维度吧?比如说像即时库存,我显示仓库的话就是按仓库分组出来的数量,如果不显示仓库就是各物料的总数量,如果有些字段是属于维度的话,勾上或不勾影响汇总的话,这部分处理的动作是BOS封装好的还是要代码处理的

image.png

解决方案:

问题一:简单账表中显示隐藏列的这些字段在数据源中必须存在,否则会提示不存在该列。

问题二:即时库存查询并不是简单账表,而是单据列表,是通过列表插件构造临时表来加载的单据列表,在BOS里面是有一个单据模型的,自动根据显示隐藏列完成分组汇总,是列表插件构造临时表数据的时候自动处理的。

开发简单账表要能实现这种效果,建议使用过滤参数来控制动态分组汇总,这些动态分组的字段不要设置到显示隐藏列里面,或者通过插件来动态添加删除显示隐藏列。
参考:账表.二开方案.过滤界面动态增加显示隐藏列

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

问题来源:https://vip.kingdee.com/link/s/lRYhA       


5、 有没有api大神可以讲解下这个接口的使用场景

问题描述:

这个是我在社区里面找到的一个接口,因为我调用生产订单结案接口总是报错,用了这个接口就成功了,但是文档里面并没有关于这个接口的解释生产订单行执行api接口说明 (kingdee.com)  ,有没有大佬可以解答一下我的疑惑

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

image.png

解决方案:

5.1.19 通用操作接口
服务地址:

http://ServerIp/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteOperation.common.kdsvc  

详情看下面这个帖子。

金蝶云星空WebAPI接口说明书_V6.0:

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

问题来源:https://vip.kingdee.com/link/s/lRYlb       


6、 查询简单账表,得到个默认的1900-01-01 00:00:00.000,怎么替换掉

问题描述:

因为没有日期,所以向日期字段插入的是空'',但是查询的时候就给返回个 1900-01-01 00:00:00.000,但是下面的简单账表语句中,也没机会替换成'',直接就插入临时表了,怎么解决?

public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
        {
            base.BuilderReportSqlAndTempTable(filter, tableName);
            sql = string.Format(@"/*dialect*/
                    select distinct
                    ruchangriqi, chandi, leibie,  wuliaobianma, 
                mingcheng, pihao, rukuzhong, chukuzhong,
                chukuriqi, quxiang, kucun,
                TiO2, CaO, ZrO2, SiO2,  Al2O3,  Fe2O3, MgO,
                Cr2O3, P2O5, LOI, shuifen, ershimu, sanshimu,
                sishimu, wushimu, liushimu, bashimu, yibaimu,
                yibaiershimu, yibaisishimu, yibaiqishimu,
                erbaimu, zhengerbaisanshimu,  zhengsanbaiershiwumu,
                zhengsibaimu,  fusibaimu, FeO, Fe2O3_1, TFe,
                chunjinhong, S, C, P, V, Nb, AD, FR, UTh,
                beizhu, bencijiancezhongliang,
                    {0}
                    into {1}
                FROM  
                    tem_table
                ", seqFld, tableName);
     }

解决方案:

日期字段给null值即可。
例如:ruchangriqi=null

再进阶一层:
ruchangriqi=case when ruchangriqi = '' then null else ruchangriqi end
注释:为入厂日期字段再赋值= 如果入厂日期字段的原值为空文本,则给null值;否则,给入厂日期字段的原值。

再再进阶一层:
假设你的代码中的ruchangriqi是日期字段,则代码可以这样修改

public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)
        {
            base.BuilderReportSqlAndTempTable(filter, tableName);
            sql = string.Format(@"/*dialect*/
                    select distinct
                    ruchangriqi=(case when ruchangriqi = '' then null else ruchangriqi end), chandi, leibie,  wuliaobianma, 
                mingcheng, pihao, rukuzhong, chukuzhong,
                chukuriqi, quxiang, kucun,
                TiO2, CaO, ZrO2, SiO2,  Al2O3,  Fe2O3, MgO,
                Cr2O3, P2O5, LOI, shuifen, ershimu, sanshimu,
                sishimu, wushimu, liushimu, bashimu, yibaimu,
                yibaiershimu, yibaisishimu, yibaiqishimu,
                erbaimu, zhengerbaisanshimu,  zhengsanbaiershiwumu,
                zhengsibaimu,  fusibaimu, FeO, Fe2O3_1, TFe,
                chunjinhong, S, C, P, V, Nb, AD, FR, UTh,
                beizhu, bencijiancezhongliang,
                    {0}
                    into {1}
                FROM  
                    tem_table
                ", seqFld, tableName);
     }

问题来源:https://vip.kingdee.com/link/s/lRY71       


7、 公共过滤能不能根据下拉列表控制其他下拉列表的内容

问题描述:

image.png

image.png

有5个简单账表,分别是产品钛、产品锆、产品碳、原料钛、原料锆。5个账表的字段总体差不多,只有数量和名称略有差别。如果把所有的化验成分都放在一起,就有点乱,使用乱,开发维护也乱。现在想,能不能把化验成分下拉列表中的内容,根据选择的账表的变化而变化,怎么弄?

解决方案:

定义一个全局变量字段:类型
根据类型设置不同的取数SQL以及构建不同的列名

image.png

image.png

问题来源:https://vip.kingdee.com/link/s/lRY79       


8、 自定义简单账表,如何设置 数据权限?

问题描述:

比方说这个报表,计划可以看所有部门,国际一部客服只能看一部的,二部客服只能看二部的,内销客服只能看内销的,销售3大部门的数据权限都要分开来的

image.png

解决方案:

可以在权限配置中,设置数据规则。
然后在账表服务插件中读取当前用户的有权限的数据范围,然后转换成过滤条件拼接到报表的取数SQL中。

image.png

问题来源:https://vip.kingdee.com/link/s/lRY6r       



我创建了<<协同开发,轻松入门>>的学习清单,推荐给你,和我一起学习交流吧!

<<协同开发,轻松入门>>


查看往期精选:

【汇总】金蝶云·星空-协同开发 | 产品应用典型/热门问答精选


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

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0