I’m convinced that it makes perfect sense to get details from the revision that belongs to the site where a part will be manufactured, and it’s only a limitation of the Get Details dialog UI that it doesn’t present that option.
I think I may have struck gold. When you run Get Details from the menu and say yes to running the related configurator, ConfigurationRuntime.ProcessDocumentRules is immediately followed by QuoteAsm.GetDetails. So I hung a post processing method directive on ProcessDocumentRules. It consists of an Invoke BO Method widget that calls QuoteAsm.GetDetails for the default revision of the part, which happens to be in another site. Instead of running Get Details from the menu, users can just click the Configure button. And it works! Parameters come from pcValueDS.pcContextProperties:
This is just a proof of concept, but a very promising one. I did check that the error return is empty. I still need to make sure the configurator is being run from a quote line and remove any existing details on reconfiguration.
The only remaining issue is one that affects Get Details in general. Although PartCost is not site-specific, Get Details seems to join it via PartPlant. So you must have a PartPlant record in the current site for every raw material, or you get zeros in QuoteMtl.EstUnitCost. Customization–building a MOM for non-current site describes creating a temporary session with a different plant ID. I didn’t need to do that, but I wonder if it would eliminate the need to create all those redundant PartPlant records.