Saturday, May 7, 2016

Using FetchXML in a CRM form without having to use string concatenation

I am a solution architect using Microsoft Dynamics CRM, and I must be the laziest programmer I know. I HATE to write FetchXML code embedded in Javascript. But I am getting over it. I started using FetchXML Builder add-on to XRM Toolbox and that was very helpful for working with CRM Online. But last week I needed to query the Product table in a custom form to pull back a list price of a product, and I was dreading the thought of having to add all the little quotes and doing string concatenation because I knew I would be tweeking it and repeatedly making changes in FetchXML builder, them moving the query code back to Javascript and making it a bunch of concatenated strings (wash, rinse, repeat).

If I were putting the FetchXML into a C# program, no problem because that language supports having multi-line strings. And I could use Format.string() to insert my parameters into the code so I don't have to concatenate that either.

Not so much in Javascript. So I did some research and found some articles on how it could be done. I can put the FetchXML between comments and then use a regular expression to make it into a legit string. As long as nobody turns on 'compression' on the web server, it should continue to work. The code looks like this:

The last function in this takes care of replacing the {0} in my FetchXML with the GUID I need in the query. Line 15 of my code gets the GUID from a lookup field, and Line 16 calls the Format function to replace the {0} parameter with the GUID.

No comments: