Solved

Is there any way to improve the Data Entry grids performance with many formulas at the DAC level


Userlevel 7
Badge +8

I have added 35 custom fields to PMCostProjectionLine and the same number of fields to the PMCostProjection to keep Lines summary. Acumatica’s Cost Projection screen itself is pretty slow. The fields I have added doesn’t have any business logic (No code in Graph) but at the DAC level 26 of these fields are using PXFormula to do some calculations and almost all custom fields at the PMCostProjectionLine have SumCalc in their PXFormula to update the PMCostProjection. 

The problem I have is being slow navigating between Lines. Just clicking on a line and then another line without any change takes couple of seconds.

When I trace as there are a lots of break I can’t really figure out what causes the performance issue. I disabled the formulas temporarily it was slightly better but didn’t make a real difference.

This fields in the grid have CommitChange = true as I need by changing each value the dependent fields values be refreshed as per the defined formulas.

Has anyone experienced this and is a faster way than using PXFormula and SumCalc?

 

Any help appreciated.

icon

Best answer by aaghaei 26 May 2022, 17:49

View original

4 replies

Userlevel 7
Badge +5

Well, if it is slow when just navigating to a different line, it should not be the formulas that are causing that. Navigation between the lines triggers only RowSelected event, while formulas recalculation happens on RowUpdated. And you also said disabling the formulas did not help.

 

I'd suggest you to check FieldSelecting/RowSelected events. You can also try profiling with something like JetBrains dotTrace to understand what exactly takes time.

Userlevel 7
Badge +8

Thanks @Dmitrii Naumov what you explained makes absolute sense. To test it out I looked into Acumatica code and identified the RowSelected & RowUpdated event handlers as follows and temporarily ovrride them not to be executed as shown below. In my custom code I do not have any event handlers. But the issue still exist. Any though what other reason(s) may cause the issue?

  public class CostProjectionEntry_Extension : PXGraphExtension<CostProjectionEntry>
{
#region Event Handlers

protected void PMCostProjection_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected InvokeBaseHandler)
{
return;
}


protected void PMCostProjectionLine_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected InvokeBaseHandler)
{
return;
}

protected void PMCostProjection_RowUpdated(PXCache cache, PXRowUpdatedEventArgs e, PXRowUpdated InvokeBaseHandler)
{
return;
}

#endregion
}

 

Userlevel 6
Badge +5

Just for debugging purposes, please turn commitchanges to false on all fields and profile the speed. Does it help?

Userlevel 7
Badge +8

Hi @Dmitrii Naumov @Naveen Boga @rosenjon @Chris Hackett

All your comments were valid points but what causing the navigating bwtween the rows issue were some properties set on the grid as follows. When I removed the below properties, it seems to be fine and hopefully wont break something :) else:

<Prop Key="CallbackCommands.Navigate.CommitChanges" Value="True" />
<Prop Key="CallbackCommands.Navigate.RepaintControls" Value="All" />
<Prop Key="AutoCallBack.ActiveBehavior" Value="True" />
<Prop Key="AutoCallBack.Behavior.RepaintControlsIDs" Value="RevisionLogsGrid" />
<Prop Key="AutoCallBack.Behavior.BlockPage" Value="True" />

Still I have the performance issue when updating the subgrid I have added to the PMCostProjectionLine to retain the Revision Logs. If I find out what happens with rhis, I will share it here.

Reply


About Acumatica ERP system
Acumatica Cloud ERP provides the best business management solution for transforming your company to thrive in the new digital economy. Built on a future-proof platform with open architecture for rapid integrations, scalability, and ease of use, Acumatica delivers unparalleled value to small and midmarket organizations. Connected Business. Delivered.
© 2008 — 2024  Acumatica, Inc. All rights reserved