|
|
|
|
#1 |
|
Участник
|
Plugin:Предотвращение удаления
Начал писать плагин, он должен срабатывать по событию - удаление записи. И в зависимости от значения поля записи должен предотвращать удаление. Не подскажете как можно реализовать?
|
|
|
|
|
#2 |
|
Чайный пьяница
|
Необходимо написать плагин который будет обрабатывать Delete cooбщение, из контекста получать идентификатор удаляемой записи, получать её (например из Image или при помощи вычитки), и если запись нельзя удалять - просто вызывать исключение. При регистрации шага необходимо указать режим Pre плагина.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
#3 |
|
Участник
|
Ну т.е. исключение нужно вызвать как throw new InvalidPluginExecutionException("Cannot delete");
А можно поподробней о том как получить идентефикатор и запись? |
|
|
|
|
#4 |
|
Чайный пьяница
|
В коллекции InputParameters контекста в Target приходит если не ошибаюсь экземпляр класса EntityMoniker - в нём идентификатор удаляемой записи и тип записи. Самым простым образом доступится до сущности - это создать Image для удаляемой записи.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 24.02.2010 в 16:00. |
|
|
|
| За это сообщение автора поблагодарили: Skyway (1). | |
|
|
#5 |
|
Участник
|
Ага, спасибо. Теперь возник еще вопрос - как при помощи JS получить имя пользователя, под которым залогонен юзер?
|
|
|
|
|
#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 |
|
|
|
|
#7 |
|
Участник
|
О спасибо, сразу все заработало
|
|
|
|
|
|