U811.1 客开培训资料之UAP
///
/// 生单窗体工具栏按钮二次开发 ///
/// ///
IMakeVoucherButtonEventHandler GetButtonEventHandler(VoucherButtonArgs ButtonArgs);
}
该接口中的DataConverting、DataConvert、DataConverted方法分别为生单转换前方法、具体的生单转换方法、生单转换后方法。其中生单转换算法最好在DataConvert方法中实现;
GetButtonEventHandler方法为生单弹出窗体上按钮的二次开发接口,该方法类似于单据按钮的二次开发接口。该接口的返回值为IMakeVoucherButtonEventHandler类型,返回对象会被UAP运行
时调用来执行该对象中的方法。IMakeVoucherButtonEventHandler接口定义了三个方法,按照运行时被调用执行的先后顺序分别为:
string Excuting (VoucherProxy ReceiptObject)、
string Excute (VoucherProxy ReceiptObject, string PreExcuteResult)、 string Excuted(VoucherProxy ReceiptObject, string PreExcuteResult)。 注:
(1)三个方法的返回值为xml字符串,其格式为
\,该返回值用来标示当前方法是否成功执行,记录在result属性里,errinfo属性用来记录任何可能的信息。Excuting方法的返回值可以作为Excute方法的第二个参数PreExcuteResult传入Excute,你可以在Excute方法体重分析传入的信息决定程序是否继续执行,或作出其他处理等,同样,Excute方法的返回值也可作为Excuted方法的参数传入,并作必要检查。另外,你可以在保证上面规定的xml结构的前提下,在
(2)三个方法共有的参数就是当前表单功能按钮可以操作的表单模型。可以从该对象中取到当前可以操作的任何数据。
(四) 联查报表
说明
联查报表是指在UAP表单中,通过表单功能或表单实体功能查询与表单或表单实体中的某些数据相关的U8报表。这种查询操作是针对特定的表单或表单实体,所以可以不必输入过滤条件,而是使用默认过滤条件,所以此处的联查报表有别于使用过滤条件的报表查询。
示例
联查报表示例----在UAP表单中打开U8报表
此处以销售订单中查看某个存货的现存量来描述。在销售订单的表单单据体中描述了一组(多行)存货数据信息。首先从当前表单实体模型中获得当前实体的主键值,进而获得当前主键值对应得存货信息,将存货信息封装到过滤条件中传入报表即可。 (1)获得存货编码
BusinessRow currentRow =someEntity.Rows[someEntity.CurrentPKValue];
U811.1 客开培训资料之UAP
DataRow someRow = currentRow.RowData;
string invCode = someRow[invcodeColumnName].ToString();
(2)封装过滤条件 封装过滤条件涉及到一个过滤窗口是否显示的问题。如果过滤窗口显示,
我们可以通过过滤窗口为过滤查询赋值;如果要求过滤窗口不显示,并且需要设置查询条件,此时只能是先通过代码封装查询过滤条件,然后再传入打开报表的方法。
//封装过滤条件
FilterSrv filter = new FilterSrvClass(); bool hiddenFlag = true;
object errInfo = new object();
object temp2 = (object)filterColumnName;
filter.OpenFilter((object)login, \销售现存量查询\, \, \, ref errInfo, ref hiddenFlag);
if (filter.FilterList.get_Item(ref temp2).IsSingleItem == true) {
filter.FilterList.get_Item(ref temp2).varValue = filterValue1; } else {
filter.FilterList.get_Item(ref temp2).varValue = filterValue1; filter.FilterList.get_Item(ref temp2).varValue2 = filterValue2; }
//将过滤条件传入打开报表的方法
clsReportOpen clsReport = new clsReportOpenClass(); bool hiddenFlag = true; object tmp =(object)filter;
clsReport.OpenReport(reportName, (object)login, ref hiddenFlag,ref tmp );
clsReport = null;
注意项
(五) 联查UAP列表
说明
联查UAP列表是指从UAP表单中打开UAP样式的U8表单列表。在现在的UAP中,打开UAP列表必须使用UAP列表的一些基础服务,在联查过程中,可以使用过滤设置设置列表查询的过滤条件,也可不使用过滤设置而使用默认的过滤条件。
示例
该部分示例与下一部分“UAP列表联查U8单据”一起展示
U811.1 客开培训资料之UAP
(六) UAP列表联查U8单据
说明
此处UAP列表是指UAP列表样式的U8表单列表,通过该列表联查U8单据必须与上面所讲的“联查UAP列表”结合使用。
从UAP表单中穿透到(打开)UAP列表样式的U8表单列表,并且从打开的UAP列表样式的U8表单列表中穿透到(打开)U8表单。
要获得U8表单列表需要实例化
UFIDA.U8.UAP.UI.Runtime.List.UFGeneralListServiceUFIDA.U8.UAP.UI.Runtime.List.UFGeneralListService
类,而要实例化类,需要实例化
类,实例化
UFIDA.U8.UAP.UI.Runtime.List.Metas.UFGeneralListMeta
UFGeneralListMeta时一般需要的参数为数据源、过滤条件、栏目、用户自定义事件等。
数据源:
类:UFIDA.U8.UAP.UI.Runtime.List.Metas. DataAccessMeta 实例化该类时需要两个参数
new DataAccessMeta(\,
erQuerySetting),第一个参数目前可支持两种类型分别为:\;第二个参数为对应第一个参数的用xml描述的数据源详细信息。如果第一个参数为\则xml结构为: boid=\ functionName=\type=\;如果第一个参数为\,则xml结构为: 类:UFIDA.U8.UAP.UI.Runtime.List.Metas. FilterMeta 实例化该类new FilterMeta(\, filterSet)需要两个参数,第一个 参数为本次查询需要的过滤条件编号ID,第二个为不显示过滤窗口时传入默认的过滤条件,其为xml结构的字符串,默认过滤条件的组织样式如下格式要求: 1、 过滤列的名称必须在该处列表过滤条件所有可选的字段中。 2、 操作符operator1为正常的Sql表到式中的where条件操作符。like等操作时需要自己添加必要的\等 3、 区间条件时需要最终的格式为 U811.1 客开培训资料之UAP operator2=\区间条件时值\ 栏目: 类:UFIDA.U8.UAP.UI.Runtime.List.Metas.ColumnMeta 实例化该类new ColumnMeta(\)需要一个参数,该参数为在UAP 的栏目设计器中对应栏目的编号ID。 用户自定义事件: 该参数为当表单开发人员对查询后的列表有自定义按钮事件或其他操作时使用,该参 数为实现基类UFIDA.U8.UAP.UI.Runtime.List.UI.BaseUIEventHandler的子类的完整的命名路径。 至此使用上述几个参数可以实例化UFGeneralListMeta类的一个对象,然后再使用该对象实例化UFGeneralListService类的对象,就可以得到UAP列表。如果想从该列表中某一行数据穿透到该条数据对应的表单中,需要在实例化UFGeneralListMeta类的对象时做一个额外的工作。就是为UFGeneralListMeta类的对象的ExtendInfo属性赋值,该属性值为xml格式的字符串类型。其格式为: U811.1 客开培训资料之UAP 示例 UFGeneralListMeta listMeta = new UFGeneralListMeta(); //组织数据源,此处使用数据引擎查询数据。 UFGeneralListMetaUtil.SetBizDAEERQueryInfo(listMeta, \, \); #region 设置数据引擎过滤条件 Business b = voucherObject.Businesses[\] as Business; string curentRow = b.CurrentPKValue; BusinessRows rows = b.Rows; //此处不再使用过滤,只能给其传输默认过滤条件。默认过滤条件的组织样式如下格式。 //1、过滤列的名称必须在该处列表过滤条件所有可选的字段中。 //2、操作符operator1为正常的Sql表到式中的where条件操作符。like等操作时需要自己添加必要的\等 //3、区间条件时需要最终的格式为