Axapta 将值从窗体传递给视图中的方法

Axapta 将值从窗体传递给视图中的方法,axapta,x++,dynamics-ax-2012-r2,Axapta,X++,Dynamics Ax 2012 R2,我有一个带有装运表数据源的视图。此视图有一个包含查询的方法。此查询获取装运id并从该装运的sales line表返回销售id。此视图有一个计算字段,该字段是查询的输出。然后在表单上使用计算字段 如果我硬编码装运id,则流程正常工作。我的问题是如何从装运id列表中动态获取装运id。例如,我有一个列有所有装运的表单。我想在装运id旁边放置一个字段,该字段包含从上述流程计算的销售id 底线:我希望网格的第一列是发货id,第二列是第一列中发货的销售id 这是包含查询的上述方法的一个示例: private

我有一个带有装运表数据源的视图。此视图有一个包含查询的方法。此查询获取装运id并从该装运的sales line表返回销售id。此视图有一个计算字段,该字段是查询的输出。然后在表单上使用计算字段

如果我硬编码装运id,则流程正常工作。我的问题是如何从装运id列表中动态获取装运id。例如,我有一个列有所有装运的表单。我想在装运id旁边放置一个字段,该字段包含从上述流程计算的销售id

底线:我希望网格的第一列是发货id,第二列是第一列中发货的销售id

这是包含查询的上述方法的一个示例:

private static server str findSalesLine()
{
    WMSShipment     wmsShipment;
    WMSOrderTrans   wmsOrderTrans;
    SalesLine       salesLine;

    select wmsShipment
    join wmsOrderTrans
    where wmsShipment.shipmentId == '1040383'
    && wmsShipment.shipmentId == wmsOrderTrans.shipmentId
    join salesId from salesLine
    where salesLine.LineNum == wmsOrderTrans.inventTransRefLineNum
    && salesLine.SalesID == wmsOrderTrans.inventTransRefID
    && salesLine.ExternalItemId != '';

    return salesLine.SalesId;
}

我认为您需要的是查询范围()或显示方法()


您是否有更多详细信息或示例代码?

我将使用类似于下面的计算列。我所处的环境与您不同,因此SQL在我的机器上无效,但在您的机器上应该有效

将新的字符串计算列添加到视图中,然后将此方法设置为datamethod

public static server str getSalesId()
{
    tableName       viewName = tableStr(testView);//name of your view
    DataSourceName  wmsShipmentDsName = identifierStr(WMSShipment);//change if your dsname is different on your view
    str returnStr;

    returnStr = 
    " SELECT G1.SALESID FROM SALESLINE G1 " + //don't use "T1 T2" etc as aliases on computed columns
        " JOIN WMSORDERTRANS G2 ON " +
            " G1.LINENUM = G2.INVENTTRANSREFLINENUM AND " +
            " G1.SALESID = G2.INVENTTRANSREFID AND " +
            " SALESLINE.EXTERNALITEMID <> '' " +
        " WHERE G2.SHIPMENTID == " + 
        SysComputedColumn::returnField(viewName, wmsShipmentDsName, fieldStr(WMSShipment, ShipmentId));

    return returnStr;
}
公共静态服务器str getSalesId()
{
tableName viewName=tableStr(testView);//视图的名称
DataSourceName wmsShipmentDsName=identifierStr(WMSShipment);//如果视图中的dsname不同,则更改
str-returnStr;
returnStr=
“从SALESLINE G1中选择G1.SALESID”+//不要在计算列上使用“T1 T2”等作为别名
“在上加入WMSORDERTRANS G2”+
“G1.LINENUM=G2.INVENTTRANSREFLINENUM和”+
“G1.SALESID=G2.INVENTTRANSREFID和”+
“SALESLINE.EXTERNALITEMID”“”“”+
“其中G2.SHIPMENTID==”+
SysComputedColumn::returnField(viewName、wmsShipmentDsName、fieldStr(WMSShipment、ShipmentId));
返回返回str;
}

发货表(
WHSShipmentTable
)已在字段
OrderNum
(请参阅该表上的关系
SalesTable
)中包含销售id。我们的系统已被修改。该表不存在,并且该关系在我们的发货表中不存在。对不起,我在R3系统中进行调查,您是对的,在R2中该表不存在。在这种情况下,您希望将方法转换为视图中的计算列(请参阅