I thought I had written about this trick before but it appears not!
A customer needed a technique to allow a chart to be displayed at the top of the company screen. This is a bit like the PipeLineGraphic of the OpportunityList or CaseList system screens.
The way this has been added is really very simple.
First I added a dummy field into the screen. The Dummy field is an old trick and it provides a way of injecting new HTML into the screen.
To add the dummy field, I went to
Administration -> Customization -> Company
Within the fields tab, I clicked 'new' and added a new field. I called mine comp_dummy and save it as a text field with a length of 1. I then set the field to be readOnly using Field Level Security.
After I had created the field, I edited the companyboxlong screen.
I added the comp_dummy field into the screen and then updated the Dummy field's create script:
Caption = " "; if(Values("Act")==200||Values("Act")==520||Values("_actionid")==201) { var intRecordId = CRM.GetContextInfo("company","comp_companyid"); var strSQL = "select count(oppo_opportunityid) as 'mycount', 'Opportunities' as 'mytype' from opportunity where oppo_primarycompanyid = "+intRecordId +"union select count(case_caseid) as 'mycount', 'Cases' as 'mytype' from cases where case_primarycompanyid = "+intRecordId+" union select count(cmli_commlinkid) as 'mycount', 'Communications' as 'mytype' from comm_link where cmli_comm_companyid = "+intRecordId; var myBlock=CRM.GetBlock("chart"); with(myBlock) { Stylename("Bar"); xlprop="mytype"; yprop="mycount"; SQLText= strSQL; ImageWidth=950; } CRM.AddContent(myBlock.Execute()); }
Note: I have used CRM.AddContent() which allowed me to add HTML to page body. It was added immediately before the tag so is not a suitable technique for adding additional fields. But it is very useful for injecting HTML and Jscript into browser.