сначала вы можете обратиться к этой статье от docs.microsoft , подробно объясняющей функцию $ expand, однако для простоты следует имя отношения с целевым объектом, а затем поля, которые вы хотите выбрать в скобках
для отл.$expand={relation_name}($select=filed1,field2)
, что может быть что-то вроде этого
$expand=new_new_entity1_new_entity2($select=new_name,createdon)
Примечание: значения, которые вы получите из отношения расширения, будут фактически URL-адресом навигации к фактическим данным, так что вы не ожидаете, что [new_name, creationon] из new_entity2 будет извлечен, то вы получите URL-адрес для OData этих значений, и для этого вы, возможно, ниже помогаете функции 1 сделать это за вас
Также вы можете использовать XRM Rest Builder , это удивительное решение, когда вы устанавливаете на crm, вы найдете его кнопку в представлении решений.Это решение - инструмент, помогающий вам разработать запрос OData с красивым графическим интерфейсом, чтобы вам не нужно было писать и уточнять запрос OData, что быстрее и проще.
Функция помощи 1
`
function OdataExpand(expandUrl) {
var result = null;
var req = new XMLHttpRequest();
req.open("GET", expandUrl, false);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("Prefer", "odata.include-annotations=\"*\"");
req.onreadystatechange = function () {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var results = JSON.parse(this.response);
result = results;
} else {
console.log("OdataExpand Error : ");
console.log(this);
}
}
};
req.send();
return result;
}
`
, но если вы хотите получить все данные одним вызовоми, возможно, вы захотите расширить до более чем одной сущности, я рекомендую вам использовать Fetch XML, просто спроектируйте нужную выборку с помощью инструмента расширенного поиска, чтобы извлечь fetchXML, а затем передать его в справочную функцию 2, которая должна вернуть полные данные, но помните, что maxдлина выборки в этом подходе ограничена 2048 символами [Макс. длина для запроса GET].
Функция помощи 2
`
function ExecuteFetchXMLQuery(dataSet, fetchQuery) {
var encodedFetchXML = encodeURIComponent(fetchQuery);
var result;
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.0/" + dataSet + "?fetchXml=" + encodedFetchXML, false);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Prefer", "odata.include-annotations=\"OData.Community.Display.V1.FormattedValue\"");
req.onreadystatechange = function () {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200 || (this.status >= 200 && this.status <= 206)) {
console.log("Success Executing Fetch");
var results = JSON.parse(this.response);
result = results;
}
else {
console.log("Error Executing Fetch");
console.log(this);
console.log(this.statusText);
}
}
};
req.send();
return result;}
`