Microsoft’s upcoming products available for download

July 13, 2011

A bit away from the Microsoft Dynamics GP world, but at the same time so close, here are some very good news on the upcoming release of Microsoft SQL Server “Denali”, Office 2010 and SharePoint, and Internet Explorer.

Microsoft SQL Server Code Name 'Denali'

Download SQL Server Code Name “Denali” CTP3

SQL Server Code Name “Denali” Community Technology Preview
(CTP3) provides the foundation for the cloud-ready information
platform, and will help customers unlock insights across the
organization and quickly build solutions that extend data across
on-premises and public cloud.

Microsoft Office 2010

Office 2010 and SharePoint 2010 Service Pack 1 Now Available

Service Pack 1 is now available for the 2010 family of products, including Office, SharePoint, Project Server, FAST, Search Server, and Groove Server. For more on deployment, see these articles: Apply Office 2010 Service Pack 1 and Deploy Service Pack 1 for Project Server 2010. Also, download the Service Pack 1 for SharePoint Foundation 2010 and SharePoint Server 2010 White Paper.

Internet Explorer 10

Internet Explorer 10: Platform Preview 2

The latest preview build of Internet Explorer 10, Platform Preview 2,
is now available for download. With the second Platform Preview,
developers can start working with several site-ready HTML5
technologies.

Remember… should you decide to try any of this code, do so in a test environment.

Until next post!

MG.-
Mariano Gomez, MVP
IntellPartners, LLC
http://www.IntellPartners.com/

Advertisements

Chat About Microsoft Office and Windows with Microsoft MVP Experts

October 6, 2010

I have been asked to share with you an upcoming public chat involving some of our Microsoft Office and Windows MVPs. MVPs have volunteered to answer Windows and Office questions directly from the public in a live chat! Can you help spread the word about this public chat? Thanks in advance for your assistance and feel free to join us for the chat next week.

Chat About Microsoft Office and Windows with Microsoft MVP Experts
October 14, 2010
10:00 A.M. – 11:00 A.M. Pacific Time
Additional Time Zones

Would you like to learn more about the cool new features in Microsoft Office 2010 and Microsoft Windows 7 and what has changed since previous versions? Do you use Microsoft Office but would like to learn tips and tricks to be more productive at home, school or at work? Perhaps you are a new user who has questions on how to get started with Windows 7 or using the Office ribbon? Or would like to learn how to protect your computer from malware and viruses. Or perhaps you are just stuck and need answers.

My fellow Microsoft Office and Windows Most Valuable Professionals (MVPs) are here to help!

The MVPs are the same people you see in the technical community as authors, trainers, user groups leaders and answerers in the Microsoft forums. For the first time ever Microsoft have brought these experts together as a collective group to answer your questions live. MVPs will be on hand to take questions about Microsoft Office 2010 or Office 2007 products such as Word, Excel, PowerPoint, Outlook, Access, Project, OneNote and more. As well as the Windows 7 and earlier versions such as Windows Vista. In addition to Microsoft Office, the chat will cover Windows related topics such as upgrading, setup and installation, securing your PC, Internet Explorer, personalizing your computer desktop or having fun with Windows Live Essentials to share photos, make movies and more. All levels of experience are welcome from beginners and students to intermediate power users.

Please join us for this informative Q&A style chat and bring on your basic and your tough questions!

Join the Chat!
October 14, 2010
10:00 A.M. – 11:00 A.M. Pacific Time
Additional Time Zones

Add to Calendar

Social Networking

You can follow this on Twitter at #msmvpchat
Join the event on Facebook: Chat about Microsoft Office & Windows with MVP Experts!

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


Microsoft Dynamics GP 2010 Word Templates summary

October 1, 2010

Microsoft Dynamics GP 2010 Word Templates offer new presentation capabilities to the traditional customer/vendor facing Report Writer reports. This week was just a superficial scratch of the myriads of things that are possible to achieve. Like with everything else, I am sure there are limitations, but it will take some time to discover what those are. Nonetheless, I will continue exploring this topic and bring to you my findings

Articles Covered

