【第1-8期】金蝶云·星空-协同开发 | 产品应用典型/热门问答精选 2023年5月发布原创
金蝶云社区-OUT_MAN
OUT_MAN
141人赞赏了该文章 6424次浏览 未经作者许可,禁止转载编辑于2023年09月25日 16:20:39
封面

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


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

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


查看往期精选:

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


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

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


【第8期】

  更新日期:2023-5


1、 弹窗提示后点否,e.Cancel无效果,本次操作还是会执行成功?

问题描述:


image.png

想弹出一个警告提示,但是用ShowWarnningMessage没有效果。改成用图片中的方式出现了一个问题,我打断点发现点否确实会进来,e.Cancel也变成的true,但是我的操作还是执行成功了(本意是点否时,让本次操作执行失败)。我想知道这是什么原因?

解决方案:

showMessage 是异步回调机制。

弹出提示框之后,下面的代码会继续执行,相当于分成了2条线执行。

是不会阻断当前程序等用户选择是否之后再继续往下的。

正确的做法是,进入ShowMessage前就要先Cancel掉,然后在回调里面根据是否接管下面的程序。

参考下面的代码:

image.png

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


2、  BOS已经修改了字段宽度,但是查数据库还是没变

问题描述:

这个字段宽度原来是20,现在BOS里面改了50,但是数据库没有生效,是需要重启吗?

控件类型是下拉列表,枚举值是汉字。现在数据库中的字段类型是varchar(20)。

image.png

解决方案:

BOS和数据库字段的宽度需要同时手动修改;

参考官方知识:

单据中字段长度如何修改

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


3、 公有云一个sql更新任务可以写多个更新语句吗?

问题描述:

公有云一个sql更新任务可以写多个更新语句吗?

解决方案:

可以。每个语句以分号(“;”)结尾。

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


4、 bos单据扩展删掉了怎么恢复,能用账套备份恢复吗

问题描述:

bos单据扩展删掉了怎么恢复,能用账套备份恢复吗?

解决方案:

如果是协同开发平台的话可以通过svn恢复如果是私有云的集成平台,有备份的情况下参考下面链接:

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

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


5、 本地星空管理员密码被锁住了,有没有什么快捷的方法解决?

问题描述:

多人使用时,其他人把管理员administrator密码忘了,试了几次后导致账号被锁。

解决方案:

用户密码输入错误次数过多被锁定,如何解锁

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

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


6、 请问自动下推后如何触发消息?

问题描述

A单据自动下推成B单据后,如何以消息通知发给某些用户,消息内容要带B单据的单据编号消息配置B单据的“保存”、“暂存”、“新增”都无法触发消息推送

image.png

解决方案:

触发时机,调整成“操作成功即触发”即可。

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


7、 保存操作,调用存储过程更新数据库数据,怎么样让前台页面也实时更新

问题描述:

在操作服务插件里面的EndOperationTransaction时间调用的存储过程对数据更新,怎么样让前台不用退出重进就可以刷新前台数据呢


解决方案:

通过SQL更新数据,只能在保存菜单的点击事件中再加一个刷新操作。

image.png


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


8、 行数据的显示和隐藏问题,如何通过某个复选框控制单行数据的显示和隐藏,而不是字段的显示和隐藏

问题描述:


image.png

image.png

解决方案:

试试下面的代码:(有个问题,勾选隐藏之后,想显示出来怎么办)

 EtryGrid grid = this.View.GetControl<EntryGrid>("单据体唯一标示");
grid.SetFilterString("")

参考:插件单据体支持的过滤条件(SetFilterString)设置

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




【第7期】

  更新日期:2023-4


1、 云之家账号登不上协同开发平台,账密没有错。

问题描述:

云之家账号登不上协同开发平台,账密没有错。

解决方案:

建立账号后先同步

image.png

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



2、 如果是自己的测试环境(非购买产品),如何申请许可文件?

问题描述:

如果是自己的测试环境(非购买产品),如何申请许可文件?

解决方案:

临时许可有3个账号,可以用三个月左右。具体可以参照官方这个帖子,步骤很详细了。

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

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

 


3、 协同平台中的采购入库单无法签出

问题描述

点击签出没有反应

image.png

解决方案:

这个有人签出了,没签入回来。你当然没法签出了。

image.png

这种带小蓝人图标的,是被签出的,而且不是你这个号签出的。查看SVN修改记录,可以看到是哪个号签出的。

image.png

找到那个号,签入回来。然后你才可以签出,进行修改。

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

 


