Hi Vlad
I’ve discovered a situation that will generate an accidental infinite loop. I have created a sample BO for you which demonstrates this. This reflects what is happening on my system in a simplified way. This set up is due to the 1:1 Push operations of panels and the inability to m:1 Pull data from a source
Setup:
BOs
Parent
Child
Queries
All Parents - has default action SelectParent (see below)
ShowChildren of selected Parent - FIND Child where Child.obParent.ID=LIRU.IDParent, this query is set to auto refresh on the running of the Parents default Operation on Record (below) - ShowChildren has Select First Record set
Operations on Records
SelectParent - Set LIRU.IDParent - this runs on the All Parents view as a default action. It sets the LIRU.IDParent to the ID number of the Parent record.
ChildShowParent - default operation on record on query ShowChildren to start a process which just does VIEW Child.obParent USING a specified form.
ShowChildren query also has a render script on it
widget.bind("dataBound", function(e){
const grid = e.sender;
grid.select("tr:eq(0)");
grid.select().click();
})
The render script is required because the select first record is not respected when the grid refreshes following running of the SelectParent process.
If you just use View Object as the default operation then the issue doesn’t occur, BUT because I want to show the parent object of the Child (in order to show the multiple children of the Parent) I have to use an Process kicked off by the default action of the Query to VIEW Child.obParent USING ChildParent
This creates a situation where the Process runs, which is causing an unwanted refresh on the ShowChildren query, which causes the default action to kick off, which causes an unwanted refresh ad infinitum.
In the sample attached run it in test, it will open to the Administrator VP. The Admin VP has two tabs, select the tab Test, the Parent Record will be selected, which will cause the ShowChildren grid to refresh and then the loop will start. I have made the Test tab closable otherwise it locks me out of my single user dev environment.