Some useful tips when working in BaseElements.
To start with, remember nothing in the interface is locked down, so you can open new windows, switch views, perform finds, omit records etc. Most of what you quite often do with BaseElements will be either to find a list of objects of a certain type, or objects related to some other object. Once you've got that as a found set you can create it as a new window and then work your way through the found set one at a time, omitting records when you're done.
You can also hold down 2 extra modifier keys when clicking on a link to perform some extra actions.
For example, holding down the shift key when clicking on a field that is also a link (the blue underlined ones), you can access that field without running the script.
If you hold down the shift key when clicking one of the "List" links at the top of a portal, it will take you to a list of all related records for the found set, not just the current record. So you can do a search for a certain type of field, then go to a list of all of the layouts for ALL of those fields.
This key modifier opens the link (any sort of link) in a new window. This is really handy for looking at a found set of related objects while working on other things.
Because you have access to all of the menu functions, you can also export the data. You could use the export function to create a "plain text" version of any part of your solution and then use a diff program such as BBEdit for Mac or WinCompare for Windows to compare changes from one version to another.
So not only can you keep multiple versions in the same set of files, it's possible to also compare changes across versions as well.
There is an additional process that can be run to generate lists of field dependencies.
What is a dependency and how it is different from a reference?
A field has a reference to it if it's used by another field, a script step, or some other calculation somewhere that uses this field.
However a dependency is slightly different. The logic for a dependency is any field that if it was changed, would cause this field to update. For example, a plain text field has no dependecies. A calculated field that only references fields in the same table occurence has as it's dependencies, every field used in the calculation.
For calculation fields that reference related fields, the dependent fields are any field in the calculation, plus any of the fields used as join predicates in every step of the relationship from context to field.
For auto-enter calculation fields, the dependencies are just the fields in the calculation that are in the same table as the starting field.
For a lookup field, the dependencies are any fields used as join predicates in the left hand side of the relationship that the lookup comes from.
Why do you want know this?
You can use this to work out, based on either single field or a found set, which other fields in my system affect this starting point. For example, if a calculated price field is dependent on many other related fields, but you want to run a script whenever a price is going to change, you can work out which fields in other files need to be scripted so that your process will run accordingly.
There isn't anything else to do this kind of dependency tree in any other solution available for FileMaker developers. We think it's pretty nifty.
How do I use it?
Start with a found set of the fields you want to check dependencies for. The go to the dependencies tab on the portal at the top right, and click "Found Set" or "Current Field" as appropriate. BaseElements will create new windows with related data and search the dependency hierarchy as required. For each field that it finds, it sets a number in the "Tag Field" to mark the records found. Once it's complete, every record in the dependency tree will have the same tag data, and it will be on the found set of those records.
This mostly applies to a user on a Mac, as it has floating windows, and on Windows BaseElements starts up maximised.
If you move and arrange the windows as you work, but want to get back to the standard arrangement, there is a script in the "Scripts" menu to do just that on a per file basis. There is also a script in the BaseElements file to re-arrange all of the windows at once.
Moving all the windows at once.
If you move the BaseElements.fp7 window to the new location you want all of the windows to appear, you can then get all of the other windows to move to this location. Just run the script "Set Window Positions Current Window", and all of the windows will be moved to match the top left coordinates of the current window.