This could be done by a process with the following rules:
1 - Check number availability:
If NOT(EXISTS ChequeNumber WHERE (ChequeNumber.State='Unused')) Then REPORT ERROR 'There are no more unused cheque numbers available'
2 - Get next cheque number:
FIND ChequeNumber WHERE ChequeNumber.State='Unused' ORDER BY ChequeNumber.Number TAKE BEST 1
3 - Link check number to cheque issue:
ChequeIssue.CqNo = ChequeNumber
4 - Mark check number unavailable:
ChequeNumber.State = 'Issued'
The process should have ChequeIssue object as its input. You can then add the process as an operation on the form for ChequeIssue.
It would also be a good idea to have attribute ChequeNumber.CqIssue as a matching attribute to ChequeIssue.CqNo so the form for ChequeNumber shows the ChequeIssue to which it is issued.