How to add a “Terms and Conditions” page to a Microsoft Dynamics GP Word Template document
Debugging Microsoft Dynamics GP 2010 Word Templates
How to resize logo in Microsoft Dynamics GP Word Templates
The Open XML SDK 2.0 for Microsoft Office

Acknowledgements

I have to thank Microsoft’s Rob Wagner for his invaluable support and guidance throughout the week. Rob also provided the cool code and pointed to the online resources available on the Open XML subject.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


The Open XML SDK 2.0 for Microsoft Office

October 1, 2010

Along with the introduction of Microsoft Dynamics GP 2010 Word Templates came a little known software development kit: Open XML SDK 2.0.

Open XML is an open ECMA 376 standard and is also approved as the ISO/IEC 29500 standard that defines a set of XML schemas for representing spreadsheets, charts, presentations, and word processing documents. Microsoft Office 2007 and Microsoft Office 2010 all use Open XML as the default file format for rendering spreadsheets, documents, and presentations.

The Open XML file formats are useful for developers because they use an open standard and are based on well-known technologies: ZIP and XML.

The Open XML SDK 2.0 for Microsoft Office is built on top of the System.IO.Packaging API and provides strongly typed part classes to manipulate Open XML documents. The SDK also uses the .NET Framework Language-Integrated Query (LINQ) technology to provide strongly typed object access to the XML content inside the parts of Open XML documents.

In the case of Microsoft Dynamics GP 2010, the assembly enables developers to easily read-from and write-to Microsoft Word documents using their favorite language in Microsoft Visual Studio. The following image depicts the assembly in the Global Assembly Cache (GAC).

You can find more examples and a cool tool available at the Open XML SDK 2.0 download site. Using this tool, Rob Wagner was able to compare the original template shipped with GP and the modified version I created, when troubleshooting some issues I was having when adding a new section to the original template – see Debugging Microsoft Dynamics GP 2010 Word Templates.
Using the Open XML to work with Word documents

The following C# console application demonstrates how to use OpenXML to add a new table to the end of a document (similar to the text added in the “terms and conditions” article).

//---------------------------------------------------------------------
//  This file is a Microsoft Dynamics GP Business Intelligence Code Sample.
//
//  Copyright (C) Microsoft Corporation.  All rights reserved.
//
//This source code is intended only as a supplement to Microsoft
//Development Tools and/or on-line documentation.  See these other
//materials for detailed information regarding Microsoft code samples.
//
//THIS CODE AND INFORMATION ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY
//KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
//IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
//PARTICULAR PURPOSE.
//---------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using wp = DocumentFormat.OpenXml.Wordprocessing;

