AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.02.2010, 11:31   #1  
Skyway is offline
Skyway
Участник
 
78 / 10 (1) +
Регистрация: 07.08.2009
Plugin:Предотвращение удаления
Начал писать плагин, он должен срабатывать по событию - удаление записи. И в зависимости от значения поля записи должен предотвращать удаление. Не подскажете как можно реализовать?
Старый 16.02.2010, 11:56   #2  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Skyway Посмотреть сообщение
Начал писать плагин, он должен срабатывать по событию - удаление записи. И в зависимости от значения поля записи должен предотвращать удаление. Не подскажете как можно реализовать?
Необходимо написать плагин который будет обрабатывать Delete cooбщение, из контекста получать идентификатор удаляемой записи, получать её (например из Image или при помощи вычитки), и если запись нельзя удалять - просто вызывать исключение. При регистрации шага необходимо указать режим Pre плагина.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 24.02.2010, 15:12   #3  
Skyway is offline
Skyway
Участник
 
78 / 10 (1) +
Регистрация: 07.08.2009
Ну т.е. исключение нужно вызвать как throw new InvalidPluginExecutionException("Cannot delete");
А можно поподробней о том как получить идентефикатор и запись?
Старый 24.02.2010, 15:44   #4  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Skyway Посмотреть сообщение
Ну т.е. исключение нужно вызвать как throw new InvalidPluginExecutionException("Cannot delete");
А можно поподробней о том как получить идентефикатор и запись?
В коллекции InputParameters контекста в Target приходит если не ошибаюсь экземпляр класса EntityMoniker - в нём идентификатор удаляемой записи и тип записи. Самым простым образом доступится до сущности - это создать Image для удаляемой записи.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit

Последний раз редактировалось a33ik; 24.02.2010 в 16:00.
За это сообщение автора поблагодарили: Skyway (1).
Старый 01.03.2010, 12:05   #5  
Skyway is offline
Skyway
Участник
 
78 / 10 (1) +
Регистрация: 07.08.2009
Ага, спасибо. Теперь возник еще вопрос - как при помощи JS получить имя пользователя, под которым залогонен юзер?
Старый 01.03.2010, 12:41   #6  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Skyway Посмотреть сообщение
Ага, спасибо. Теперь возник еще вопрос - как при помощи JS получить имя пользователя, под которым залогонен юзер?
Попробуйте такой скрипт. У меня отработал идеально:

Код:
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  
Skyway is offline
Skyway
Участник
 
78 / 10 (1) +
Регистрация: 07.08.2009
О спасибо, сразу все заработало
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Регистрация PlugIn Elka Dynamics CRM: Разработка 66 19.05.2010 14:48
CRM DE LA CREME! Three Top Tips for CRM 4.0 Plugin Development Blog bot Dynamics CRM: Blogs 0 13.08.2009 15:05
haditeo: Is it possible to register different event handlers in only one assembly to be registered in Dynamics CRM Plugin ? Blog bot Dynamics CRM: Blogs 0 13.08.2009 15:05
Регестрация plugin на событие удаления Elka Dynamics CRM: Разработка 4 30.06.2009 14:34
Ronald Lemmen: Plugin registration tools for Visual Studio 2005 Blog bot Dynamics CRM: Blogs 0 17.04.2009 01:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:22.