Thursday, October 21, 2010

Simple frustrations and workarounds

While working on an older install of CRM and writing some reports, I had to use VS 2005 for SSRS and it was a frustrating experience. For example, when working on a report design and trying to select a textbox, it seems like you need to click up to 3 times to make it select (sometimes more) so that you can just get the properties. I think this is because the first click will select the Table control row, the second click may select the textbox, or it will select the background cell. The third click will probably select the textbox.

So I have learned some alternative strategies to use the SSRS GUI:
1. When selecting an object, it is easier to use a fence rather than click on it. the Fence does not need to surround the object, just touch it so you can make very small gestures (click-drag) to select single items.
2. Sometimes even 5 clicks will not select the object because VSS is confused. Press the Esc key and try again – that usually works for me.
3. Use the document outline (on the left pane) to select objects – this is a good reason to name them. It also makes it clear what the correct container is for each object – very important to know when your report preview is not laying out the way you expect.
4. Do all my work within a single row of the table before working on other rows or headings because clicking outside the current row will force me to click two more times to get to the objects within that row
5. Use the fence to select many objects at one time, the use one of the many toolbar object alignment features that are actually very good (well worth spending 30-60 minutes playing to figure out how they will do your work for you).

Wednesday, October 6, 2010

MS CRM field events with bulk update

This is a good news /bad news story. I have a form that is heavily modified and has 1k lines of JavaScript (JS) code behind it. The good news is that it has a bunch of functionality that really makes the system sing - the bad news is that when you put code behind each field's OnChange event using form customization, then those fields are no longer usuable for bulk edit. This functionality is by design because CRM cannot execute your JS code for each record during a bulk update. In my situation however, I don't care; I still wanted both the customization and bulk edit.

My solution is to override the OnChange events without using the form customization UI. When my form loads, I import & execute a stand-alone JS file (in the forms OnLoad event) that contains functions that define OnChange events for fields. for example:

crmForm.all.new_investor.OnChange = function(){
alert("got here");

This code will execute when I change the investor field, but will not prevent the bulk edit from working.