二开案例.表单插件.基础资料获取种子值

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

二开案例.表单插件.基础资料获取种子值

【应用场景】

基础资料进行二开时,如果不走平台提供的Save接口保存数据,此时,需要用户自行维护基础资料的各数据表的主键值。

【注意】

此案例仅适用于基础资料,不适用于单据


【案例演示】

供应商,获取各种表格的种子值(最新的,可用的,主键值)。


【实现步骤】

<1>编写表单插件,代码如下。

using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System.ComponentModel;
using System.Linq;
using System.Text;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【表单插件】基础资料获取种子值
    /// </summary>
    [Description("【表单插件】基础资料获取种子值"), HotUpdate]
    public class BaseDataGetSeqValueFormPlugIn : AbstractDynamicFormPlugIn
    {
        public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            // TODO
            if (e.BarItemKey == "GetSeqValue")
            {
                // 获取表的种子值=获取表的自增Id=获取表的自增主键值,每获取一次,种子值就会加1,以确保主键值不会重复产生
                // 种子值不是来自于当前数据表,而是来自于一个单独的种子表,一个数据表对应一个种子表,种子表名通常为数据表名的首字母t改为z,例如,数据表t_PUR_POOrder对应的种子表名为z_PUR_POOrder
                // 所有的基础资料的主表(单据头表)都是统一使用同一个种子表:Z_BAS_ITEM,基础资料的其它表则仍然使用各自的种子表。
                var log = new StringBuilder();
                // 取单据头
                var tableName = "T_BAS_ITEM";
                //var seqValue = new SequenceReader(this.Context).GetSequence(tableName, 1).FirstOrDefault();// 服务插件用这个方法
                var seqValue = DBServiceHelper.GetSequenceInt32(this.Context, tableName, 1).FirstOrDefault(); // 表单插件用这个方法
                log.Append(string.Format("表名:{0},种子值(内码):{1}", tableName, seqValue));
                log.AppendLine();
                // 取单据头多语言表
                tableName = this.View.BusinessInfo.GetEntity("FBillHead").TableName;
                tableName = tableName + "_L";
                seqValue = DBServiceHelper.GetSequenceInt32(this.Context, tableName, 1).FirstOrDefault();
                log.Append(string.Format("表名:{0},种子值(内码):{1}", tableName, seqValue));
                log.AppendLine();
                // 取单据体
                tableName = this.View.BusinessInfo.GetEntity("FBankInfo").TableName;
                seqValue = DBServiceHelper.GetSequenceInt32(this.Context, tableName, 1).FirstOrDefault();
                log.Append(string.Format("表名:{0},种子值(内码):{1}", tableName, seqValue));
                log.AppendLine();
                this.Model.SetValue("F_Jac_Remark", log.ToString());
            }
        }
    }
}

<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展供应商,新增字段,菜单集合新增菜单项,注册表单插件,保存元数据,开发完毕。




【功能验证】

<1>登录业务站点,打开供应商新增界面,点击菜单【GetSeqValue】,即可获取多张数据表当前可用的主键值。

---------------------------------------------------------------------------------------------------------













【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696


二开案例.表单插件.基础资料获取种子值

【应用场景】基础资料进行二开时,如果不走平台提供的Save接口保存数据,此时,需要用户自行维护基础资料的各数据表的主键值。【注意】此案...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息