在 CRM 4.0 打印预览页面隐藏字段

在论坛上看到网友“一千零一夜”提出的一个问题,在CRM窗体上被隐藏的字段却还出现在打印预览里,如果在打印的页面也可以隐藏掉这些字段就比较实际了,而且也符合用户期望。 


CRM 4.0
没有提供基于Field的安全机制,可能是因为会牵扯到性能的问题。不过我已经向微软提了建议,希望在下个版本里有所增强。但是在当前的版本里没有Supported的方法可以实现。我注意到这个打印预览窗体实际上是被窗体上的按钮触发的,所以window.opener 就是这个CRM窗体,这样就可以比较它上面的字段属性了,如果设定成 style.display="none"; 的形式,我们也可以在当前的打印预览窗体里隐藏对应的字段。同样也可以隐藏Tab,不过方法有些不同:因为打印预览里的Tab并没有id,所以根据className等来判断。
 

我提供这个方法可以解决CRM的打印需求,并没有真正实现了 field level security,比如在高级查找里还可以发现所有可搜索字段。 如果你的企业CRM应用有严格的安全考量,这个方法并不适合。

 

你需要修改的文件是  \CRMWeb\_forms\print\print.aspx 把下面的代码帖在 </html> 之上:

<!--
Field level security on Print form
author: Jim Wang @ July 
2009
http:
//jianwang.blogspot.com
http://mscrm.cn
-->

<script language="javascript">
var printFrame = document.getElementById("printMain");
var printWindow = document.frames["printMain"];
printFrame.onreadystatechange 
= function() 
{
    
if(window.opener && printWindow.document.readyState == "complete")
    {
        
//hide attributes
        var allFields = opener.document.getElementsByTagName("TD");
        
for (var i = 0; i < allFields.length; i++)
        {
            
var thisField = allFields[i];
            
if (thisField.style.display == "none")
            {
                printWindow.document.getElementById(thisField.id).style.display 
= "none";
            }
        }
        
        
//hide tabs
        var printTabs = printWindow.document.getElementsByTagName("DIV");
        
var openerTabs = opener.document.getElementsByTagName("LI");
        
for (var i = 0; i < openerTabs.length; i++)
        {
            
var openerTab = openerTabs[i];
            
if (openerTab.className && openerTab.className == "ms-crm-Tab")
            {
                
if(opener.document.getElementById(openerTab.id).style.display == "none")
                
var printTab = printTabs[openerTab.id.replace("tab","").replace("Tab","")];
                printTab.style.display 
= "none";
            }
        }

    }
}
</script>


下图可以看出来:我隐藏了LastName和2个Tab。

posted @ 2009-07-30 04:23  MicrosoftCRM  阅读(1273)  评论(7编辑  收藏  举报