|  16.02.2010, 11:31 | #1 | 
| Участник | Plugin:Предотвращение удаления 
			
			Начал писать плагин, он должен срабатывать по событию - удаление записи. И в зависимости от значения поля записи должен предотвращать удаление. Не подскажете как можно реализовать?
		 | 
|  | 
|  16.02.2010, 11:56 | #2 | 
| Чайный пьяница | 
			
			Необходимо написать плагин который будет обрабатывать Delete cooбщение, из контекста получать идентификатор удаляемой записи, получать её (например из Image или при помощи вычитки), и если запись нельзя удалять - просто вызывать исключение. При регистрации шага необходимо указать режим Pre плагина.
		 
				__________________ Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit | 
|  | 
|  24.02.2010, 15:12 | #3 | 
| Участник | 
			
			Ну т.е. исключение нужно вызвать как  throw new InvalidPluginExecutionException("Cannot delete"); А можно поподробней о том как получить идентефикатор и запись? | 
|  | 
|  24.02.2010, 15:44 | #4 | 
| Чайный пьяница | 
			
			В коллекции InputParameters контекста в Target приходит если не ошибаюсь экземпляр класса EntityMoniker - в нём идентификатор удаляемой записи и тип записи. Самым простым образом доступится до сущности - это создать Image для удаляемой записи.
		 
				__________________ Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 24.02.2010 в 16:00. | 
|  | |
| За это сообщение автора поблагодарили: Skyway (1). | |
|  01.03.2010, 12:05 | #5 | 
| Участник | 
			
			Ага, спасибо. Теперь возник еще вопрос - как при помощи JS получить имя пользователя, под которым залогонен юзер?
		 | 
|  | 
|  01.03.2010, 12:41 | #6 | 
| Чайный пьяница | Цитата: Код: GetCurrentUserName = function()
{
	var xml = "<?xml version='1.0' encoding='utf-8'?>"+ 
	"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'"+
	" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"+
	" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+ 
	GenerateAuthenticationHeader()+ 
	"<soap:Body>"+ 
	"<RetrieveMultiple xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ 
	"<query xmlns:q1='http://schemas.microsoft.com/crm/2006/Query'"+
	" xsi:type='q1:QueryExpression'>"+ 
	"<q1:EntityName>systemuser</q1:EntityName>"+ 
	"<q1:ColumnSet xsi:type='q1:ColumnSet'>"+ 
	"<q1:Attributes>"+ 
	"<q1:Attribute>fullname</q1:Attribute>"+ 
	"</q1:Attributes>"+ 
	"</q1:ColumnSet>"+ 
	"<q1:Distinct>false</q1:Distinct>"+ 
	"<q1:Criteria>"+ 
	"<q1:FilterOperator>And</q1:FilterOperator>"+ 
	"<q1:Conditions>"+ 
	"<q1:Condition>"+ 
	"<q1:AttributeName>systemuserid</q1:AttributeName>"+ 
	"<q1:Operator>EqualUserId</q1:Operator>"+ 
	"</q1:Condition>"+ 
	"</q1:Conditions>"+ 
	"</q1:Criteria>"+ 
	"</query>"+ 
	"</RetrieveMultiple>"+ 
	"</soap:Body>"+ 
	"</soap:Envelope>";
	var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
	xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
	xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
	xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
	xHReq.setRequestHeader("Content-Length", xml.length);
	xHReq.send(xml);
	var results = xHReq.responseXML.getElementsByTagName('BusinessEntity');
	if (results.length == 0)
	{
		return "No user Was Found"
	}
	else
	{
		var username = results[0].selectSingleNode('./q1:fullname');
		if (username == null)
			return "User Was Found but name field is empty";
		else
			return username.nodeTypedValue;
	}
}
alert(GetCurrentUserName());
				__________________ Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit | 
|  | 
|  01.03.2010, 16:05 | #7 | 
| Участник | 
			
			О спасибо, сразу все заработало
		 | 
|  | 
|  | 
| 
 |