Form register
Scripts also allow you to use the form register in your calculations.
Imagine a report form that has three fields: Year, Number and Document (which is used to attach the report file). The script below allows you to do a duplicate check. It accesses data from the form register and Pyrus lets you know if the report has been released before.
form.onChange(['Year', 'Report No.']) .validateAsync('Report No.', async state => { const [year, num] = state.changes; if (!year || !num || !year.text || !num.text) return null; const duplicates = await form.fetchSelfRegister(f => f .fieldEquals('Year', year) .fieldEquals('Report No.', num), [] ); if (!duplicates || !duplicates.tasks) return null; const firstDuplicate = duplicates.tasks[0]; if (firstDuplicate) return { errorMessage: `Report <a href="#id${firstDuplicate.task_id}">has already been released</a>` }; return null; });
If we now try to fill out the form with the data from an existing report, we’ll see an error message and a link to the existing report.