4、 如何在表单插件中打开网页

问题描述:

如何在表单插件中打开网页

解决方案:

在表单插件中构建url并按照如下代码:

var paras = new JSONArray();

            var jo = new JSONObject { ["url"] = url, ["title"] = "查看图纸" };

            paras.Add(jo);

            iBillView.AddAction("openUrlWindow", paras);

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



5、  如何通过代码清除缓存 

问题描述:

如何通过代码清除缓存

解决方案:

        /// <summary>

        ///  清除缓存

        /// </summary>

        /// <param name="billId">单据标识</param>

        /// <param name="context">上下文</param>

        /// <param name="ids">内码</param>

        public static void RemoveCache(Context context, string billId, List<string> ids)

        {

            if (ids == null || ids.Count == 0)

                return;


            var cachedFormMetaData = MetaDataServiceHelper.GetFormMetaData(context, billId);

            using (var dataEntityCacheManager =

                   new DataEntityCacheManager(context, cachedFormMetaData.BusinessInfo.GetDynamicObjectType()))

            {

                dataEntityCacheManager.RemoveCacheByPrimaryKeys(ids);

            }


            CacheUtil.ClearCache(context.DBId + cachedFormMetaData.BusinessInfo.GetForm().Id,

                CacheRegionConst.BOS_QuickBaseDataCache);

        }

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



6、 怎么在操作服务插件中忽略事务,强制保存至数据库中?

问题描述:

怎么在操作服务插件中忽略事务,强制保存至数据库中?

解决方案:

    using (var trans = new KDTransactionScope(TransactionScopeOption.Suppress))

                {

                    ThirdPartySystemServiceHelper.WriteLog(ctx, new ThridSysLogInfo()

                    {

                        Issuccess = sendPostRequest.IsSuccessful,

                        MsgInfo = bodyStr,

                        MsgSource = "OA",

                        MsgSummary = $"BillNo=[{billNo}];URL=[{url}]",

                        SendTime = nowTime,

                        ReceiveTime = nowTime.AddMilliseconds(stopwatch.ElapsedMilliseconds),

                        ResultInfo = content,

                        InterfaceType = ThirdAppInterfaceType.OA.CustomToInt(),

                    });

                    trans.Complete();

                }

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



7、 各位老师好,我公司组织名称比较长,想增加一个“组织简称”的字段,请问一下怎么增加.

问题

各位老师好,我公司组织名称比较长,想增加一个“组织简称”的字段,请问一下怎么增加

解决方案:

1、BOS中扩展【组织机构ORG_Organizations】,添加组织简称。

2、把要用组织简称的业务表单扩展,在组织字段中引用组织简称。添加一基础资料属性字段,基础资料字段属性指定为组织字段,关联基础资料字段名指定为组织简称

image.png

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



8、 如何将开发好的执行计划并入协同开发的补丁包中

问题描述:

开发了好多执行计划,需要打补丁的时候自动加入到系统的定时计划中,如何操作?

解决方案:

构建成SQL脚本就行了。参考下图:

image.png

image.png

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




【第6期】

  更新日期:2023-3


1、数据中心恢复同是星空8.1,该数据库是在运行版本 15.00.2000 的服务器上备份的

问题描述

我现在是台式电脑上的数据中心都是8.1.0.20230112版本,可就是不让恢复呢请教 数据库是在运行版本 15.00.2000是在哪里看版本,这个怎么处理才能恢复,谢谢。

image.png

解决方案:

这个是指数据库的版本, 12.x对应的是sql 2014版本, 15.0对应的是sql 2019

简单一点,就是都使用2019的版本

image.png

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


2、手机云之家能选择正式环境的测试账套登录测试

问题描述:

移动端怎么选择正式环境的测试账套进行登录操作呢

解决方案:

image.pngimage.png

image.pngimage.png

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


3、云星空登录正常,但钉钉轻应用登陆时,显示获取第三方用户信息失败,失败原因,远程服务器返回错误:(404)未找到

问题描述:

云星空登录正常,但钉钉轻应用登陆时,显示获取第三方用户信息失败,失败原因,远程服务器返回错误:(404)未找到

image.png

解决方案:

iis-----defualt web site -----右键 编辑绑定
新增配置:127.0.0.1 和对应的端口,即可,无需重启iis,如图所示:

image.png

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


4、 自己画的报表,怎么在代码里面设置报表的列宽

问题描述:


image.png

解决方案:

image.png

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


5、 目前星空有自动备份的功能吗

