2017-10-26 5 views
0

BLC /グラフロジック内の汎用照会によって提供される結果のデータセットまたは配列を取得する必要があります。BLC /グラフコードの汎用照会からデータセット/配列を返す

私は例として次のように指定しましたが、これは明らかにカウントを返します。

public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry> 
{ 
public PXAction<SOOrder> Test; 
[PXButton] 
[PXUIField] 
protected void test() 
{ 
    var dataGraph = PXGenericInqGrph.CreateInstance("GI000010"); 
    if (dataGraph != null) 
    { 
     var count = dataGraph.Views["Results"].SelectMulti().Count; 
    } 
} 
} 

私が返される変数にインデックスを使用すると、私は例えば、GIの実際のデータの行に似ている何かを得ることはありません:これは戻りません

dataGraph.Views["Results"].SelectMulti()[0] 

実際のデータ私はdataGraph.Views ["Results"]オブジェクトによって提供されるいくつかのメソッド/プロパティを試しましたが、私に必要な結果を与えるものはありません。

汎用照会の実際の結果のデータセットまたは配列を単に返すメソッドまたはプロパティがありますか?

答えて

1

これにより、結果のリストが表示されます。各リスト要素には、GI結果の1行に関連するレコード(各結合テーブル)が含まれます。 GIに含まれるフィールドだけが私が信じる価値があります。

public PXAction<SOOrder> Test; 
[PXButton] 
[PXUIField] 
protected void test() 
{ 
    // Using "Invoiced Items" (GI000008) GI in 2017R2 
    var dataGraph = PXGenericInqGrph.CreateInstance("GI000008"); 
    if (dataGraph == null) 
    { 
     return; 
    } 

    var resultList = dataGraph.Results.Select().FirstTableItems.ToList(); 

    foreach (GenericResult genericResult in resultList) 
    { 
     // Note: not all values are pulled into the DAC, only those used in the query 
     var arInvoice = GetDac<PX.Objects.AR.ARInvoice>(genericResult); 
     var arTran = GetDac<PX.Objects.AR.ARTran>(genericResult); 
     var customer = GetDac<PX.Objects.AR.Customer>(genericResult); 
     var customerClass = GetDac<PX.Objects.AR.Customer>(genericResult); 
     var address = GetDac<PX.Objects.AR.Customer>(genericResult); 
     var bAccount = GetDac<PX.Objects.CR.BAccount>(genericResult); 
     var inventoryItem = GetDac<PX.Objects.IN.InventoryItem>(genericResult); 

     var formulaValues = genericResult.Values.Last(); 
    } 
} 

protected virtual T GetDac<T>(GenericResult genericResult) where T : class, PX.Data.IBqlTable 
{ 
    // Example: 
    //var customer = (PX.Objects.AR.Customer)genericResult.Values["Customer"] 
    return (T)(genericResult?.Values != null && 
     genericResult.Values.ContainsKey(typeof(T).Name) 
     ? genericResult.Values[typeof(T).Name] 
     : null); 
} 
+0

- PMF 私はこれを試しましたが、私はSelectMultiと同じことをします。ここでの結果は、次のとおり resultList [0] レコード(1):GLTran [0]:{GL取引[モジュール:GL、batchNbr:GL013332、lineNbr:23]} この結果は私には意味をなさない。私はGIからの実際のデータを探しています。 – pmfith

+0

は、これはカスタムGIかAcumaticaで提供される標準GIですか?私が持っているカスタムGIをテストしたところ、私のリストにはリストに22項目がありました。 (2017R2でテスト済み) – Brendan

+0

また、確認するだけで、別のGIで有効な結果を得ることができますか? – Brendan

関連する問題