There is a function to set the default save file name without using submit and locking down saves:
thisXDocument.UI.SetSaveAsDialogFileName(string bstrFileName)
To use this in real life it would look something like this (c#):
[InfoPathEventHandler(MatchPath="/my:myFields/my:Field1", EventType=InfoPathEventType.OnAfterChange)]
public void Field1_OnAfterChange(DataDOMEvent e) {
if
(e.Operation == "Insert") {
string saveFile = thisXDocument.DOM.selectSingleNode("my:myFields/my:Field1").text;
thisXDocument.UI.SetSaveAsDialogFileName(saveFile + ".xml");
}}
This code will autoupdate the save file name when Field1 changes. And if you want Field1 to be a concatination of other fields you can set it's default value to something like:
concat(Field2,"-",Field3)