What is the best way to have a lookup that supports creating a new record if one isn't found?

So, with the new Action framework, shouldn’t there be a way to do this now? I can easily make a popup screen that saves a new record in one of my models, but I can’t seem to figure how to get the ID of that new record to go into the lookup field of a record that is already in use on another model on my page. I don’t seem to have that option available to me in Actions.

Hi Peter, we got this working by using ‘newAccount’ and ‘newContact’ models (in addition to our ‘enquiry’ model on the page.

When the user chooses to add a new Account and/or Contact, we have a button which:

- Saves the enquiry model
- creates a new row in the newAccount model
- creates a new row in the newContact model (with a condition of AccountId = Id from the newAccount model
- shows a popup which allows the user to enter the new account/contact info.

That popup then has a ‘Save & Close’ button, which runs multiple actions:

- Saves both the newAccount & newContact models
- updates the Account field on our ‘enquiry’ model with {{$Model.newAccount.data.0.Id}}
- updates the Contact field on our ‘enquiry’ model with {{$Model.newContact.data.0.Id}}
- Closes the popup

here’s a screenshot of the Save & Close popup in the page builder. Hope this helps



 

Ahh, thanks. The key was getting the right merge syntax as a value in a “update field on row” action. It works!

I’m working on another idea not documented here, wondering if anyone else has gotten to work:

Add the lookup field to a Template field, then customize the popup window using some of the above tricks. I’ve got it sort of working, when I get the bugs out I’ll post back, unless someone else has done this bug free and wants to share the code…

Got it working!

So we have a Loan Officer field on Opportunity that looks up to a Contact. Our NewLoanOfficer model pulls from all contacts on the Account model, which is the one Account over the Opportunity. So, you’ll need to find some way to limit the lookup field’s model.

I included the LoanOfficer lookup field (in double brackets) on a Template Field in my Opportunity Field Editor. Then, I selected Show Custom Popup for edit mode behavior.

The custom popup includes a table with my NewLoanOfficer model, allowing inline record creation, showing save/cancel.

Note: I don’t have a search box in the image because it gave me all sorts of trouble at first, but after getting everything else working, search works great now too.

I removed all default actions, and adding a Row Action that runs multiple actions.

The row action is called “Select this Loan Officer”.

First it saves the model NewLoanOfficer, in case you just created a new one or edited any existing ones. (Whatever you set the table to, it will always open in Edit mode, I guess that’s being forced since the pop-up loads from editing the template field.)

Next it updates the LoanOfficer field on Opportunity with {{{Id}}} triple brackets to include the selected value.

Then it saves Opportunity model, and querys it to replace the field value with the chosen Loan Office, then it closes the popup. I had some trouble with choosing close the topmost popup, but it worked with close all popups.

Thanks Jack.  This is a great implementation. I’ll definitely be playing around with this in days to come. 

One issue I’ve found after using this in production is that you HAVE to choose a value in order to close the pop up window. And once you’ve chosen a value, there’s no way to clear the field. I tried creating a Global Action in the table that would enter a blank value in the field, save the model, then close the popup, but it just doesn’t work, it never closes the popup. I even tried Redirect to Url so that it would refresh the page but it just hangs. 

My current solution - I added some template text “Note: You must choose a Loan Officer” that renders conditionally if the field is blank. 

Once the field is populated, you can open that edit window and close it without choosing a new value. 

@Skuid Support Team @Rob Hatch
Any update on this skuid enhancement ?

@Skuid Support Team @Rob Hatch

Rob - Has this enhancement ever been implemented?

Thank you Jack, your solution fit my need simply and exactly!

I didn’t even know you could vote that many times. Do I second this vote? Or do I infinity +1 it? [ edited because spelling ]

Hi Jack, maybe you have tried this and could point me in right direction.

I needed to implement same as your idea but this time on a table. So instead of using a Template field I used same idea , but used a Row Action

But now the issue i’m facing is that it updates all the rows , not only the Row I Selected action from.

Any idea?

Can you post some screenshots of how you’ve set up the row action and/or your page xml?

Sure , my current actions are pretty simple:

I have a table for model named NewSubmissions2:

From this table i create new submissions(often multiple) + before even saving it, I click action that just opens a popup with table of model “lenders”.

In that table I added action to update field on row and insert {{{ID}}} + close topmost popup

The reason I do not save first as you suggested, is because of different validation rules , including one that the lender’s name cannot be blank…

Writing this i realize that may be part of the issue, as prob would need an ID to pass to lookup, so it knows which row to update?

I could always have an action enter fictitious data to bypass validation, and then have them overwritten with proper values from lender table, but still am not sure how it would update each rows with proper selection

Hope it’s not too confusing

Thx

One problem is that in your popup, your table has a model of Lenders, but your action updates the row(s) on a different model, NewSubmissions2, so that’s why it’s updating all rows with your Lender Id.

Do you have context condition set on your Lender table in the popup, for Id = Lender__c of row in context? Not sure that will help

In my example I was using a detail page, only had one opportunity to deal with. But with your table of unsaved NewSubmissions it’s a little trickier. I’ll play around and see if I can figure it out. 

obviously table context won’t help, since NewSubmission is a new record, there won’t be any Lenders associated with it! so, ignore that. 

ya I had tried that thinking the same way u did… to no avail :frowning:

but ty for your efforts in trying to help me

Ok got it -
Add a new model for SingleLender, clone your Lenders model, but uncheck load on page load
your row action on New Submissions opens the popup like you have it
The popup has your table of Lenders. Your row action for each lender does the following:
Adopt Rows into Model - source: Lenders destination: SingleLender
Close Popup

In the popup, add an After-close action of Update field on row just like you did before, update the NewSubmission Lender__c field, but choose Single Specified Value, then put in {{$Model.SingleLender.data.0.Id}}

Should work. On your row action to open the Lenders table, you’ll also want to remove all rows from Single Lender model, so you’re clearing it out each time. 

And it works if you create a new lender and don’t save it, but works better if you save the new Lender first, so on your close action or row action you might add a save Lenders model somewhere

I’ve got a prototype page if any of that is confusing

Ty I will try it shortly, but if u could post your prototype, i’m sure it will make it much easier for me to visualize it.

Thx again!

Jack you are a genius!

Thank you very much , it worked like a charm!