问题描述:

目前星空有自动备份的功能吗

解决方案:

星空备份注意事项

1、管理中心仅支持备份SQL Sever数据中心,备份Oracle数据中心需由DBA在对应服务器上处理。

2、管理中心不支持自动备份,自动备份请采用数据库自身方案。

3、数据中心备份如果后续需要恢复,可参考在管理中心恢复数据中心

4、公有云备份恢复需由企业管理员登录金蝶云·天梯,参考天梯服务指南的数据中心备份、数据中心恢复操作。

image.png

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


6、单据转换插件,获取不到目标单的明细数据包?

问题描述:


image.png

解决方案:

1、根据你的代码,从headObj.DataEntity里面就可以进一步获取明细了。

var en=headObj.DataEntity["单据体ORM实体标识"];

2、var Entity=e.Result.FindByEntityKey("FBillHead");

foreach(var headObj in Entity)

{

    var en= headObj.DataEntity[ "单据体ORM实体标识" ];//这里是实体标识哦

}

这样是可以获取到数据的哦,你先取消你的插件,下推出来的单据,明细里面有数据吗?

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


7、BOS可以登录,进入应用时报错,重新下载SVN登录还是不行,求大佬解答

问题描述:

发生时间: 2023-03-07 09:20:26错误来源: System.Windows.Forms错误信息: 'D:\WorkSpace\甘李药业' is already locked.===================================================调用堆栈:   at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)   at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)   at Kingdee.BOS.WinForm.KDWaitForm.PrivateDoTask(Form owner, Action act)   at Kingdee.BOS.WinForm.KDWaitForm.OnShown(EventArgs e)   at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)   at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)   at System.Windows.Forms.Control.InvokeMarshaledCallbacks()错误数据: System.Collections.ListDictionaryInternal

解决方案:

协同开发平台SVN锁定处理

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

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

     

8、请问一下金蝶的安装包里面的各个文件夹都是干嘛用的呀 请写详细一点 会及时采纳

问题描述:


image.png

解决方案:

managesite 管理中心站点

website   业务中心站点

BBCMallSite BBC站点

QingSite  轻分析站点

RetaiKtmSite  零售站点

Tools 里面有补丁安装工具

其中BBC站点和零售站点和轻分析都运行在ApacheTomact_k3cloud上,依赖这个服务。

services  就是服务

Fileservice  文件服务

其它几个忘记了,主要的就是这些。

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


【第5期】

  更新日期:2023-2


1、关于部署包问题

问题描述:

请教一下自己开发的正常使用的部署包能不能在BOS设计器里面看看里面有什么内容呀

  1. 能不能打开

  2. 可以的话在哪打开最好带截图(小白)

解决方案

安装包(.kdpkg文件)在部署有云星空管理中心的环境可以双击打开。

①找个路径新建一个文件夹,例如,桌面上。

②双击打开安装包,修改解压路径(数据中心那个地址改成一个新建文件夹路径).

③按F2即可解压补丁包内容到指定目录。

截图看下面帖子链接里的。

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


2、Windows无法启动k3CloudManager服务,错误2系统找不到指定文件

问题描述


image.png

解决方案:

两个办法都可以尝试一下:

1、最简单的办法就是卸载云星空软件,重新安装一下,会自动安装这个服务。

2、或者按照官方的教程,手工安装一下这个服务项,试一下

image.png

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


3、信息中心的挂起状态是什么意思,各位大佬帮忙解释一下!

问题描述:


image.png

解决方案:

意思就是当前审批人不能解析出来,需要看看流程中 审批人条件设置.

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


4、启动开发环境报错500,换过端口

问题描述:

启动开发环境报错500,换过端口

image.png

解决方案:

分析处理过程

1、确认k3cloud站点可以正常访问;

2、打开事件查看器,查看windows日志-应用程序下,有如下报错;

详细操作图片见下面链接:

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


5、各位大佬,这种写了这么多,有什么优化的方法吗?

问题描述:


image.png

image.png

解决方案:

字段多,就是这样的,没法优化。

不然就用字符串转换成资料字段对象,也是一样的要写这么多代码的。

还有一个最原始的办法:

就是直接把所有字段都写在RequestObj的字符串里面,然后通过占位符,format来拼接实际数据。

类似下图写法:

image.png

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


6、引入插件后重启iis后,登录报错 

问题描述:

我写好一个操作服务插件,注册绑定后重启iis,K3/Cloud/页面报错,求大佬指教(金蝶V8.1企业版,本地蓝海账套)

