电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

核算维度录入实现两个维度之间联动的二开方案

来源:金蝶云社区作者:金蝶2024-09-238

核算维度录入实现两个维度之间联动的二开方案

        录入核算维度时,有可能两个维度之间存在某个关联关系,如员工和部门,银行和银行账号之间,为了提高录入效率,需要在它们之间建议联动关系,当选择A员工,自动带出该员工所在的部门,当录入了D部门时,如果该部门员工仅一人,则自动带出该员工。为了实现这一联动功能,二开时,关键是从DataChanged事件着手,通过代码来限定相关维度的取值。下面以二开银行与银行账号的联动功能为例。

        首先,二开插件应该继承AbstractDynamicFormPlugIn类,并覆写DataChanged方法,如下所示:

    [Description("凭证的维度数据录入 客户端插件核算维度联动演示")]

    public partial class ShowFlexGLCustomPageEdit_Demo : AbstractDynamicFormPlugIn

    {

        /// <summary>

        /// 数据改变时处理相关业务逻辑

        /// </summary>

        /// <param name="e"></param>

        public override void DataChanged(DataChangedEventArgs e)

        {

            //银行账号改变时自动带出银行

            this.BankAcntChanged(e);

            //银行改变的时候,如果只存在一个账号,则自动带出银行账号

            this.BankChanged(e);

            base.DataChanged(e);

        }

    }

        在BankAcntChanged方法中需要处理以下内容:
1,获取当前科目的维度 :
Dictionary<string, List<string>> dctSourceAndFelxNumber = GetFlexNumber(e.Field, e.Row, "BD_Bank", "CN_BANKACNT");

2,获得新的银行账号值:
long lBankCNTID = this.GetValueId(e.NewValue);
3,通过新的银行账号值,从数据库查出该账号对应的银行:
SELECT B.FMASTERID FBANKID FROM T_CN_BANKACNT BA JOIN T_BD_BANK B ON B.FBANKID=BA.FBANKID WHERE BA.FBANKACNTID=@FBANKACNTID
注意,核算维度用到的通过是基础资料的FMASTERID,而不是它的主键ID。
4,获得银行维度对应的界面上的字段:
var bankFields = GetFormFields(e, "BD_BANK", dctSourceAndFelxNumber["BD_BANK"]);

5,设置界面上的银行字段的值为查询出来的银行ID:
foreach (var bankField in bankFields)
{
        string key = string.Format

核算维度录入实现两个维度之间联动的二开方案

录入核算维度时,有可能两个维度之间存在某个关联关系,如员工和部门,银行和银行账号之间,为了提高录入效率,需要在它们之间建议...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信