U9 描述性弹性域开发-报表范例说明 版 本 号 :V1.0 作者:王少松 版本记录 【此部分要记录该文档形成过程中的历次版本变更过程及变更的内容】 版本 修改与参与人 修改时间 修改原因 修改概述 审批人1.0 王少松 2008-6-25 原始文档建立 一. 问题域说明 描述性弹性域(Descriptive Flex Field):用于为档案和单据动态增加附加信息的弹性域。(U9-实体扩展字段)。 在业务报表开发中,因为不能在设计态获得足够的信息,所有需要在运行时动态处理,如条件项名称和值集的参照,以及栏目、行分组项目、列分组项目、排序项目的名称等信息。 二.基本原理 首先取得描述性弹性域的定义信息,然后调用报表平台的处理函数,统一处理和弹性域相关的条件项、栏目、行分组项目、列分组项目、排序项目。 三.关键代码及说明 1. 描述性弹性域定义信息 UBFCode\U9.VOB.UBF\AutoCoding\CodingApp\QueryReport\Code\QueryCaseBP\BpImplement\QueryCaseBP\DescFlexFieldSegInfoDTO.cs 2. 获得描述性弹性域定义信息(GetDescFieldList) UBFCode\U9.VOB.UBF\AutoCoding\CodingApp\QueryReport\Code\ReortCaseBP\BpImplement\ReortCaseBP\GetDescFieldListExtend.cs ///
/// 获取描述性弹性域段信息 /// ///
///
public override object Do(object obj) { GetDescFieldList bpObj = (GetDescFieldList)obj; List
resultListForDescFields = new List(); foreach (string psBEfullName in bpObj.BEFullName) { resultListForDescFields.Add(new DescSegListDTO(GetSingleBEDescFields(psBEfullName, bpObj.ContextValue))); } return resultListForDescFields; } private List GetSingleBEDescFields(string psBEFullName, string psContextValue) { List resultSegList = new List(); DescFlexFieldDef desc = DescFlexFieldDef.FindByName(psBEFullName); //DescFlexContext DFFDCtx = DescFlexContext.FindByContextValue(desc, psContextValue); DescFlexFieldSegInfoDTO ItemData = null; if (desc != null && desc.DescFlexContexts != null) { for (int nContext = 0; nContext < desc.DescFlexContexts.Count; nContext++) { //先加载公共和全局描述性弹性域,暂不考虑 上下文段 if (string.Compare(desc.DescFlexContexts[nContext].ContextValue.Trim(), "public", true) == 0 || string.Compare(desc.DescFlexContexts[nContext].ContextValue.Trim(), "global", true) == 0) { for (int nSegment = 0; nSegment < desc.DescFlexContexts[nContext].DescFlexSegments.Count; nSegment++) { ItemData = new DescFlexFieldSegInfoDTO(); ItemData.SegEntity = (DescFlexSegment)desc.DescFlexContexts[nContext].DescFlexSegments[nSegment].Clone(); ItemData.ValueSetDef = (ValueSetDef)desc.DescFlexContexts[nContext].DescFlexSegments[nSegment].ValueSetDef.Clone(); resultSegList.Add(ItemData); } } } } return resultSegList; } 3. 单实体描述弹性域段信息 DTO 列表(GetDescSingleBeFields) 4. 根据描述性弹性域定义处理条件项、栏目、行分组项目、列分组项目、排序项目 UBFCode\U9.VOB.UBF\ADF\Analysis\QueryReport\UFIDA.UBF.Report.App.UI\Service\ReportFlexFieldHelper.cs /// /// 处理描述性弹性域 /// /// 方案定义信息 /// 描述弹性域段 /// 栏目/参数名称前缀 /// 是否处理参数 /// 是否处理...