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