Как выполнить запрос `Rollup` с помощью метода` Xrm.WebApi.execute` в MS CRM с использованием JS - PullRequest
1 голос
/ 18 марта 2019

Есть хороший пример того, как функция 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...