namespace NewTableAdHocText
{
    class Program
    {
        public bool AddTableAdHocText(string WordDocPath, string TextPath)
        {
            try
            {
                //read the ad-hoc text and store it for later
                StreamReader srStreamReader = new StreamReader(TextPath);
                String sString = srStreamReader.ReadToEnd();

                //open the word document and it's main document part
                using (WordprocessingDocument wdWordDoc = WordprocessingDocument.Open(WordDocPath, true))
                {
                    MainDocumentPart mdpWordDocMainPart = wdWordDoc.MainDocumentPart;
                    //create then add a new paragraph
                    wp.Paragraph wppParagraph = new wp.Paragraph(new wp.ParagraphProperties(new wp.ParagraphStyleId() { Val = "NoSpacing" }));
                    mdpWordDocMainPart.Document.Body.Append(wppParagraph);
                    //create new markup for the table
                    Table wppTable = new Table(
                        new TableProperties(
                            new TableStyle() { Val = "TableGrid" },
                            new TableWidth() { Width = "0", Type = TableWidthUnitValues.Auto },
                        new wp.TableBorders(
                            new TopBorder() { Val = BorderValues.None },
                            new LeftBorder() { Val = BorderValues.None },
                            new BottomBorder() { Val = BorderValues.None },
                            new RightBorder() { Val = BorderValues.None, },
                            new InsideHorizontalBorder() { Val = wp.BorderValues.None },
                            new InsideVerticalBorder() { Val = wp.BorderValues.None }),
                        new TableLook() { Val = "04A0", FirstRow = true, LastRow = false, FirstColumn = true, LastColumn = false, NoHorizontalBand = false, NoVerticalBand = true }),
                        new TableGrid(
                            new GridColumn() { Width = "11016" }),
                        new TableRow(
                            new TableCell(
                                new TableCellProperties(
                                    new TableCellWidth() { Width = "11016", Type = wp.TableWidthUnitValues.Dxa }),
                                    new Paragraph(
                                        new ParagraphProperties(
                                            new ParagraphStyleId() { Val = "NoSpacing" },
                                            new KeepLines(),
                                            new PageBreakBefore(),
                                            new ParagraphMarkRunProperties(
                                                new RunFonts() { Ascii = "Trebuchet MS", HighAnsi = "Trebuchet MS" },
                                                new FontSize() { Val = "17" },
                                                new FontSizeComplexScript() { Val = "17" }),
                                            new LastRenderedPageBreak(),
                                            new Run(
                                                new RunProperties(
                                                    new RunFonts() { Ascii = "Trebuchet MS", HighAnsi = "Trebuchet MS" },
                                                    new FontSize() { Val = "17" },
                                                    new FontSizeComplexScript() { Val = "17" },
                                                new Text(sString)))))))); //text for the run comes from the adhoc text document
                    //add then save the table to the document
                    mdpWordDocMainPart.Document.Body.Append(wppTable);
                    mdpWordDocMainPart.Document.Save();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.InnerException);
                return false; //failure
            }
            return true;
        }

        static void Main(string[] args)
        {
            new Program().AddTableAdHocText(args[0], args[1]);
        }
    }
}

The above example shows how simple it is to:

1) Crack open a word document.
2) Append a table to the end with specific properties.
3) Insert some ad-hoc text into the table.

The major advantage is the strongly typed interface to office document. You don’t need COM interoperability to manipulate any document.

You can download the sample project at the bottom of this article.

Downloads

NewTableAdhocText.zip – C# command line application to demonstrate adding a table at the end of a Word Document.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


How to resize logo in Microsoft Dynamics GP Word Templates

September 30, 2010
Getting used to the new Word Templates functionality can be a bit challenging at times. One of those challenges came in the form or a simple question: “How to resize the logo on the template?”. One thing to keep in mind is that most objects on a Microsoft Dynamics GP Word Template document live inside of content controls. With that said, here are the steps to achieve this, taking the SOP Blank Invoice Form Template* as an example:

1. Under Report Template Maintenance, select the SOP Blank Invoice Form template from the More Reports list.
2. Click the New button to create a new template. For this example, we will create the template based on the existing template and we will call it SOP Blank Invoice Form Icon. Click Ok to continue.
3. Highlight the newly created template, then click the Modify button to open Microsoft Word.

4. Click on the Picture content control to add a logo image.

Note: This image must also exist in the Image library under Template Configuration.

5. Select the logo, right-click, and chose Remove Content Control.

6. Highlight the image and resize accordingly. The following is a sample of the resized image with some extra text to go along:

NOTE: The logo is part of the Header section of the document.

7. Save the modified template to a different directory where it can be imported from later on, for example, My Documents. Close Microsoft Word.

8. Back to Report Template Maintenance, click the Add Template button and select the newly modified template from the My Documents folder. Replace the existing one when prompted.

9. Click the Assign button, then mark the company you want to assign the template to. Then, click on Set as Default to make the new template the default template for the company. Click Save to continue. Click Save to continue.

10. Back to the Report Template Maintenance window, highlight the original template and click the Assign button and choose Company. Unmark the company and choose Save.

NOTE: This will ensure that the copied version of the original template prints always.

11. To test, select a SOP invoice and print.

Hope you found these steps simple to follow and that you are enjoying the new Word Templates feature in Microsoft Dynamics GP 2010.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


Debugging Microsoft Dynamics GP 2010 Word Templates

September 28, 2010

