Acumatica 我无法通过BLC代码获得通用查询公式的值

Acumatica 我无法通过BLC代码获得通用查询公式的值,acumatica,Acumatica,我有一个定制,它使用BLC代码来获得一般查询的结果,并使用该数据来运行流程 一般查询有几个字段是公式,出于某种原因,返回的结果实际上包含一个金额时显示null,该金额由公式计算: 下面是循环通过GI行的BLC代码: GIDesign gi = PXSelectReadonly<GIDesign, Where<GIDesign.name, Equal<Required<GIDesign.name>>>>.Select(this.Base, "

我有一个定制,它使用BLC代码来获得一般查询的结果,并使用该数据来运行流程

一般查询有几个字段是公式,出于某种原因,返回的结果实际上包含一个金额时显示null,该金额由公式计算:

下面是循环通过GI行的BLC代码:

GIDesign gi = PXSelectReadonly<GIDesign, Where<GIDesign.name, Equal<Required<GIDesign.name>>>>.Select(this.Base, "ACAllocationBranches");

if (gi != null)
{
    //Creates Generic Inquiry Graph for the specified inquiry
    PXGenericInqGrph graph = PXGenericInqGrph.CreateInstance(gi.DesignID.Value);

    //Set the filter...
    graph.Caches[typeof(GenericFilter)].SetValueExt(graph.Filter.Current, "RefNbr", apinv.RefNbr);

    //Loops through each returned result row of Generic Inquiry
    foreach (GenericResult resultRow in graph.Views["Results"].SelectMulti())
    {

        GIMap.Clear();
        //Loops through objects returned from one - not an object per field
        foreach (string key in resultRow.Values.Keys)
        {
            //Loops through list of each object and the fields we need values from for each data key
            foreach (GIResult resultMap in PXSelectReadonly<GIResult, Where<GIResult.designID, Equal<Required<GIResult.designID>>, And<GIResult.objectName, Equal<Required<GIResult.objectName>>>>>.Select(graph, new object[] { gi.DesignID.Value, key }))
            {
                //retrieves field value from data object specified
                var result = graph.Caches[resultRow.Values[key].GetType()].GetValue(resultRow.Values[key], resultMap.Field);

                //Load up the GIMap dictionary...
                if(resultMap.IsActive == true)
                    GIMap.Add(key + "." + resultMap.Field, result);
            }
        }
    }
}
以下是GI公式字段的外观:

不幸的是,正如我提到的,这些公式字段在代码中返回null作为一个值,其中实际的泛型查询具有数值

是否有可能——或者通过BLC代码示例,有其他方法获得这些公式值


非常感谢…

我建议您尝试以下代码:

    public PXAction<SOOrder> Prc;

    [PXButton(CommitChanges = true)]
    [PXUIField(DisplayName = "Prc")]
    protected virtual IEnumerable prc(PXAdapter adapter)
    {
        GIDesign gi =
            PXSelectReadonly<GIDesign, Where<GIDesign.name, Equal<Required<GIDesign.name>>>>.Select(this.Base,
                "PMBudget");

        var graph = PXGenericInqGrph.CreateInstance(gi.DesignID.Value);

        List<bool> descs = new List<bool>(PXView.Descendings);
        List<string> sorts = new List<string>(PXView.SortColumns);
        int startRow = 0;
        int totalRows = 0;

        var result = graph.Results.View.Select(null, null, PXView.Searches, sorts.ToArray(), descs.ToArray(),
                null, ref startRow, PXView.MaximumRows, ref totalRows)
            .Select(x => (GenericResult)x);

        return adapter.Get();
    }
结果如下: