Create an MS Word Document Template
Creating the Template File
- On your local system, create a Word document
- Add boilerplate text and placeholder images.
- Add place-holder images for any record images or charts you plan to add. Size them appropriately.
- Insert template variables, record-specific images, and/or charts, as explained below.
- Save it in .docx format.
Inserting Template Variables
To insert a template variable:
- Begin to Add a Print Template or [Edit] an existing template.
The Template Variable Tool appears. - Select the Category of fields to choose from.
(Fields in the current object or Related Objects, User fields, or Company fields) - Under Fields, scroll down the list to find fields in the current record or in a Lookup target record.
- Select the field to add.
The variable name appears. - Copy the variable name to the clipboard.
- In the template file, create a field:
- Press Ctrl+F9 (Insert > Quick Parts > Field)
- Right click on the field
- Select "Edit Field..."
The Field dialog opens. - Specify field type:
- Categories: Mail Merge
- Field names: MergeField
- Under Field Properties, specify:
- Field name: Paste the variable name you copied in Step #5.
- Click [OK]
Working with Template Variables
Convert Currency Variables to Numbers
When you want to do calculations on a currency field in Velocity, you need to create a number from the currency strings delivered by the platform. That string has the form $24.95. The following code converts it to a number that can be used in calculations:
#set($n = 0.00) #set($s = $YourObject.currency_field.substring(2) ) #set($n = $n.parseDouble($s)
where:
- $n = 0.00 creates an instance of the double-precision float class (Double)
- $YourObject.currency_field.substring(2) removes the first two characters from the currency string. (The $ sign and the space that follows it.)
- parseDouble($s) converts the resulting string into a double-precision float--a number that can be used in calculations.
Inserting an Image Stored in an Object Record
To insert an image:
- Select a placeholder image to replace.
- Right click on the image. Choose Size...
- Click the Alt Text tab
- In the Alternative Text area, type in a platform IMG tag
- IMG Tag
- IMG{$objectName.imageFieldName}
where:
- objectName - The name of the current object. (This variable is in Velocity format. The object name effectively creates a namespace, ensuring that there is no conflict with another variable that might have the same name.)
- imageFieldName - The name of the field in the current record that contains the image to display, joined to the object name by a "dot" (.).
- Result
- The URL for the image is inserted into the generated page. When viewed, the image is displayed.
- Example
- IMG{$Customer.logo_image}
Inserting a Chart
To insert a chart:
- Select a placeholder image to replace.
- Right click on the image. Choose Size...
- Click the Alt Text tab
- In the Alternative Text area, type in a platform CHART tag
Example #1 - A chart with no optional arguments:
- CHART{c5cc43653b1b49db8142bc844735c209}
Example #2 - A chart of Orders taken by the owner of the current record:
- CHART{c5cc43653b1b49db8142bc844735c209, chart-title=Orders by $Order.owner.full_name, owner_id=$Order.owner.id}
Accessing Related Records
When processing related records, you generally want to insert rows into a table. But in MS Word, there is no way to put the loop-controls around an individual, as you would in HTML, for example:
- #foreach($d in $developers)
- <tr>...row contents here...</tr>
- #end
But in MS Word, there is no place "outside the row" to put the loop controls.
The solution is to use two special constructs that go into the first cell of the row:
- @before-row#foreach($d in $developers)
- @after-row#end
- Considerations
-
- The constructs only need to be specified once in the row, in the first cell.
- Each construct is inserted as a field in the cell (Insert > Quick Parts > Field)
- Example:
- «@before-row#foreach($d in $developers)»
«$d.Name»
«@after-row#end»
Learn more: Solution: use @before-row @after-row