Hi everyone,
I’m working on my first Appian build and ran into an issue I haven’t been able to resolve. My save logic seems to save correctly to ri!record, but I’m getting an error related to the record type relationships.
ri!record
Could not display interface. Please check definition and inputs. Interface Definition: Expression evaluation error: xxxx must be indexed by its corresponding record type fields or relationships
I suspect the issue is tied to how my record type relationships are configured, but I haven’t been able to figure it out.
Has anyone encountered similar issues with saving data to a record type and relationship errors? I’d really appreciate any guidance on reviewing or troubleshooting the save logic and relationships.
Thanks in advance!
Discussion posts and replies are publicly visible
You first try this common fix with this type of generic issue, Change ri!record.fieldName or ri!record[fieldName] to ri!record[recordType!YourRecord.fields.fieldName] -> you must use record type field references.
Still could you share code snippet for better understanding if above basic change will not work.
This is the documentation, explaining how to reference records.
https://docs.appian.com/suite/help/25.3/reference-records.html
Could I do this when saving a grid?:
Hi David,
I've seen this before with folks coming up to speed on records, even if they're veteran Appian developers. The 'base' record you start your referencing from might change depending on context. For a a!save(ri!record{...}, <value>) , your 'base' record will always be the record type of the rule input rather than the record type of the relationship.
a!save(ri!record{...}, <value>)
For example, say I have a rule input of recordType!Transaction, with a related record 'account', and I want to update 'amount' in the account record, then I would do a!save(ri!record[recordType!Transaction.account.amount], <value>).
a!save(ri!record[recordType!Transaction.account.amount], <value>)
Where this can get really confusing for folks new to records - say I wanted to create a "new" record in the related record, using the structure above I would do something like:a!save(ri!record[recordType!Transaction.account], recordType!Account(<keys/values)).
a!save(ri!record[recordType!Transaction.account], recordType!Account(<keys/values))
If you give more context, we can help with the specifics. Cheers.
Probably yes, but you might have to use the record type constructor
recordType!YourRecordType(
field: value
...
)
You’re updating with raw field names instead of the record type field references.
Use recordType!UC2335TinaSweep_uc2335DisclosureLog.fields.<fieldName> in a!update().
This was my latest attempt:
The record type behind uc2335DisclosureLog is what you'll want (edit - also added the correct way to use a!update()):
a!update()
a!save( ri!record[UC2335 TIN Sweep.uc2335DisclosureLog], a!update( a!defaultValue(ri!record[UC2335 TIN Sweep.uc2335DisclosureLog], recordType!UC2335 Disclosure Log()), { UC2335 Disclosure Log.disclosureText, UC2335 Disclosure Log.priceImpactIndicator, }, { local!draftDisclosures.disclosureText, local!draftDisclosures.priceImpactIndicator } ) )
I'm giving this a try now. Thank you so much for your help—I realize I've been at this for far too long and probably made it more complicated than it needed to be.
Yikes, it's been a log day :) I just cant seem to get past this: