Friday, February 3, 2012

CRM 2011 JavaScript Model Generator

I am happy to announce the CRM 2011 JavaScript Model Generator! This tool will increase developer productivity as well as performance in regards to client-side scripting on CRM 2011 entity forms.

The JS Model Generator

will go and grab the Form XML for specified entities and create objects for each attribute, tab, section, and left navigation item
that currently exists on the published Main form. This allows you to use intellisense to
see which attributes, tabs, sections, left navigation items exist on the form and also
provides easier syntax than using Xrm.Page. It will generate all this
javascript inside an existing javascript file (on the developer's machine, not a CRM web resource).

Usage:

Form is the base object for referencing the tabs,
attributes, sections, and left nav items. Use Form.Attributes for
Attributes, Form.Tabs for Tabs, Form.Sections for Sections and Form.Navigation
for Left Nav Items.

The syntax below is the same for each type but one
difference is that Form.Attributes.<fieldname> will give you both
Attribute and Control objects whereas the other types will give you only their
respective type (Xrm Tab, Section, Nav item object).

Form.Attributes. – This will give you intellisense and show
you all the attributes that exist on the form currently

Form.Attributes.<fieldname> - This will give you BOTH
the Xrm.Page.getAttribute(‘fieldname’) AND Xrm.Page.getControl(‘fieldname’)
objects combined into one object (notice you can use both setValue and
setVisible below)

Form.Attributes.<fieldname>.exists() - This will return a boolean telling whether the field exists on the form or not (in case the generated model is out of date)

Form.Attributes.Ids. – This will list the same thing as
.Attributes but gives you a reference to the string value of the Id instead of
the attribute/control object

How to generate it:

NOTE – Make sure your javascript file changes are saved before generating the model as your unsaved changes will get overwritten.

Edit the provided sample.jsconfig file.

Update CrmServer to use the correct server and org.

Set the JsDirectory to be the folder where your script files are located.

Add an Entity node for the entity form that you
will be working on

EntityName
is required and needs to be the schema name

FileName
is optional and it will try to use the EntityName + “.js” to find the
javascript file in the JsDirectory. Use this if the file name is
different than the EntityName

Run the JSModelGenerator.exe

<JsConfig CrmServer="http://server/org"

JsDirectory="C:\Source\Project\Scripts">

<Entities>

<Entity EntityName="contact"
FileName="contact.js" />

</Entities>

</JsConfig>

Now in your javascript file there should be some generated
code at the bottom and you can begin using the new model objects!

An added benefit of using Form.Attributes.<fieldname> is that the first time you call a method on the object, it will cache the respective XRM object behind the scenes to optimize performance.