Есть хороший пример того, как функция Rollup
может быть вызвана через MS CRM WebApi здесь .
Но он охватывает общий доступ к CRM WebApi. Хотя в самых последних версиях новое пространство имен JS Xrm.WebApi
было введено . Что обеспечивает более простой способ доступа к этой конечной точке.
Метод Xrm.WebApi.execute
должен иметь возможность выполнить запрос Rollup
, так как он способен выполнить WhoAmI
. Но я изо всех сил пытаюсь найти правильные значения параметров, чтобы это произошло.
Вот мой код:
var RollupRequest = function(entityType, id, query) {
this.Target = { entityType: entityType, id: id };
this.RollupType = "Related";
this.Query = {
Query: query
};
};
RollupRequest.prototype.getMetadata = function() {
return {
boundParameter: null,
parameterTypes: {
Target: {
typeName: "Microsoft.Xrm.Sdk.EntityReference",
structuralProperty: 5
},
RollupType: {
typeName: "Microsoft.Dynamics.CRM.RollupType",
structuralProperty: 3
},
Query: {
typeName: "Microsoft.Xrm.Sdk.Query.FetchExpression",
structuralProperty: 5
}
},
operationType: 1, // This is a function. Use '0' for actions and '2' for CRUD
operationName: "Rollup"
};
};
var request = new RollupRequest(
"contact",
"0473FD41-C744-E911-A822-000D3A2AA2C5",
"<fetch><entity name='activitypointer'></entity></fetch>"
);
Xrm.WebApi.execute(request).then(
function(data) {
console.log("Success: ", data);
},
function(error) {
console.log("Failure: ", error);
}
);
Код генерирует следующий URL:
/api/data/v9.0/Rollup(Target=@Target,RollupType=@RollupType,Query=@Query)?@Target={"@odata.id":"contacts(0473FD41-C744-E911-A822-000D3A2AA2C5)"}&@RollupType=&@Query={"Query":"<fetch><entity name='activitypointer'></entity></fetch>"}
и ошибка: "Expression expected at position 0 in ''."
Что, по-видимому, указывает на то, что RollupType
был установлен неправильно, потому что действительно в URL отсутствует RollupType.
Я предполагаю, что существует более одной потенциальной ошибки, потому что я использую FetchXML
в качестве выражения запроса. Но в то же время можно ли указать, что следует изменить, чтобы создать правильный URL-адрес хотя бы для свойства RollupType
?