Кастомизация
12
Сен
0

Скрытие полей с печатной формы

Допустим, в Ваше организации различный уровень допуска к какой-либо информации. И чтобы обеспечить политику безопасности в MS CRM Вы срываете какие-либо поля или вкладки формы с помощью скрипта (например, в зависимости от роли пользователя в системе). К примеру, так:

crmForm.all.tab1Tab.style.display="none";
crmForm.all.tab2Tab.style.display="none";

Но этот способ не обеспечивает настоящей защиты, т.к. эти пользователи могут все еще видеть скрытые поля, если вызовите форму Предварительного просмотра для печати.



Чтобы исправить это нужно подредактировать исходный файл CRM (внимание! лютый ансапорт 🙂 )

Файл, который Вы должны изменить: <CRM сайт>\_forms\print\print.aspx

Добавьте в него следующий код перед тегом </HTML>:

<!--
Field level security on Print form
author: Jim Wang @ July 2009
http://jianwang.blogspot.com
-->
<script language="javascript">

var printFrame = document.getElementById("printMain");
var printWindow = document.frames["printMain"];

printFrame.onreadystatechange = function() {

	if(window.opener && printWindow.document.readyState == "complete") {

		// скрываем атрибуты
		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";
			}
		}
         
		// скрываем вкладки
		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>

Все что делает этот код – запрашивает с родительской формы (т.е. с формы из которой было открыто текущее окно) названия скрытых полей и вкладок и также скрывает их 🙂



П.С. на самом деле есть по крайней мере еще один способ обойти ограничение скрытых полей – с помощью javascript’а . Но не так много обычных пользователей хорошо разбираются в нем, поэтому это не так актуально 🙂

Комментарии (0)

*

code