In my previous article I outlined a few steps to add a page of terms and conditions to an invoice form. However, these changes did not come without their challenges. When I initially started out working on this customized template, my “natural instinct” was to add a new section to the Word template and unlink the header and footer from the previous section, then add the text. To complicate matters a bit more, I had added this new template as a modified version of a modified report – SOP Blank Invoice Form Template (Modified). Typically this is what would be encountered in a GP environment anyways as most standard GP invoice forms were customized even before the Word Templates functionality even existed in GP.

Somehow, these changes managed to crash and display a message in the Template Processing Exceptions(TPE) window and I ended up with this error:

One or more templates could not be processed. View the exception log for more details.
Well, that was a good start… but, where was the exception log?
Of course, being the well connected individual that I am – Ehem! – I sent this one off to my good friend Rob Wagner over at Microsoft Business Division, who is also known as “The Word Templates God” in some circles. Rob pointed me to a new DEX.INI setting available for Word Templates:

TPELogging=TRUE

In Rob’s own words, “FYI, dex.ini TPELogging=TRUE is used to gather where an exception has occurred. It points the combine process where I will go in and debug the TPE.”.

The log is created in the %temp% directory where the actual Word document is rendered and its content looks something like this:

10 hours. 57 minutes.13 seconds. 901 milliseconds. :20050: Combine.Unhandled

TPE was indicating that there was an issue with an exception not being handled when the XML data from Report Writer was being combined with the actual Word template.

This allowed Rob and his team to start tracking down the issue with my template from the source code and provide me with an alternate route to solve my problem.

As a final note, it seems there is an issue as well with TPE not clearing some process after choosing to remove the exception from the Report Processing Status window. In turn, this prevents shutting down GP via the Exit option, having to use the Windows Task Manager to force the termination of the DYNAMICS.EXE process. Rob’s team is on this too.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/


How to add a "Terms and Conditions" page to a Microsoft Dynamics GP Word Template document

September 27, 2010

It’s officially Microsoft Office Word Templates week here at The Dynamics GP Blogster!

With the integration of Microsoft Word Templates into Microsoft Dynamics GP 2010, the possibilities of delivering professional looking business facing documents increased 1000-fold. Now, Microsoft Dynamics GP users want to take full advantage of Word’s editing and document formating capabilities to introduce extra information in their business facing documents that was simply quite complex or impossible to achieve with Report Writer.

A common request among users is to add a Terms and Conditions page to a SOP invoice form. For this example, we will use the SOP Blank Invoice Form report. You can follow these steps to achieve just that:

1. If you haven’t done so, enable the SOP Blank Invoice Form Template* report under the Template Configuration Manager window. Click Save to continue.

2.  Open the Report Template Maintenance window and choose the SOP Blank Invoice Form from the More Reports option.
[NOTE: If you are working with a modified version of the SOP Blank Invoice Form created in Report Writer and exposed to Word Templates, then choose Modified from the Status drop-down list.
3.  Click the New button  on the Report Template Maintenance window to create a new template based on the existing one. For this example, we will call this template SOP Blank Invoice Form with Conditions. Click the Create button when finished.
You should now see the new template version in the Available Templates pane in the Report Template Maintenance window.
4. Click on the Modify button to open the SOP Blank Invoice Form Template with Conditions template in Microsoft Word. Position the cursor beneat the Total field and insert a 1 row by 1 column table.
Add the Terms and Conditions text inside the table as shown below.
5. Highlight the newly added table and its text, then click on the Paragraph expansion button under the Home ribbon to open the options window. Click on the Line and Page Breaks tab and mark the Keep Lines Together and Page Breaks Before check marks. Click Ok to continue.
Note that the table has now moved to a second page.
6. Save the modified Word template in your My Documents folder to avoid loosing your changes when you close Word then reimport the template in the Report Template Maintenance window. Assign the template to the company and make it the Default template.
NOTE: You can also choose to assign the template to specific customers if needed, however, for demo purposes, we are choosing to default the template.
7. Print a SOP invoice choosing the Blank form to ensure the template prints as expected.

NOTE: At the end of this article I realized I had modified the SOP Blank History Invoice Form Template. Print a historical invoice instead as the results should be the same.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/