Hi all,
I have a requirement as:
I have 2 pickerfieldusers as A and B where A can select max 1 user and B can select max 5 user, requirement is when we select user in A then B cannot select that user which is already selected in A and should throw validation error as "A user cannot be selected in B".
I tried putting validation as :
validations: { if( contains( local!taskAdditionalAssignee, ri!record['recordType!{a6f5f29e-a89e-495a-afae-702df167aa19}RECT Record Tasks Sync.fields.{d0fec037-4f71-4d05-a7ef-766635d0ff13}taskAssignedTo'] ), "Assignee cannot be added as additional assignee", null ),
}
but when I open this form then as A and B both contains null value so same validation error throws comparing both A and b having null value which becomes similar
please help me how to achieve this
Discussion posts and replies are publicly visible
Try including null check of the two variables
if( and( a!isNotNullOrEmpty(local!taskAdditionalAssignee), a!isNotNullOrEmpty(local!usersOfPickerB), contains( local!taskAdditionalAssignee, ri!record['recordType!{a6f5f29e-a89e-495a-afae-702df167aa19}.fields.{d0fec037-4f71-4d05-a7ef-766635d0ff13}'] ) ), "Assignee cannot be added as additional assignee", null )
Thanks for your response but still not fulfilling my need as I have to store max 5 user but at backend level , field that should hold atleast 5 user is of text type.is it possible my field is of text type and i have to store 5 user ?
I would advise you to create a new record called additionalAssignees, which will have one to many relationship with the existing record
field is already added in existing recordtype type and databse as well as additionalassignee wihich is text type but it h
but it has to hold max 5 user when selecting from pickerfieldusers
Use the variable to store the list of user selected in comma separated values.
Use joinarray() while storing and use split() while bring it back inside Appian.
It will be stored like userA,userB,userC,userD,userE
After splitting it will list of 5 text
Can you please suggest how should I take new variable and store it as additional assignee as I have store in this way which is not correct
Use a local variable to store all the selected users as a list. When you write to record, use joinarray(localVariable,",")
When you load the value from record use
local!taskAdditionalAssignee: split(ri!record[recordField],",")
thankyou so much for your helpplease help me how can I put validations as it is not woking by this
validations: { if( and( a!isNotNullOrEmpty(local!taskAdditionalAssignee), a!isNotNullOrEmpty(local!taskAssignee), contains( touniformstring(local!taskAdditionalAssignee), (ri!record['recordType!{a6f5f29e-a89e-495a-afae-702df167aa19}RECT Record Tasks Sync.fields.{d0fec037-4f71-4d05-a7ef-766635d0ff13}taskAssignedTo']) )), "Assignee cannot be added as additional assignee", null ),
I have added touniformstring beacuse it was throwing error as-
local!taskAdditionalAssignee as user type and
(ri!record['recordType!{a6f5f29e-a89e-495a-afae-702df167aa19}RECT Record Tasks Sync.fields.{d0fec037-4f71-4d05-a7ef-766635d0ff13}taskAssignedTo']) as text
if you have any suggestion please let me know
error is something like this:
Interface Definition: Expression evaluation error at function 'contains' [line 275]: Invalid types, can only act on data of the same type (User, Text)
Try wrapping both variables that you are comparing with touniformstring()
not throwing any validation now-
validations: { if( and( a!isNotNullOrEmpty(local!taskAdditionalAssignee), a!isNotNullOrEmpty(local!taskAssignee), contains( touniformstring(local!taskAdditionalAssignee), touniformstring(ri!record['recordType!{a6f5f29e-a89e-495a-afae-702df167aa19}RECT Record Tasks Sync.fields.{d0fec037-4f71-4d05-a7ef-766635d0ff13}taskAssignedTo']) )), "Assignee cannot be added as additional assignee", null ),
is there any way we can convert text type to user type?
You can use touser()
still not throwing any validations-
validations: { if( and( a!isNotNullOrEmpty(local!taskAdditionalAssignee), a!isNotNullOrEmpty(local!taskAssignee), contains( local!taskAdditionalAssignee, touser(ri!record['recordType!{a6f5f29e-a89e-495a-afae-702df167aa19}RECT Record Tasks Sync.fields.{d0fec037-4f71-4d05-a7ef-766635d0ff13}taskAssignedTo']) )), "Assignee cannot be added as additional assignee", null ),
I tried wrapping up of both with touser