I am not sure what you call this pattern ... take data from various fields on a record and move them into globals. I let the user edit the values. When they click save then I validate and update the record. This gives me a great deal of control not just in doing the validation up front but it also allows me to audit the changes if I needed to.
But the problem comes when an edit in one window isn't completed and the user decides to multi-task and start editing another record in a different window. The globals will now load the values from that other window.
One idea might be to have window scoped globals. Meaning that they are global to that window only. Ideal if they only existed as layout objects and not in the schema. But that they acted just like fields ... no back and forth to the server for anything. They would have a value that could span across all the records in that table/layout but no overlap with another window.
Under the same category as this one: Window Object