MS CRM / Разработка

Замена фильтра во вложенной сетке

Замена FetchXML во вложенной сетке (SubGrid) на форме для применения фильтра или отображения нужной информации.

PersonIncidents — это имя вложенной сетки, размещенной на форме, для которой нужно заменить FetchXML.

Задача — отобразить в сетке все обращения клиента, указанного в текущем обращении.

typeof (PZone) === 'undefined' && (PZone = {});
PZone.Incident = {
	setPersonIncidentsGridFilter: function ()
	{
		var grid = window.parent.document.getElementById("PersonIncidents");
		if (grid == null || grid.control == null)
		{
			setTimeout(function () { PZone.Incident.setPersonIncidentsGridFilter() }, 500);
			return;
		}
		var customers = Xrm.Page.getAttribute("customerid").getValue();
		if (customers == null || customers.length == 0) 
			return;
		var contactRef = customers[0];
		if (contactRef.entityType != 'contact') 
			return;
		var fetchXml = [
			"<fetch>",
			"<entity name='incident'>",
			"<attribute name='incidentid' />",
			"<attribute name='caseorigincode' />",
			"<attribute name='casetypecode' />",
			"<attribute name='npf_complaint_handling_statuscode' />",
			"<attribute name='npf_form_typecode' />",
			"<attribute name='npf_number' />",
			"<attribute name='subjectid' />",
			"<filter>",
			"<condition attribute='customerid' operator='eq' value='", contactRef.id, "' />",
			"</filter>",
			"</entity>",
			"</fetch>"
		].join('');
		grid.control.SetParameter("fetchXml", fetchXml);
		grid.control.refresh();
	}
}

About the author

Добавить комментарий