Debugging Microsoft Dynamics GP Word Templates Revisited
Couple days aback, I went through an issue were Microsoft Word templates were being rendered to an html file, causing Internet Explorer to launch instead - see Word Templates rendering report in Internet Explorer. In troubleshooting this problem, I engaged my good friend Rob Wagner over at Microsoft, who showed me a few more tricks for troubleshooting issues around Word Templates and template rendering.
Also, some time ago I covered a troubleshooting tip in my article Debugging Microsoft Dynamics GP 2010 Word Templates. Back then I looked at the TPELogging Dex.ini key, which creates a log file in the temp folder (%temp%) where templates are rendered and loaded by Microsoft Word. TPELogging is used to establish where possible exceptions could have occur while rendering the actual template into a Word document.
While working with Rob, I learned about another Dex.ini key that can assist with the troubleshooting process:
This Dex.ini key allows Dexterity to persists the template in the temp folder once the Microsoft Word document has been created. Now, to see how this is useful, you need to keep in mind a few things about how Word Templates really works in Microsoft Dynamics GP.
When a template is created under the Report Template Maintenance window, the actual template XML representation is saved in the system database, DYNAMICS, in the syReportTemplates table (in a SQL Server binary data type column). This is all good, because in theory, once you create your template and saved it away from the temp folder into, say, My Documents, then reimport that template into Microsoft Dynamics GP, there will never be a chance of you loosing the changes you made even if you delete the physical template document (the DOCX).
With that said, when you print a template 3 things happen - well, to summarize anyways:
1. The Report Writer engine generates an XML data file if the report was setup to use a template.
2. The Word Template code takes over and reads the actual XML template representation in syReportTemplates, and recreates the physical Microsoft Word template document in your local temp folder.
3. Through Microsoft Word and Open XML automation, the physical template is applied to the XML data file to create the final Microsoft Word document, this is, your invoice, purchase order, or any other document you have decided to generate using a template.
When the final document is delivered, the code performs some cleanup by removing the template file (leaving you with the actual output document).
The KeepTemplateTempFiles key allows the Word Templates code to persist the generated template (in step 2 above). Should you run into any issues, you could potentially open the template file to compare against the document you originally worked on.
A couple words of caution...
If you choose to enable KeepTemplateTempFiles, be sure to disable it once you have completed all troubleshooting activities, since each time you print a document to a template, you will obtain a new template file for that print run. Overtime, you can have a very full temp folder should you not set the key value to FALSE. By default, Microsoft Dynamics GP has this key value turned off when it's not found in the Dex.ini file.
Until next post!
MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/
Also, some time ago I covered a troubleshooting tip in my article Debugging Microsoft Dynamics GP 2010 Word Templates. Back then I looked at the TPELogging Dex.ini key, which creates a log file in the temp folder (%temp%) where templates are rendered and loaded by Microsoft Word. TPELogging is used to establish where possible exceptions could have occur while rendering the actual template into a Word document.
While working with Rob, I learned about another Dex.ini key that can assist with the troubleshooting process:
KeepTemplateTempFiles=TRUE
This Dex.ini key allows Dexterity to persists the template in the temp folder once the Microsoft Word document has been created. Now, to see how this is useful, you need to keep in mind a few things about how Word Templates really works in Microsoft Dynamics GP.
When a template is created under the Report Template Maintenance window, the actual template XML representation is saved in the system database, DYNAMICS, in the syReportTemplates table (in a SQL Server binary data type column). This is all good, because in theory, once you create your template and saved it away from the temp folder into, say, My Documents, then reimport that template into Microsoft Dynamics GP, there will never be a chance of you loosing the changes you made even if you delete the physical template document (the DOCX).
With that said, when you print a template 3 things happen - well, to summarize anyways:
1. The Report Writer engine generates an XML data file if the report was setup to use a template.
2. The Word Template code takes over and reads the actual XML template representation in syReportTemplates, and recreates the physical Microsoft Word template document in your local temp folder.
3. Through Microsoft Word and Open XML automation, the physical template is applied to the XML data file to create the final Microsoft Word document, this is, your invoice, purchase order, or any other document you have decided to generate using a template.
When the final document is delivered, the code performs some cleanup by removing the template file (leaving you with the actual output document).
The KeepTemplateTempFiles key allows the Word Templates code to persist the generated template (in step 2 above). Should you run into any issues, you could potentially open the template file to compare against the document you originally worked on.
A couple words of caution...
If you choose to enable KeepTemplateTempFiles, be sure to disable it once you have completed all troubleshooting activities, since each time you print a document to a template, you will obtain a new template file for that print run. Overtime, you can have a very full temp folder should you not set the key value to FALSE. By default, Microsoft Dynamics GP has this key value turned off when it's not found in the Dex.ini file.
Until next post!
MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/
Comments
http://blogs.msdn.com/b/developingfordynamicsgp/archive/2011/04/06/word-template-debugging.aspx
David
http://blogs.msdn.com/DevelopingForDynamicsGP/