PLM打开文档,提示文档是否存在于未生效的变更单中。
【应用场景】
打开文档后,提示文档是否存在于未生效的变更单中。
【案例演示】
文档已经添加到变更单中,变更单还未生效,打开文档后进行提示。
【实现步骤】
编写表单插件(如何编写二开插件配置等请参考:二次开发扩展程序开发之插件模式https://vip.kingdee.com/article/83591896433330944?productLineId=1
其他星空PLM开发指南也可以参考 【汇总】星空PLM二开指南(持续更新)https://vip.kingdee.com/article/329914697153905408?productLineId=1&isKnowledge=2
更多详细的金蝶云星空BOS二次开发指南:https://vip.kingdee.com/article/94751030918525696?productLineId=1&isKnowledge=2)
<1>编写表单插件,添加引用:
Kingdee.K3.PLM.Business.PlugIn;
Kingdee.K3.PLM.CFG.Common.BusinessEntity.Manager;
Kingdee.K3.PLM.Common.Core.Utility;
System;
System.ComponentModel;
C# 编码示例:
[Description("文档处于未生效的变更单中提示")]
public class DocumentStatusValidator:AbstractPLMBillPlugIn
{
public override void AfterBindData(EventArgs e)
{
//判断文档对象是否存在于未生效的变更单中
//如果满足条件就进行提示
//1、根据文档Id获取其关联的变更单Id
var docId = Convert.ToInt64(this.Model.DataObject["Id"]);
var docObj = BaseObjectManager.Instance(PLMContext).Get(PLMContext, docId);
var isChange = Convert.ToBoolean(docObj["isChange"]);
var isChangeObject = Convert.ToBoolean(docObj["isChangeObject"]);
//2、从变更对象表查询该变更是否生效,如果未生效则进行提示。需要用到的表及字段如下:
//T_PLM_STD_EC_ITEM(变更对象表)
//FID(管理变更单据Id),FBASEOBJECT(变更对象Id),FISEFFECTIVE(是否生效)
if (isChange)//文档已创建相应新版对象,变更单未生效
{
this.View.ShowNotificationMessage("当前文档存在于还未生效的变更单中!");
}
else if(!isChangeObject)//新版文档不做判断
{
string sql = string.Format("SELECT FID FROM T_PLM_STD_EC_ITEM m WHERE FBASEOBJECT={0} and FISEFFECTIVE=0 and EXISTS(" +
"SELECT 1 FROM T_PLM_PDM_BASE b WHERE b.FID=m.FID)", docId);
var re = Convert.ToString(PLMDBUtils.Instance.ExecuteScalar(PLMContext, sql, null));
if (!string.IsNullOrWhiteSpace(re))//变更单未生效
{
this.View.ShowNotificationMessage("当前文档存在于还未生效的变更单中!");
}
}
base.AfterBindData(e);
}
}
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>打开BOSIDE,找到单据【研发文档】。 扩展并注册二开的插件(注意,二开插件继承的是AbstractPLMBillPlugIn)
<4>保存后,在PLM业务类型初始化中,点击更新业务类型模型。文档库中打开关联未生效变更单的文档,即可看到最终效果。
PLM打开文档,提示文档是否存在于未生效的变更单中。
本文2024-09-23 03:02:32发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-156269.html