二开插件 - 如何获取弹性域的名称

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

二开插件 - 如何获取弹性域的名称

客户需求: 在插件中获取弹性域字段(核算维度、辅助属性、仓位)的显示名称。


解决方法: 

1. 获取BOSDynamicRow

新版本可以调用接口

Kingdee.BOS.ServiceHelper.SendMailServiceHelper.GetBOSDynamicRow(Context ctx, string formId, object[] ids)

旧版本可以用如下函数获取

public BOSDynamicRow[] GetBOSDynamicRow(Context ctx, string formId, object[] ids)
{
    MetaDataService metaDataService = new MetaDataService();
    BusinessInfo businessInfo = ((FormMetadata)metaDataService.Load(ctx, formId)).BusinessInfo;
    IViewService service = Kingdee.BOS.Contracts.ServiceFactory.GetViewService(ctx);
    DynamicObject[] objs = service.Load(ctx, ids, businessInfo.GetDynamicObjectType());
    return objs.ToList().ConvertAll<BOSDynamicRow>(obj =>
    {
        DynamicFormModelProxy modelProxy = new DynamicFormModelProxy();
        modelProxy.SetContext(ctx, businessInfo, new FormServiceProvider());
        modelProxy.DataObject = obj;
        return new BOSDynamicRow(obj, businessInfo.Entrys[0].Key, modelProxy);
    }).ToArray();
}


2)根据元数据获取弹性域字段RelatedFlexGroupField field,然后调用如下函数获取显示名称

public string GetDisplayName(BOSDynamicRow bosBillRow,RelatedFlexGroupField field ,int row)
{
    if (bosBillRow == null) return string.Empty;
    var baseDataField = bosBillRow.Model.BillBusinessInfo.GetField(field.RelatedBaseDataFlexGroupField) as BaseDataField;
    if (baseDataField != null)
    {
        var baseDataDataObject = bosBillRow.Model.GetValue(baseDataField.Key, row) as DynamicObject;
        var relatedFieldDataObject = bosBillRow.Model.GetValue(field.Key, row) as DynamicObject;
        return field.GetDisplayName(null, relatedFieldDataObject, baseDataField, baseDataDataObject);
    }
    return string.Empty;
}


3)在参数设置--BOS平台中设置显示名称的样式



二开插件 - 如何获取弹性域的名称

客户需求: 在插件中获取弹性域字段(核算维度、辅助属性、仓位)的显示名称。解决方法: 1. 获取BOSDynamicRow新版本可以调用接口Kingdee....
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息