image.png

解决方案:

image.png

我的电脑-鼠标右键-管理,再到上图内找到iis或者k3cloud的错误消息,在下方详细信息内有对应的错误原因,一般这种情况是因为您的二开插件引用dll不规范导致的

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


7、问题如下,金蝶云星空WEBAPI像使用组织这种传FNumber的咋C#应该如何配置Json文件,请大佬指教一下。

问题描述:


image.png

解决方案:

按照楼主的写法要先获取Model对象: modelObj=requestJObject["Model"as JObject;

Model也是一个JObject,往Model里面添加一个个字段即可。

  • 添加普通字段:modelObj.Add("字段标识","字段值");

  • 添加资料类型的字段(用编码传值),要先构建一个JObject对象,把对象添加到Model中

    例如,创建组织,CreateOrgObj=new JObject();

    CreateOrgObj.Add("FNumber","组织编码");//添加组织编码到组织对象中

    modelObj.Add("FCreateOrgId",CreateOrgObj);//把组织对象添加到Model中

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


8、使用WEBAPI调用云星空的接口实现集成,出现Newtonsoft.Json版本问题。

问题描述:


image.png

解决方案:

云星空站点bin目录下的Newtonsoft.Json复制到代码工程中。代码工程中引用云星空站点bin目录下的Newtonsoft.Json

详情见下面帖子。

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



【第4期】

  更新日期:2023-1


1、协同开发平台:点击【开发】或者新建应用都报一样的错

问题描述:


image.png

解决方案:

经和金蝶的老师处理后,是公司的代理服务器的代理设置方式的问题。

新的解决思路,如遇到此问题,可以查看一下是否是服务器环境的问题。

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


2、开发插件在本地环境运行无误,部署到公有云后无法正常运行

问题描述:
插件之前有上传到公有云上,可以正常运行。本次在原来的基础上新增了2行取值(本地环境测试没问题,能够正常运行),但是在公有云点击没法正常运行。昨天重新打包部署了插件,但是系统直接没法登录了。

image.png


解决方案:

  1. 插件代码没问题,但在生成解决方案的时候目标平台选错了。所以导致打开环境的时候报错,出现乱码。共有云为x64系统,生成解决方案时目标平台选了x86。后续选择了any cpu,x86和x64的操作系统都能适配。

  2. 进度条没滚动是进度太慢,每次等的时间不够,最后出现了报错:二进制字符终止,修改了数据库对应的字段长度就好了(此处修改的字段是规格型号)

  3. 进度条没法关闭。这个在本地环境的时候是没问题的,但是不知道为什么打上去就没法关闭了。

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


3、BOS平台进不去,协同平台怎么添加反过账

问题描述:

7.7版本 BOS平台登录不进去了,进协同平台如何添加反过账,社区里面的都是BOS平台进去添加的,协同平台怎么增加呢

解决方案:

详见以下帖子的图示操作。

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


4、关于BOS中的标识、字段名、实体属性名的开发应用简介

问题描述:

BOS中有三个迷惑的"标识",最近看到社区有小伙伴在咨询"关于BOS中的标识、字段名、实体属性名的开发应用"。

官方知识有一个简单的介绍https://vip.kingdee.com/link/s/lpIcc ,

结合个人理解,开发相关具体用法简单介绍一下。

解决方案:

详情见以下帖子。

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


5、BeforeImportData方法取到的表丢失第一行数据

问题描述

在excel中是1行表头9行明细,导入后进入调试发现只有8行明细

解决方案

标准引入功能是就标准的引入模板来解析Excel表格的,而标准的引入模板,数据行是从第3行开始的。

如果要做自定义Excel引入功能可以参考:知识分享 - 引入单据体数据

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



6、表单插件.怎么样才能删除或修改只读的数据包里的数据

问题描述:

调用单据转换获取到了目标单的数据包,但数据包为只读状态,不允许赋值,怎么样才能删除或修改只读的数据包里的数据,目前思路是复制一下数据包里的数据给到新的数据包,再删除修改新的数据包里的数据,在用新的数据包当接口的参数,麻烦问下在代码中该如何解决

解决方案:

foreach (var dataEntity in targetObjs)
                {
                    //获取单据体
                    string entityKey = "FEntity";
                    var entity = this.View.BusinessInfo.GetEntity(entityKey);
                    //获取数据集合
                    var objs = this.Model.GetEntityDataObject(entity);
                    int hs = this.View.Model.GetEntryRowCount("FEntity");
                    DynamicObjectCollection optRptEntry = dataEntity["OptRptEntry"] as DynamicObjectCollection;
                    //遍历工序计划单据体
                    DynamicObjectCollection optRptEntryTemp = new DynamicObjectCollection(optRptEntry.DynamicCollectionItemPropertyType);
                    foreach (var opt in optRptEntry)
                    {
                        DynamicObject tempRow = ObjectUtils.CreateCopy(opt) as DynamicObject;
                        optRptEntryTemp.Add(tempRow);
                    }
                    optRptEntry.Clear();
                    //遍历表单单据体
                    for (int i = 0; i < objs.Count; i++)
                    {
                        //当工序计划内码=表单的工序计划内码时,把表单的完工数量附加到数据包的行数的FinishQty字段上
                        DynamicObject d = (from p in optRptEntryTemp where Convert.ToInt64(p["OptPlanOptId"]) == Convert.ToInt64(objs[i]["F_gxjhzdjtnm_int"]) select p).FirstOrDefault();
                        if(d != null)
                        {
                            d["FinishQty"] = Convert.ToDecimal(objs[i]["F_wgsl"]);
                            optRptEntry.Add(d);
                        }
                    }
                }

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


7、 EndOperationTransaction怎么判断是否点击了按钮?

问题描述:

image.png

判断是否点击了VAMX_SubBtn这个按钮

解决方案:


操作服务插件只能判断,触发了某种操作,至于这个操作是不是点击按钮触发的,在操作服务插件中是无法直接判的。

可以用表单插件或者列表插件传递参数到操作服务插件中进行判断。

可以参考:操作执行前传递自定义的用户参数给服务插件


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


8、  二次验权密码是在哪个地方设置的,是否可以修改。

问题描述:

image.png


解决方案:

用Administrator登录,在【单据参数配置】中设置启用二次验权。

另外,二次验权的方式,是在管理中心设置的。

参考 :提交网银付款二次认证配置

image.png


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



【第3期】

  更新日期:2022-12


1、过滤条件这里的条件页签增加存货类别字段过滤,怎么在插件里把条件取出来呢

问题描述:
过滤条件这里的条件页签增加存货类别字段过滤,怎么在插件里把条件取出来呢?

image.png

解决方案:


  1. image.png

  2. BuilderReportSqlAndTempTable方法中用如下方法获取过滤条件

  3. string filterString = filter.FilterParameter.FilterString;//条件

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


2、 自定义webApi,构造的Context, 如何跳过验证码的输入,或获取当前登录状态下的验证码并赋值

问题描述:
写自定义webapi的时候,重新构造了Context,由于登录的时候需要输入验证码,每次调用的时候返回值都是null(WebApiContext.ctx  和 WebApiContext.ctx2 ),但是取消验证码功能后就可以正常使用了。请教大佬,如何在不取消验证码的情况下来构造Context。

解决方案:


  1. loginInfo.AuthenticateType = (AuthenticationType)13;

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


3、BillShowParameter中怎么修改弹出框的标题?

问题描述:


image.png

解决方案:

1、自定义参数
billShowParameter.CustomParams.Add("TYPE","TRUE")

2、产品标识配置注册单据插件实现AfterCreateNewData方法,在方法中获取自定义参数:

string type = this.View.OpenParameter.GetCustomParameter("TYPE").ToString();

if (type.ToUpper() == "TRUE")

            {

                this.View.SetFormTitle(new Kingdee.BOS.LocaleValue("标题"));

            }

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


4、 DynamicObject 和 DynamicObjectCollection有什么区别,在二开中应用的场景有什么不同?

问题描述:
DynamicObject 和 DynamicObjectCollection有什么区别,在二开中应用的场景有什么不同

解决方案:

  1. DynamicObjectCollection里面有多个或者1个DynamicObject 。

  2. 是DynamicObject集合,相当于是DynamicObject 的 数组。

  3. 开发应用参考:https://vip.kingdee.com/link/s/lpI7l 

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


5、 webapi会提示已审核单据不允许上传文件

问题描述:
{"ResponseStatus":{"ErrorCode":500,"IsSuccess":false,"Errors":[{"FieldName":null,"Message":"已审核单据不允许上传文件!","DIndex":0}],"SuccessEntitys":[],"SuccessMessages":[],"MsgCode":11}}在云星空里面,已审核状态已经是可以上传附件的,但是webapi会提示已审核单据不允许上传文件,请问api是要加什么字段吗?

解决方案:

  1. 经过查证,webapi接口上传文件确实已审核不能上传文件,

  2. 2022年6月份的补丁后面已经修改了上面的验证;

  3. 建议

  4. 如果可以升级,升级到6月30号发布的补丁

  5. 或者不使用api接口,参考下面帖,自行写上传文件接口

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

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


6、如何获取同步变更BOM所勾选的生产订单数据包以及状态呢,如果开工变更BOM便自动发送给云之家指定人员

问题描述:


image.png

解决方案:

通过以下代码可以获取到,点击同步更新时,传到更新页面的生产订单明细ID:

List<long> moEntryIds = this.View.OpenParameter.GetCustomParameter("EntryIds") as List<long>;

但是,最终更新的要以用户勾选确定更新的生产订单为准,所以 还是获取更新界面单据体中勾选的生产订单。

循环单据体就可以了,参考如下代码:

DynamicObject billObj=this.View.Model.DataObject;
DynamicObjectCollection en = billObj["单据体ORM实体标识"] as DynamicObjectCollection;
foreach (var r in en)
{
     string isSelected = r["复选框实体属性标识"] + "";
     if (isSelected == "1" || isSelected.ToUpperInvariant() == "TRUE")
     {
          string selectMoBillNo = r["生产订单编号实体标识"] + "";
          string selectMoBillSeq = r["生产订单行号实体标识"] + "";
          //或者看下有没有隐藏字段,生产订单明细内码ID,也可以获取这一个字段进行匹配。
       }
}

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


7、 DBUtils要引用Kingdee.BOS.App.Data.dll类,没找到Kingdee.BOS.App.Data

问题描述:
CLOUD的版本是v7.3,在cloud\website\bin里面只找到Kingdee.BOS.App.dll,没找到Kingdee.BOS.App.Data.dll,用不了DBUtils,请问要如何安装获取Kingdee.BOS.App.Data.dll类

解决方案:


  1. 引用Kingdee.BOS.App.Data.dll就行

  2. image.png

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


8、启动开发平台提示 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。

问题描述:
服务器跟协同开发没在同一台电脑。协同开发平台是通过外网访问到服务器的。服务器电脑刚打了最新的补丁(PT-146891)。协同平台也搭建了同样版本的环境。我的电脑是WIN10 专业版 64位。协同开发平台右击选择“启动开发平台”后,浏览器会在空白界面一直卡顿,大约在半个小时左右,界面显示500错误。

image.png

解决方案:

  1. 问题解决了,是群里一位大神告诉我的方法。

  2. 上述问题 将新的 oracle的dll文件替换掉目录下的dll文件。
    我用的是附件中的dll文件。

  3. 替换掉文件后,还是会报错误,这次报的错误是下面这个。

  4. image.png

  5. 在bin 目录下找到这个文件,然后删除。

  6. 再重新启动 开发环境就正常了。

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




【第2期】

  更新日期:2022-11


1、ISysReportService的GetData()报对象不存在错误?

问题描述
语句DataTable dt = sysReporSservice.GetData(ctx, reportMetadata.BusinessInfo, p);
在K3cloud 7.5版本里运行正常,升级8.0后,
报如下错误:"对象名 'TMP833E0C90541211ED80E9E9D9448' 无效。

解决方案:

把 

DataTable dt = sysReporSservice.GetData(ctx, reportMetadata.BusinessInfo, p);

换成

MoveReportServiceParameter param = new MoveReportServiceParameter(ctx, reportMetadata.BusinessInfo, Guid.NewGuid().ToString(), p);

DataTable dt = sysReporSservice.GetListAndReportData(param).DataSource;//简单账表使用GetReportData方法 

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


2、开发插件在本地环境运行无误,部署到公有云后无法正常运行?

问题描述:
插件之前有上传到公有云上,可以正常运行。
本次在原来的基础上新增了2行取值(本地环境测试没问题,能够正常运行),但是在公有云点击没法正常运行。
昨天重新打包部署了插件,但是系统直接没法登录了。

解决方案:

  1. 插件代码没问题,但在生成解决方案的时候目标平台选错了。所以导致打开环境的时候报错,出现乱码。共有云为x64系统,生成解决方案时目标平台选了x86。后续选择了any cpu,x86和x64的操作系统都能适配。

  2. 进度条没滚动是进度太慢,每次等的时间不够,最后出现了报错:二进制字符终止,修改了数据库对应的字段长度就好了(此处修改的字段是规格型号)

  3. 进度条没法关闭。这个在本地环境的时候是没问题的,但是不知道为什么打上去就没法关闭了。 

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


3、python写了一个操作服务插件,用于在保存前清空子单据体的数据,提示错误信息:集合已修改;可能无法执行枚举操作。

问题描述:
python写了一个操作服务插件,用于在保存前清空子单据体的数据,提示错误信息:集合已修改;可能无法执行枚举操作。

解决方案:

  1. 不能在循环一个集合的时候又删除集合里面的元素。

  2. 正确的做法是,定义一个List[int],然后先循环记录下需要删除的索引值,然后再循环这个索引值List,逐行删除。

  3. 如果是清空所有数据的话,直接:subEntityRows.Clear(); 就可以了

  4. 另外,你这行取子单据体的代码:

  5.  subEntityRows  = e.DataEntitys[0]["OptRptEntry"][0]["ProcInterSettleSub"] 
  6. 只能取到第一个单据的第一行单据体的子单据体数据包或,操作子单据体数据包,要循环父级的单据体逐行处理。

  7. 如果只删除满足某个条件的行,参考如下代码:

  8. 尽量不要从网页复制代码,会有格式问题。

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


4、BOS平台进不去,协同平台怎么添加反过账?

问题描述:
 7.7版本 BOS平台登录不进去了,进协同平台如何添加反过账,社区里面的都是BOS平台进去添加的,协同平台怎么增加呢

解决方案:

详细操作见帖子,每一步都有截图。

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


5、关于BOS中的标识,绑定实体属性,ORM实体名的开发应用场景

问题描述:
  在BOS中的每个字段中,都有标识和绑定实体属性。  同时在BOS的每个单据体中,都有标识和ORM实体名,在开发代码中,好像有些时候用标识,有些时候用绑定实体属性。不是很理解。现在附上一段代码,请看看我的理解是否正确

解决方案

看到楼主这个问题,相信也是很多初学者的疑惑,针对楼主的问题,我写了一篇文章分享了一下个人见解。

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

对于楼主的示例代码和疑惑:粗暴理解来看是对的,只要是在DynamicObject对象中操作字段都是用实体属性名,而在其他地方基本都是用标识。绝大多数场景下都满足这个结论。

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


6、没有扩展的业务单据在BOS平台显示已签出并且无法签入,下级扩展出来的单据也无法签入

问题描述:

image.png

  

解决方案:

这个是bos的bug,应该是卡了跳过校验了,理论上来说KD那层是签出不了的。

处理方法:去表单所在的文件夹,用svn签入就可以了!

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


7、特定客户、特定操作账号的BOS签入签出无效

问题描述:

image.png

 签出后没有报错,但是无效,仍然是只读;新扩展的单据签入也无效。
 只在本机(账号)、该客户的星空BOS协同系统出现;
 本机(账号)其他客户的星空BOS协同可以正常签入签出;
 其他机器(账号)该客户的星空BOS协同可以正常签入签出;
 在同事电脑上登本账号也可以正常签入签出。

解决方案:

已解决。 开发同事找了总部老师远程,拉取时不知道为什么默认地址多了个/,应该因此导致SVN同步失效以至于签入签出失败,重新拉取时删掉多余的/后解决。

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


8、 升级到最新版本后,helper.ExportToFile(listField, noticeTable);不可用了

问题描述:
之前实现生成Excel功能,代码如 https://vip.kingdee.com/article/82075063486192896 。
升级到最新版本之后,生成Excel的功能突然不可用了,全部都在执行helper.ExportToFile(listField, noticeTable);
报空指针错误,正式环境功能报错,急求总部老师帮忙。
错误日志如下:   
at Kingdee.BOS.ExcelToolHelper.ExcelHelper.SetNumberValue(SheetView& sv, Object value, Int32 row, Int32 col, IDynamicFormView view)   at Kingdee.BOS.ExcelToolHelper.ExcelHelper.ExportToFile(List`1 listHeaders, DataTable dataTable, String message)   at LH.K3.SCM.SAL.ScheduleService.NotQuotedNotice.GenerateExcel(DataTable noticeTable) in D:\Code\LHK3CloudPlugIn\LH.K3.SCM.SAL.ScheduleService\NotQuotedNotice.cs:line 123

解决方案:

SetNumberValue这个方法加了个view参数,如果view为空则会导致报错,故可以检查一下此方法的调用类ExcelOperation 其构造函数是否有传入view.

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



【第1期】

  更新日期:2022-10


1、8.0星空协同平台,“未引入”对象应该如何理解和处理?

问题描述:当我登入数据中心A,打开TS-LIVE应用时,出现“未引入”销售出库单的,并且销售订单扩展的功能也不存在,我应该怎么理解这个状况?如果我想把TS-LIVE应用中所有改动过的功能,同时反应在数据中心A和数据中心B,这是可行的吗,需要如何处理?谢谢。

解决方案:

一定要搞清楚两点:

未引入,指的是你数据中心有表单,协同云没有,引入后就相当于把表单提交到代码服务器了;

未加载,指的是协同云有,数据中心没有,加载后,就相当于把代码服务器的表单同步到数据库。

未引入是数据库中实际存在的,所以客户端登录生效;

未加载的是协同云有,数据库没有,所以客户端登录不生效。

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


2、签出报错,显示被锁定,代码160035

问题描述:签出报错,显示被锁定,代码160035

解决方案:

应该是要签出的文件被锁定了,可以找到文件所在目录,通过SVN解锁一下,试试。

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


3、协同平台打开应用的时候报错误。KD-Composite-Package.pkgdef

问题描述

image.png

解决方案:

打个临时补丁 TempPatch_V7_BOS.7.0.1630.12,补下在下面帖子附件里下载。

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



4、协同开发平台操作错了,删除俩个文件能不能回到?

问题描述:

image.png

解决方案:

可以的,你可以下载个svn,然后去你的表单文件,右边项目选中表单,点击右键到相应的文件夹;

然后在文件夹中选中相应的表单文件,点击右键找到svn log,然后再log中选中你要revert的版本;

直接revert就可以了;

然后svn commit一下文件;

去bos里面,选中表单,同步业务对象到数据库。


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



5、协同开发平台登录用户如何修改

问题描述:

image.png

解决方案:

协同云重新绑定以下星空账号就可以了!

具体的参考这里,更换金蝶云星空账号 (kingdee.com) 。

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


6、公有云,二开,如何切换到私有云?

问题描述:

之前是公有云,做了插件二开,表单插件;1、现在要搭建一个本地测试环境,如何把之前部署在公有云的二开插件,下载到本地?2、如何查看做了哪些公有云二开插件?

解决方案:

找到之前部署的部署包解压,如果是协同平台可以在构建历史中下载。天梯上也有个二开包下载。

协同平台在线构建,可以分析每个业务对象加了什么控件,启用了那些插件,可以参考链接:

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

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


7、协同平台显示签出了父级单据,想签出下面拓展子级单据显示需要签入,点签入和取消都报错

问题描述:

image.png


解决方案:
回滚后删除文件,重新update

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


8、开发人员和实施人员在不同的电脑上对账套进行操作,开发的项目如何才能不覆盖实施的更改并且把自己的开发部署到正式账套呢?


问题描述:

问题场景:客户需要开发一个功能,同时实施人员也需要根据客户的需求进入bos平台修改字段什么的。开发人员在自己的笔记本上搭建的环境,实施人员在服务器上进行的修改字段。

问题:开发人员开发好项目后,如何部署到正式账套呢?需要从服务器上拷贝最新的账套到本地环境 进行重新部署吗?若是拷贝了新的账套,那么在部署的时候 是选择将本地的数据同步到数据中心呢  还是有其他的操作呢?
若是不拷贝最新的账套,直接将本地打包好的开发包部署到服务器的话,版本应该不一致,补丁包应该打不成功吧。

若是在服务器电脑上登录自己的协同开发平台 到最新的账套,那么在同步自己修改的设置时如何不覆盖实施修改的字段呢。 实施人员 若是用协同开发平台和集成开发开发平台对于 开发人员部署来说有什么影响呢?

解决方案:

建议使用协同开发平台:

①开发和实施登录同一个协同开发项目应用 ,虽然分别连接不同的账套,但是协同云会通过签入签出统一控制同一单据的修改信息(通过统一的开发商代码)。

②在协同平台的管控下,2个人不能同时对一个单据操作,例如,张三签出了销售订单,李四就不能修改销售订单了,只能等张三签入之后,李四才能修改。

③单据签入时,就会把单据最新版本提交到协同平台,这样每次修改签出时,都是基于最新版本进行开发的。

④张三在A账套做单据修改签入后,李四在B账套签出时,会提示与协同平台的数据不一致,立即同步更新就行了。

⑤由于2个人的修改都是实时提交到协同云的,所以在协同云在线构建,生成补丁包,将补丁打到正式环境或者测试环境也不会出现被覆盖的问题。

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



赞 141