L1-U811.1客开培训文档--UAP(9)

2019-08-31 12:10

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结构的前提下,在节点内扩展该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结构为: