Блог

Microsoft Dynamics CRM 2016/365 переключение стадии ленты между сущностями

Для переключения этапов (стадий) ленты с помощью JavaScript (JS) можно использовать метод:

Xrm.Page.data.process.moveNext(callbackFunction);

Но при необходимости переключить стадию ленты между сущностями данным методом мы получаем значение crossEntity, что говорит нам о невозможности использовать его для данного случая.

Однако есть возможность использовать SOAP запрос, который поможет нам преодолеть данное ограничение:

function navigateToNextStage(processId, nextActiveStageId, currentEntName, currentEntId, nextEntName, nextEntId, traverPath, openNext) {
	/// <summary>Переключает стадию ленты между сущностями
	/// <field name="processId">Идентификатор ленты</field>
	/// <field name="nextActiveStageId">Стадия на которую переключаем</field>
	/// <field name="currentEntName">Тип текущей записи</field>
	/// <field name="currentEntId">Идентификатор текущей записи</field>
	/// <field name="nextEntName">Тип следующей записи</field>
	/// <field name="nextEntId">Идентификатор следующе записи</field>
	/// <field name="traverPath">Путь - через запятую указать перую стадию ленты и стадию на которую переключаем</field>
	/// <field name="openNext">Открыть следующую запись</field>
	var serverUrl = Xrm.Page.context.getClientUrl();
	serverUrl += "/XRMServices/2011/Organization.svc/web";
	var requestXML = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
	requestXML += "<s:Body>";
	requestXML += "<Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
	requestXML += "<request xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\">";
	requestXML += "<a:Parameters xmlns:b=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
	requestXML += "<a:KeyValuePairOfstringanyType>";
	requestXML += "<b:key>ProcessId</b:key>"
	requestXML += "<b:value i:type=\"c:guid\" xmlns:c=\"http://schemas.microsoft.com/2003/10/Serialization/\">" + processId + "</b:value>";
	requestXML += "</a:KeyValuePairOfstringanyType>";
	requestXML += "<a:KeyValuePairOfstringanyType>";
	requestXML += "<b:key>NewActiveStageId</b:key>";
	requestXML += "<b:value i:type=\"c:guid\" xmlns:c=\"http://schemas.microsoft.com/2003/10/Serialization/\">" + nextActiveStageId + "</b:value>";
	requestXML += "</a:KeyValuePairOfstringanyType>";
	requestXML += "<a:KeyValuePairOfstringanyType>";
	requestXML += "<b:key>CurrentEntityLogicalName</b:key>";
	requestXML += "<b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">" + currentEntName + "</b:value>";
	requestXML += "</a:KeyValuePairOfstringanyType>";
	requestXML += "<a:KeyValuePairOfstringanyType>";
	requestXML += "<b:key>CurrentEntityId</b:key>";
	requestXML += "<b:value i:type=\"c:guid\" xmlns:c=\"http://schemas.microsoft.com/2003/10/Serialization/\">" + currentEntId + "</b:value>";
	requestXML += "</a:KeyValuePairOfstringanyType>";
	requestXML += "<a:KeyValuePairOfstringanyType>";
	requestXML += "<b:key>NextEntityLogicalName</b:key>";
	requestXML += "<b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">" + nextEntName + "</b:value>";
	requestXML += "</a:KeyValuePairOfstringanyType>";
	requestXML += "<a:KeyValuePairOfstringanyType>";
	requestXML += "<b:key>NextEntityId</b:key>";
	requestXML += "<b:value i:type=\"c:guid\" xmlns:c=\"http://schemas.microsoft.com/2003/10/Serialization/\">" + nextEntId + "</b:value>"
	requestXML += "</a:KeyValuePairOfstringanyType>";
	requestXML += "<a:KeyValuePairOfstringanyType>";
	requestXML += "<b:key>NewTraversedPath</b:key>";
	requestXML += "<b:value i:type=\"c:string\" xmlns:c=\"http://www.w3.org/2001/XMLSchema\">" + traverPath + "</b:value>";
	requestXML += "</a:KeyValuePairOfstringanyType>";
	requestXML += "</a:Parameters>";
	requestXML += "<a:RequestId i:nil=\"true\" />";
	requestXML += "<a:RequestName>NavigateToNextEntity</a:RequestName>";
	requestXML += "</request>";
	requestXML += "</Execute>";
	requestXML += "</s:Body>";
	requestXML += "</s:Envelope>";
	var req = new XMLHttpRequest();
	req.open("POST", serverUrl, false);
	req.setRequestHeader("Accept", "application/xml, text/xml, */*");
	req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
	req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
	req.send(requestXML);
	if (openNext)
		Xrm.Utility.openEntityForm(nextEntName, nextEntId);
}

Комментариев нет

Ваш комментарий