Appian Community
Site
Search
Sign In/Register
Site
Search
User
DISCUSS
LEARN
SUCCESS
SUPPORT
Documentation
AppMarket
More
Cancel
I'm looking for ...
State
Not Answered
Replies
7 replies
Subscribers
7 subscribers
Views
2677 views
Users
0 members are here
Share
More
Cancel
Related Discussions
Home
»
Discussions
»
User Interface
Invalid Function 'document'
fredericom
over 8 years ago
Hi all, our team want to create a validation on the fly to verify the size of a document that is uploaded. However, it's giving this error:
Error evaluating function 'document' : Expression evaluation error : Invalid function document.
Is there any way i can solve this?
Our idea is to create some validations (about the document) before the form is submitted. But, since the document ID doesn't exists before the form is submitted, we cant apply the document fucntion to retrieve some document properties.
Here is the sample code:
=a!formLayout(
label: "Lorem Ipsum",
instructions: "Lorem Ipsum",
firstColumnContents: {
a!fileUploadField(
label: "Upload resume",
instructions: "Any format is acceptable.",
target: ri!targetFolder,
value: ri!file,
saveInto:ri!file,
required: true,
validations:
if(isnull(ri!file), null, if(document(todocument(ri!file), "size") > 1000, "BIG", "SMALL"))
)
},
secondColumnContents: {},
buttons: a...
OriginalPostID-264348
Discussion posts and replies are publicly visible
Parents
0
Mike Schmitt
Certified Lead Developer
over 8 years ago
@fredericom, backing up a little bit, you should be aware that you can't use document() to access properties for a just-uploaded file on a SAIL form because the uploaded document lives in a special temporary system folder which is not user-accessible except through a!fileUploadField. The "standard recommendation" from Appian is to verify file properties after submitting a form and seamlessly looping back onto the form again, as Reggie says above, because after form submit you have access to the actual document ID / properties.
Users have discovered a workaround similar to what Venkatesh suggests above - i.e. you pass the local variable containing the newly uploaded file back through a!fileUploadField to get certain Dot Properties that can tell you some information about it, namely filename and size.
However it is important to note that the uploaded document size readout this gives is *rendered as plaintext and abbreviated* - i.e. "5 kb", "2.3 mb", so a simple numeric operator will not work by itself. If one has critical need of doing size comparison on-form, you'd need to write a custom expression rule that takes different size text values and parses them to a standardized value (i.e. multiply out to get bytes for the various different suffixes), and live with dealing in approximate values at the end of the day.
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel
Reply
0
Mike Schmitt
Certified Lead Developer
over 8 years ago
@fredericom, backing up a little bit, you should be aware that you can't use document() to access properties for a just-uploaded file on a SAIL form because the uploaded document lives in a special temporary system folder which is not user-accessible except through a!fileUploadField. The "standard recommendation" from Appian is to verify file properties after submitting a form and seamlessly looping back onto the form again, as Reggie says above, because after form submit you have access to the actual document ID / properties.
Users have discovered a workaround similar to what Venkatesh suggests above - i.e. you pass the local variable containing the newly uploaded file back through a!fileUploadField to get certain Dot Properties that can tell you some information about it, namely filename and size.
However it is important to note that the uploaded document size readout this gives is *rendered as plaintext and abbreviated* - i.e. "5 kb", "2.3 mb", so a simple numeric operator will not work by itself. If one has critical need of doing size comparison on-form, you'd need to write a custom expression rule that takes different size text values and parses them to a standardized value (i.e. multiply out to get bytes for the various different suffixes), and live with dealing in approximate values at the end of the day.
Cancel
Vote Up
0
Vote Down
Sign in to reply
Verify Answer
Cancel
Children
No Data