リストクエリーを共有して、複数選択のインフラストラクチャを表示するソリューション

2263 ワード

現在、K/3 CLoudでは、複数選択の基礎資料についてリストクエリーと表示機能はしばらく提供されていません.そこで、二次開発は自分で実現することを考えて、ここで参考例をあげて、レンガを投げて玉を引いて、みんなに役に立つことを望んでいます.
1、まずリストで複数選択の基礎資料を照会する必要がある文書に対して、複数選択の基礎資料フィールドに対して、対応する補助フィールド(多言語フィールド要素)を追加する
2、対応するプラグインを作成し、以下の例はpython例とC#例を提供する.
python:
import clr
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.DataEntity')
from Kingdee.BOS.Util import *
from Kingdee.BOS import LocaleValue
from Kingdee.BOS.Core.Metadata import *
from Kingdee.BOS.Core.Bill.PlugIn import *
from Kingdee.BOS.Orm.DataEntity import *
from System import *

def DataChanged(e):    
    if e.Key.Equals("FMulBase", StringComparison.InvariantCultureIgnoreCase):
        ##          
        dataList = this.Model.GetValue("FMulBase")    
        if dataList is None: 
            return
        localValue = LocaleValue()    
        for  data in dataList:
                  dyobj =data["FMulBase"]
                  value = dyobj["Name"]
                  localValue.Merger(value, ";")
             ##            
        this.Model.SetValue("FMulLangText", localValue);

C#:
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Orm.DataEntity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Util;

namespace Kingdee.BOS.Business.PlugIn
{
[System.ComponentModel.Description("                 ")]
public class DemoBillEdit:AbstractBillPlugIn
{
public override void DataChanged(Core.DynamicForm.PlugIn.Args.DataChangedEventArgs e)
{
if (e.Key.Equals("FMulBase", StringComparison.InvariantCultureIgnoreCase))
{
DynamicObjectCollection dataList = this.Model.GetValue("FMulBase") as DynamicObjectCollection;
if (dataList.IsNullOrEmpty()) return;
LocaleValue localValue = new LocaleValue();

foreach (var data in dataList)
{
LocaleValue value = (data["FMulBase"] as DynamicObject)["Name"] as LocaleValue;
localValue.Merger(value, ";");
}
this.Model.SetValue("FMulLangText", localValue);
}
}
}
}

上記の処理により,多選択基礎資料のクエリーを変相して実現することができ,実際にクエリーは補助フィールドであり,多言語をサポートする.