Dictation is the most flexible way, as you don't have to define all possible values ahead of time, but you can use dynamic command sections to build a list of command phrases that the speech engine will try to match what you're saying against.
E.G.
Taking a load of [potatoes;milk;a rather large boat] to [denver;dallas;portland]
Set Text [JobName] to '{CMDSEGMENT:1}'
Set Text [JobDestination] to '{CMDSEGMENT:3}'
See page 118 and 119 of VoiceAttackHelp.pdf for more information on the "{CMDSEGMENT:}" token.
For numeric values especially, you need to decide which and how many options you want to cover, as the amount of generated commands will increase exponentially.
E.G.
Carrying [1..36] tonnes Will generate 36 command phrases, as you'd expect. However, if you add more options like Carrying [around;] [1..36] tonnes, it'll generate 72 command phrases.
The more command phrases that need to be generated, the longer your profile will take to load(both initially and when editing).
I'd recommend splitting up your settings across a few commands, as something like Taking a load of [potatoes;milk;a rather large boat] to [denver;dallas;portland] weighing [1..36] tonnes paying [1..100] dollars generates 32400 different phrases(with only a few of the possible loads/cities/weights/payouts filled in), whereas splitting each of those up only generates 142 instead.