PLM打开文档,提示文档是否存在于未生效的变更单中。

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

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打开文档,提示文档是否存在于未生效的变更单中。

【应用场景】打开文档后,提示文档是否存在于未生效的变更单中。【案例演示】文档已经添加到变更单中,变更单还未生效,打开文档后进行提示...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息