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 |
Участник
|
О спасибо, сразу все заработало
|
|
|
|