В общем, это действительно так By Design
Все время возвращать true из takeNewVoucher() я бы не стал.
Лучше сделать так:
1. Во время create() в LedgerJournalTrans_ds сделать forceWrite(true), чтобы пустые записи не плодились, а записывались все время.
2. В validateWrite() сделать проверку, чтобы пользователь не мог создавать строки журнала с пустым AccountNum.
3. Для красоты можно еще выставить свойство Mandatory для AccountNum в форме LedgerJournalTransCustPaym.