tag:blogger.com,1999:blog-81037890021593043242024-03-08T02:20:16.724-08:00Microsoft Dynamics CRMAnonymoushttp://www.blogger.com/profile/08845312671958043383noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-8103789002159304324.post-29830654442248208002012-08-29T00:59:00.001-07:002012-08-29T00:59:25.218-07:00Получение наименования подразделения возможной сделки<div dir="ltr" style="text-align: left;" trbidi="on">
Задача: Необходимо получить наименование подразделения возможной сделки.<br />
Решение: Реализовано через 2 SOAP-запроса. <br />
<br />
var oAttribute = crmForm.ObjectId;<br />if (oAttribute!= null)<br />{<br /><br />sEntityName = 'opportunity';<br />GUID = oAttribute;<br />sAttributeName = 'owningbusinessunit';<br /><br />var authenticationHeader = GenerateAuthenticationHeader();<br /><br />var xml = "";<br />xml = xml+"<?xml version='1.0' encoding='utf-8'?>"+ <br />"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'"+<br />" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"+<br />" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+ <br />authenticationHeader+ <br />"<soap:Body>"+ <br />"<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ <br />"<entityName>"+sEntityName+"</entityName>"+ <br />"<id>"+GUID+"</id>"+ <br />"<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>"+ <br />"<q1:Attributes>"+ <br />"<q1:Attribute>"+sAttributeName+"</q1:Attribute>"+ <br />"</q1:Attributes>"+ <br />"</columnSet>"+ <br />"</Retrieve>"+ <br />"</soap:Body>"+ <br />"</soap:Envelope>";<br /><br />// Prepare the xmlHttpObject and send the request.<br />var xHReq = new ActiveXObject("Msxml2.XMLHTTP");<br />xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);<br />xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");<br />xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");<br />xHReq.setRequestHeader("Content-Length", xml.length);<br />xHReq.send(xml);<br />// Capture the result.<br />var resultXml = xHReq.responseXML;<br /><br />// Check for errors.<br />var errorCount = resultXml.selectNodes('//error').length;<br /><br />if (errorCount == 0)<br />{<br />if (resultXml.selectSingleNode("//q1:" + sAttributeName) != null)<br />{<br />var owningbusinessunit = resultXml.selectSingleNode("//q1:" + sAttributeName).nodeTypedValue;<br /><br />sEntityName = 'businessunit';<br />GUID = owningbusinessunit;<br />sAttributeName = 'name';<br /><br />var xml = "";<br />xml = xml+"<?xml version='1.0' encoding='utf-8'?>"+ <br />"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'"+<br />" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"+<br />" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+ <br />authenticationHeader+ <br />"<soap:Body>"+ <br />"<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ <br />"<entityName>"+sEntityName+"</entityName>"+ <br />"<id>"+GUID+"</id>"+ <br />"<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>"+ <br />"<q1:Attributes>"+ <br />"<q1:Attribute>"+sAttributeName+"</q1:Attribute>"+ <br />"</q1:Attributes>"+ <br />"</columnSet>"+ <br />"</Retrieve>"+ <br />"</soap:Body>"+ <br />"</soap:Envelope>";<br /><br />// Prepare the xmlHttpObject and send the request.<br />var xHReq = new ActiveXObject("Msxml2.XMLHTTP");<br />xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);<br />xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");<br />xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");<br />xHReq.setRequestHeader("Content-Length", xml.length);<br />xHReq.send(xml);<br />// Capture the result.<br />var resultXml = xHReq.responseXML;<br /><br />// Check for errors.<br />var errorCount = resultXml.selectNodes('//error').length;<br /><br />if (errorCount == 0)<br />{<br />if (resultXml.selectSingleNode("//q1:" + sAttributeName) != null)<br />{<br />var owningbusinessunitname = resultXml.selectSingleNode("//q1:" + sAttributeName).nodeTypedValue;<br />alert(owningbusinessunitname);<br /><br />}<br />}<br />}<br />}<br />}</div>
Anonymoushttp://www.blogger.com/profile/08845312671958043383noreply@blogger.com0tag:blogger.com,1999:blog-8103789002159304324.post-30831264661277011252012-08-06T03:56:00.000-07:002012-08-06T04:31:57.479-07:00Пример SOAP-запроса<div dir="ltr" style="text-align: left;" trbidi="on">
Задача: Заполнить атрибут формы значением атрибута связанной сущности.<br />
<br />
Решение: написан код на JScript<br />
<br />
<blockquote class="tr_bq">
var oAttribute = crmForm.all.campaignid;<br />
if (oAttribute.DataValue != null && oAttribute.DataValue[0] != null)<br />
{<br />
<br />
sEntityName = 'campaign';<br />
GUID = oAttribute.DataValue[0].id;<br />
sAttributeName = 'new_sourceid';<br />
<br />
var authenticationHeader = GenerateAuthenticationHeader();<br />
<br />
// Prepare the SOAP message.<br />
var xml = "";<br />
xml = xml+"<?xml version='1.0' encoding='utf-8'?>"+ <br />
"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'"+<br />
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"+<br />
" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+ <br />
authenticationHeader+ <br />
"<soap:Body>"+ <br />
"<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ <br />
"<entityName>"+sEntityName+"</entityName>"+ <br />
"<id>"+GUID+"</id>"+ <br />
"<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>"+ <br />
"<q1:Attributes>"+ <br />
"<q1:Attribute>"+sAttributeName+"</q1:Attribute>"+ <br />
"</q1:Attributes>"+ <br />
"</columnSet>"+ <br />
"</Retrieve>"+ <br />
"</soap:Body>"+ <br />
"</soap:Envelope>";<br />
<br />
// Prepare the xmlHttpObject and send the request.<br />
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");<br />
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);<br />
xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");<br />
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");<br />
xHReq.setRequestHeader("Content-Length", xml.length);<br />
xHReq.send(xml);<br />
// Capture the result.<br />
var resultXml = xHReq.responseXML;<br />
<br />
// Check for errors.<br />
var errorCount = resultXml.selectNodes('//error').length;<br />
<br />
if (errorCount == 0)<br />
{<br />
if (resultXml.selectSingleNode("//q1:" + sAttributeName) != null)<br />
{<br />
var lookupData = new Array();<br />
var lookupItem = new Object();<br />
var id;<br />
lookupItem.id = resultXml.selectSingleNode("//q1:" + sAttributeName).nodeTypedValue;<br />
lookupItem.typename = 'new_source';<br />
var customername = resultXml.selectSingleNode("//q1:" + sAttributeName).getAttribute("name");<br />
<br />
lookupItem.name = customername;<br />
lookupData[0] = lookupItem;<br />
crmForm.all.new_sourceid.DataValue = lookupData;<br />
}<br />
}<br />
}</blockquote>
</div>Anonymoushttp://www.blogger.com/profile/08845312671958043383noreply@blogger.com0tag:blogger.com,1999:blog-8103789002159304324.post-53027680829244078422012-08-06T03:26:00.001-07:002012-08-06T03:40:12.381-07:00Скрытие кнопок стандартной командной панели формы<div dir="ltr" style="text-align: left;" trbidi="on">
Задача: Реализовать код на JScript, который позволяет скрыть кнопки стандартной командной панели формы.<br />
<br />
Решение: <a href="http://mscrm4ever.blogspot.com/2008/08/show-hide-crm-form-toolbar-buttons.html">http://mscrm4ever.blogspot.com/2008/08/show-hide-crm-form-toolbar-buttons.html</a></div>Anonymoushttp://www.blogger.com/profile/08845312671958043383noreply@blogger.com0tag:blogger.com,1999:blog-8103789002159304324.post-56561610993306418342012-08-03T00:08:00.001-07:002012-08-03T00:08:08.923-07:00Плагин для проверки возможности удаления сущности<div dir="ltr" style="text-align: left;" trbidi="on">
Задача: Необходимо реализовать плагин, который запрещает удаление сущности при выполнении некоторого условия на связанную сущность.<br />
<br />
Решение: Реализован плагин на событие Delete сущности new_grmember со снимком PreImage. <br />
<br />
<blockquote class="tr_bq">
using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br />using Microsoft.Crm.Sdk;<br />using Microsoft.Crm.SdkTypeProxy;<br />using Microsoft.Crm.Sdk.Query;<br /><br />namespace PreDeleteGrmember<br />{<br /> public class GrmemberDeleteHandler : IPlugin<br /> {<br /> #region Члены IPlugin<br /><br /> public void Execute(IPluginExecutionContext context)<br /> {<br /> if (context.MessageName != MessageName.Delete || !(context.PreEntityImages.Contains("PreImage")) || !(context.PreEntityImages["PreImage"] is DynamicEntity)) <br /> return;<br /><br /> DynamicEntity _grmember = (DynamicEntity)context.PreEntityImages["PreImage"];<br /><br /> if (!_grmember.Properties.Contains("new_contractid")) <br /> return;<br /><br /> Lookup customer = (Lookup)_grmember["new_contractid"];<br /><br /> if (customer.type != EntityName.opportunity.ToString()) <br /> return;<br /><br /> Guid opportunityid = customer.Value;<br /><br /> string[] fields = new string[] { "new_status" };<br /><br /> ICrmService crmservice = context.CreateCrmService(true);<br /><br /> RetrieveRequest request = new RetrieveRequest();<br /> request.ColumnSet = new ColumnSet(fields);<br /> request.ReturnDynamicEntities = true;<br /><br /> TargetRetrieveDynamic target = new TargetRetrieveDynamic();<br /> target.EntityId = opportunityid;<br /> target.EntityName = EntityName.opportunity.ToString();<br /><br /> request.Target = target;<br /><br /> DynamicEntity _opportunity = (DynamicEntity)((RetrieveResponse)crmservice.Execute(request)).BusinessEntity;<br /><br /> Picklist status = (Picklist)_opportunity["new_status"];<br /><br /> if (status.Value.ToString() == "2")<br /> throw new InvalidPluginExecutionException("Вы не можете удалить этот объект!");<br /><br /> }<br /><br /> #endregion<br /> }<br />}<br /></blockquote>
</div>Anonymoushttp://www.blogger.com/profile/08845312671958043383noreply@blogger.com0